[PowerShell] 解碼 Base64 字串,並建立對應的二進位檔案

[PowerShell] 解碼 Base64 字串,並建立對應的二進位檔案

今天想要用 PowerShell 寫一個程式,

讓它在執行的時候,可以寫出一個二進位的檔案 (binary file)~

基本的想法是先將檔案的內容轉成 Base64 字串,在執行時再將這字串反轉成原本的二進位檔~

 

1. 取得檔案的 Base64 編碼字串

要取得檔案的 Base64 編碼字串有很多種方法,

像是可以直接利用 Base64 – Online Base64 decoder and encoder 網站,

把要編碼的二進位檔案上傳,選擇 Encode -> Convert the source data,

就能取得編碼後的 Base64 字串:

Screen Shot 2016-10-06 at 12.40.22 PM  

 

也可以用 PowerShell 或 Python 來取得,像下面是 Python 的例子:

>>> import binascii
>>> print binascii.b2a_base64(open("edit.gif", "rb").read())
R0lGODlhDwAPAPMGAA4ODgCWANra2vLy8gC5AP/isf///wDcAP///////wAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFHgAIACwAAAAADwAPAAAIZQABCBxIUCCCgwAMKFzI0CCChAwjAhAA4KGBghgHSjxwAKKBAQIbciRAACLIhANHEggQQOBJhQBUsmz5MSSAAgdIzjRps0CBlSwJvrzpMyjDoUQLeFSIVGPEkwOiSp0qNaNVAAEBACH5BAQeAAAALAIABAALAAkAAAg7AA0IFAjgwAEAAwcWPECAAEIAEBc2DBAAoQGJBChWvFiAYUaKDwEUKPCxIkSOI0EmhDiygEWCEU8mDAgAIfkEBB4AAAAsAwAEAAsACQAACEEADQgUCODAAQAGBgw0UPAAAQIABgCY2PBhgAAIGRq0eBEhgAIOCVzEKPFjAZEdEzIswDKlyoksC2RMSJHiwgEBAQAh+QQEeAAAACwEAAQACgAJAAAIPQANCBQI4MABAAMGGih4gAABABAhGnQYIADBiQQqWgRQoGHGihELFPgYAOFCkQVAGkgIESUAgQMiRhw4ICAAOw==

 

2. 用 PowerShell 寫出 Base64 解碼後的二進位檔案

先用一個變數將剛剛的 Base64 字串存起來:

$Base64Content = "R0lGODlhDwAPAPMGAA4ODgCWANra2vLy8gC5AP/isf///wDcAP///////wAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFHgAIACwAAAAADwAPAAAIZQABCBxIUCCCgwAMKFzI0CCChAwjAhAA4KGBghgHSjxwAKKBAQIbciRAACLIhANHEggQQOBJhQBUsmz5MSSAAgdIzjRps0CBlSwJvrzpMyjDoUQLeFSIVGPEkwOiSp0qNaNVAAEBACH5BAQeAAAALAIABAALAAkAAAg7AA0IFAjgwAEAAwcWPECAAEIAEBc2DBAAoQGJBChWvFiAYUaKDwEUKPCxIkSOI0EmhDiygEWCEU8mDAgAIfkEBB4AAAAsAwAEAAsACQAACEEADQgUCODAAQAGBgw0UPAAAQIABgCY2PBhgAAIGRq0eBEhgAIOCVzEKPFjAZEdEzIswDKlyoksC2RMSJHiwgEBAQAh+QQEeAAAACwEAAQACgAJAAAIPQANCBQI4MABAAMGGih4gAABABAhGnQYIADBiQQqWgRQoGHGihELFPgYAOFCkQVAGkgIESUAgQMiRhw4ICAAOw=="

 

再將這字串依 Base64 解碼後,丟給 Set-Content 依據內容產生檔案:

[System.Convert]::FromBase64String($Base64Content) | Set-Content -Path "dropped_file.exe" -Encoding Byte

 

用這方法,就可以很容易的在 PowerShell script 裡面,夾帶任何需要的檔案囉~

 

參考資料:Embedding External Files in PowerShell Scripts

 

(本頁面已被瀏覽過 994 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料