Windowsでバイナリダンプするにはdebugコマンドを使う方法があるようだが、残念ながら64bit版Window7には搭載されていない。

他にないか調べてみると、certutilコマンドが使えるらしい。さらにこのコマンドでBASE64エンコード、デコードができるらしい。

環境

Window7 64bit

ファイルを16進テキストに変換

certutil -f -encodehex <入力ファイル名> <出力ファイル名> (<フォーマット値>)

16進テキストからバイナリに変換

certutil -f -decodehex <入力ファイル名> <出力ファイル名> (<フォーマット値>)

フォーマット値は、以下のサイトにあるものを指定できるのだと思う。たぶん。11がデフォルト。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa380285(v=vs.85).aspx

$ echo abcdefg > test.txt
$ echo 1234567890 >> test.txt

# 16進テキストに変換
$ certutil -f -encodehex test.txt test_hex.txt
入力長 = 23
出力長 = 139
CertUtil: -encodehex コマンドは正常に完了しました。

$ type test_hex.txt
0000    61 62 63 64 65 66 67 20  0d 0a 31 32 33 34 35 36   abcdefg ..123456
0010    37 38 39 30 20 0d 0a                               7890 ..

# バイナリに変換
$ certutil -f -decodehex test_hex.txt test2.txt
入力長 = 139
出力長 = 23
CertUtil: -decodehex コマンドは正常に完了しました。

$ type test2.txt
abcdefg
1234567890

その他のフォーマット

BASE64フォーマット (1)
$ certutil -f -encodehex test.txt test_hex.txt 1 & type test_hex.txt
入力長 = 23
出力長 = 34
CertUtil: -encodehex コマンドは正常に完了しました。
YWJjZGVmZyANCjEyMzQ1Njc4OTAgDQo=
HEXフォーマット (4)
$ certutil -f -encodehex test.txt test_hex.txt 4 & type test_hex.txt
入力長 = 23
出力長 = 72
CertUtil: -encodehex コマンドは正常に完了しました。
61 62 63 64 65 66 67 20  0d 0a 31 32 33 34 35 36
37 38 39 30 20 0d 0a
HEXRAWフォーマット (12)
$ certutil -f -encodehex test.txt test_hex.txt 12 & type test_hex.txt
入力長 = 23
出力長 = 48
CertUtil: -encodehex コマンドは正常に完了しました。
61626364656667200d0a31323334353637383930200d0a

BASE64エンコード/デコード

上記でBASE64フォーマットを指定できるが、以下でもBASE64エンコードとデコードができる。

BASE64エンコード
$ certutil -f -encode <入力ファイル名> <出力ファイル名>
BASE64デコード
$ certutil -f -decode <入力ファイル名> <出力ファイル名>

$ certutil -f -encode test.txt test64.txt & type test64.txt
入力長 = 23
出力長 = 90
CertUtil: -encode コマンドは正常に完了しました。
-----BEGIN CERTIFICATE-----
YWJjZGVmZyANCjEyMzQ1Njc4OTAgDQo=
-----END CERTIFICATE-----

$ certutil -f -decode test64.txt test2.txt & type test2.txt
入力長 = 90
出力長 = 23
CertUtil: -decode コマンドは正常に完了しました。
abcdefg
1234567890

16進ダンプとBASE64エンコード/デコードのバッチを送るメニューに追加

certutilコマンドを使えば、16進ダンプやBASE64変換などができて便利ということがわかったが、いちいちコマンド実行するのは面倒くさいので、バッチファイルを作り右クリックの送るメニューで簡単に実行できるようにしてみる。

以下の3ファイルを作成。

次に、ファイル名を指定して実行でshell:sendtoを入力して、送るメニューのフォルダを開き、そこにファイルを置いた。

16進ダンプ.bat

@echo off
set outfile=certutilhex.txt
certutil -f -encodehex "%~1" %outfile%
type %outfile%
del  %outfile%
pause

BASE64エンコード.bat

@echo off
set outfile=certutil_base64encode.txt
certutil -f -encode "%~1" %outfile%
type %outfile%
del  %outfile%
pause

BASE64デコード.bat

@echo off
set outfile=certutil_base64decode.txt
certutil -f -decode "%~1" %outfile%
type %outfile%
del  %outfile%
pause

参考サイト