HomeBlogMagic

Powershell Binary to Base64 and back

Ich benutze zum Beispiel gerne Curl um Dateien zu transferieren. Um Dateien zu filtern, bearbeiten oder ähnliches läuft vorher oft noch ein PowerShell Script.
Um nicht jedes mal mehrere Dateien zu kopieren entpacken die PowerShell Scripte curl aus sich selbst heraus. Zur Vereinfachung dieses entpackens benutze ich die Base64 Konvertierung um die Binärdateien wiederzustellen.

Zur Vorbereitung muss curl und die notwendige dll vorher erst ein Base64 konvertiert werden:

$sCurlBase64 = [convert]::ToBase64String([IO.File]::ReadAllBytes("libcurl-x64.dll"))
Set-Content libcurl-x64.dll.txt $sCurlBase64

$sCurlBase64 = [convert]::ToBase64String([IO.File]::ReadAllBytes("curl.exe"))
Set-Content curl.exe.txt $sCurlBase64

Es entstehen zwei Text Dateien deren Inhalt dem Zielscript hinzugefügt werden können:

$sCurlExe = "TVqQAAMAAAAEAAAA......."
$sCurlLib = "TVqQAAMAAAAEAAAA......."
$CurrentDir = (Get-Item "./").FullName
if((Test-Path "$CurrentDir/curl.exe") -ne $true)
{
    [IO.File]::WriteAllBytes("$CurrentDir/curl.exe", [convert]::FromBase64String($sCurlExe))
}
if((Test-Path "$CurrentDir/libcurl-x64.dll") -ne $true)
{
    [IO.File]::WriteAllBytes("$CurrentDir/libcurl-x64.dll", [convert]::FromBase64String($sCurlLib))
}
.\curl.exe -V

Damit wird curl in das aktuell Verzeichnis erstellt und die Versionsinformationen abgerufen.

Das Script lässt sich natürlich für jede andere Datei auch anwenden.

Files

NameTypeComment
Permalink: https://adirmeier.de/Blog/ID_422
Tags: Blog, convert, powershellvon am 2022-08-02