ファイルの16進ダンプを取る

パソコンが「DOS」と呼ばれたころ、「dump」と言うコマンドがありました。「dump」の意味を調べてみると「投げ捨てる」と言う意味のほかとして「《記憶装置の内容を印字装置等へ数値等の形式で出力すること》」と言うのがあります。

そこで、いろいろ探してみたら2つほど「dump」に関する有力な情報がありました。

16進ダンプ《1つ目》「PowerShell

PowerShell」に用意されているコマンドの「format-hex」をつかうことで16進数でダンプを取ることができます。

format-hex ファイル名

shift-jis」のテキストファイル「0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ」をダンプを取って見ると、

と、こんな具合に出力されます。ちなみに「コマンドライン」では「format-hex」は認識されません。

chcp 65001

PowerShellの文字コードは「UTF-8」になっています。

親譲りの無鉄砲で小供の時から損ばかりしている。

テキストファイル(夏目漱石の「坊ちゃん」)も「utf-8」で保存しました。ファイル名は「dd.txt」としてあります。

そこで「format-hex」とすると、文字数は全角23文字ですから1文字3バイトとして改行の「\0d\0a」を入れると71バイトです。

テキストファイルを「shift-jis」にして「format-hex」とすると、文字数は全角23文字ですから改行の「\0d\0a」を入れて48バイトです。

16進ダンプ《2つ目》「certutil

これの読み方は「サーテューティル」らしいです。このコマンドを使ってファイルのダンプが取れます。

その逆もできるようですが、この記事ではテキストファイルを16進数として表示させることを目的としているので、より詳しいことを知りたければマイクロソフトのページなどを参照してください。

certutil -f -encodehex dd.txt d1.txt 12

d1.txtに出力されるのは「90658ff782e882cc96b39353964382c58fac8b9f82cc8e9e82a982e791b982ce82a982e882b582c482a282e981420d0a」となりますので何かパラメータが必要になります。

certutil -f -encodehex dd.txt d1.txt 4

90 65 8f f7 82 e8 82 cc 96 b3 93 53 96 43 82 c5
8f ac 8b 9f 82 cc 8e 9e 82 a9 82 e7 91 b9 82 ce
82 a9 82 e8 82 b5 82 c4 82 a2 82 e9 81 42 0d 0a

certutil -f -encodehex dd.txt d1.txt 5

90 65 8f f7 82 e8 82 cc 96 b3 93 53 96 43 82 c5 .e………S.C..
8f ac 8b 9f 82 cc 8e 9e 82 a9 82 e7 91 b9 82 ce …………….
82 a9 82 e8 82 b5 82 c4 82 a2 82 e9 81 42 0d 0a ………….B..

certutil -f -encodehex dd.txt d1.txt 10

0000 90 65 8f f7 82 e8 82 cc 96 b3 93 53 96 43 82 c5
0010 8f ac 8b 9f 82 cc 8e 9e 82 a9 82 e7 91 b9 82 ce
0020 82 a9 82 e8 82 b5 82 c4 82 a2 82 e9 81 42 0d 0a

certutil -f -encodehex dd.txt d1.txt 11

0000 90 65 8f f7 82 e8 82 cc 96 b3 93 53 96 43 82 c5 .e………S.C..
0010 8f ac 8b 9f 82 cc 8e 9e 82 a9 82 e7 91 b9 82 ce …………….
0020 82 a9 82 e8 82 b5 82 c4 82 a2 82 e9 81 42 0d 0a ………….B..

[type]のところを「14」にしたらエラーになりました。「4」「5」「11」「12」以外でも、14以内であれば出力はされますが何に使うのかわからないので、ここでは触れません。

まとめ

PowerShell」となると敷居が高いので使い慣れている「コマンドプロンプト」にするなら「certutil」で16進数ダンプを取ることになります。

パラメータの渡し方が少し様子が違いますが、慣れるしかありません。マイクロソフトのサイトを見ると、とんでもなく多くのパラメータが用意されています。

中にはファイル名をハッシュにするパラメータもありますし、署名にも使うようなことが書かれていますが、テキストファイルを16進でダンプ出力をゲットするだけなら、このあたりでおしまいにします。

e8 a6 aa 親
e8 ad b2 譲
e3 82 8a り
e3 81 ae の
e7 84 a1 無
e9 89 84 鉄
e7 a0 b2 砲
e3 81 a7 で
e5 b0 8f 小
e4 be 9b 供
e3 81 ae の
e6 99 82 時
e3 81 8b か
e3 82 89 ら
e6 90 8d 損
e3 81 b0 ば
e3 81 8b か
e3 82 8a り
e3 81 97 し
e3 81 a6 て
e3 81 84 い
e3 82 8b る
e3 80 82 。
0d 0a