Base-64 문자열로 인코딩하고 나중에 Powershell을 사용하여 Base64 문자열의 .exe 파일로 디코딩하는 .NET exe 파일이 있습니다. ..EXE를 Base64로 인 코드/디코드
내가 지금까지 가지고있는 은 .exe 파일을 생성하지만,이 파일은 실행할 수있는 응용 프로그램으로 Windows에서 인식 할 수 없으며 항상 내가 전달하는 파일과 다른 길이입니다 인코딩 스크립트.
여기 내가 잘못된 인코딩을 사용하고있을 수도 있지만 확실하지 않습니다.
인코딩 스크립트 :
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)
디코드 스크립트 :
$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)
"hello"와 같은 것을 인코딩 할 수 있는지 확인하기 위해 바이트 스트림을 사용하는 인코딩 및 디코딩 기능을 사용하여 테스트 케이스를 작성하는 것이 좋습니다. 또한 Get-Content에서 Raw 스위치를 전달하려고합니다. IDE 또는 VSCode에서 테스트하면 변수를보고 디버그 할 수 있습니다. –