Разбор CSV и декодирование base64 - PullRequest
0 голосов
/ 05 ноября 2018

Предполагается, что целью этого сценария является поиск любых строк в кодировке base64 в определенной строке CSV, получение только base64, добавление к нему правильного количества символов заполнения, их декодирование и запись в выходной файл. .

function Get-FileName($initialDirectory) {
    [System.Reflection.Assembly]::LoadWithPartialName("System.Sindows.Forms") | Out-Null

    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $OpenFileDialog.InitialDirectory = $initialDirectory
    $OpenFileDialog.Filter = "CSV (*.csv)| *.csv"
    $OpenFileDialog.ShowDialog() | Out-Null
    $OpenFileDialog.Filename
}

$inputfile = Get-FileName "C:\My Documents\"
$inputdata = Import-Csv $inputfile
$output = "C:\My Documents\output.csv"

$regex = [regex]::New('(?<=-[Ee]ncoded[Cc]ommand\s"??)[\w\d=\/!]{0,792}')

$csv1 = $inputdata | select -ExpandProperty 'NameOfRow' | ? {$_ -ne ""} 
| Select-String -Pattern $regex -Allmatches | % {$_.Matches} 
| ? {$_.Value -ne ""} | % {$_.Value}  

foreach ($line in $csv1) {
    $csvL = $line.Length
    $csvM = $csvL %= 4
    if ($csvM | % {$_ -eq 1}) {
        $line | % {$_ + "==="}
    } elseif ($csvM | % {$_ -eq 2}) {
        $line | % {$_ + "=="}
    } elseif ($csvM | % {$_ -eq 3}) {
        $line | % {$_ + "="}
    }
    $decode = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($line))
    $decode > $output
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...