Encodage / Décodage .EXE en Base64

J'ai un .NET fichier exe que j'aimerais coder en Base-64 string, et puis à un moment plus tard décoder en un .exe fichier à partir de la Base64 de la chaîne, à l'aide de Powershell.

Ce que j'ai jusqu'à présent produit une .exe fichier, cependant, le fichier n'est pas reconnaissable par windows comme une application qui peut fonctionner, et est toujours une longueur différente que le fichier que je suis de passage dans l'encodage du script.

Je pense que j'ai peut-être l'aide d'un mauvais encodage, mais je ne suis pas sûr.

Coder un script:

Function Get-FileName($initialDirectory)
{   
 [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "All files (*.*)| *.*"
$OpenFileDialog.ShowDialog() | Out-Null
$FileName = $OpenFileDialog.filename
$FileName

} #end function Get-FileName

$FileName = Get-FileName

$Data = get-content $FileName
$Bytes = [System.Text.Encoding]::Unicode.GetBytes($Data)
$EncodedData = [Convert]::ToBase64String($Bytes)

Décoder Script:

$Data = get-content $FileName
$Bytes = [System.Text.Encoding]::UTF8.GetBytes($Data)
$EncodedData = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($Bytes))

$EncodedData | Out-File ( $FileName )
Avez-vous envisagé d'écrire un scénario de test avec un de coder et de décoder fonction qui prend un flux d'octets pour vérifier si vous pouvez coder quelque chose comme "bonjour" d'avant en arrière? Aussi, peut-être sur Get-Content que vous souhaitez passer Brute de l'interrupteur. Les essais dans l'IDE ou VSCode vous permettra de voir les variables et de débogage.

OriginalL'auteur schizoid04 | 2017-03-04