POWLOAD(マクロ有効化するとPowershell起動して通信)の検体を解析する際に
powershellで実行される引数がBase64でエンコードされていることが多いので、効率化のためにバッチを作成したので共有です。
使い方
1.バッチを実行するとコピペ待ちになるので、デコードしたい文字列を貼り付け
2.デコードされた文字列がクリップボードにコピーされます
バッチファイルの中身
@ECHO OFF
setlocal
pushd "%~dp0"
REM 変数定義
SET /P BASE64_STR="Input encoded strings: "
SET BASE64_START=-----BEGIN CERTIFICATE-----
SET BASE64_END=-----END CERTIFICATE-----
echo %BASE64_START%%BASE64_STR%%BASE64_END% > before.txt
REM Decodeを実行する、元ファイルの削除、デコード結果のクリップボードコピー
certutil -decode before.txt after.txt
del before.txt
type after.txt | clip
del after.txt
ECHO Succesfully encoded. Check your clipboard.
pause
参考情報
WindowsのCertutilコマンドを使っています。
共有フォルダ上で実行することが多そうだったので冒頭でpushdでカレントパスを指定しています。
これでネットワークファイル共有上でもエラーが出なくなるっぽいです。
追記
powershellを呼び出すことでワンラインでシンプルに実行可能というアドバイスを頂きました!
@kfjt さんありがとうございます!
@ECHO OFF
SET /P BASE64_STR="Input encoded strings: "
powershell -command "[Convert]::ToBase64String(([System.Text.Encoding]::Default).GetBytes('%BASE64_STR%'))" |clip
ECHO Succesfully encoded. Check your clipboard.
pause
また、フォルダパスに&が含まれた際にエラーが発生すること可能性がありましたので、下記のようにダブルクオーテーションで囲むように修正しました。
pushd %~dp0 → pushd "%~dp0"
@zarukishi さん、ありがとうございます!