ファイルの内容を16進ダンプしたい
問題
ファイルの内容を16進ダンプで見たいのですが、良い方法はありますか。
答え
方法は多数ある。
Binary Editor BZ(Windows)
専用のソフト、対応しているソフトを使う方法。
https://devil-tamachan.github.io/BZDoc/
PowerShell の format-hex コマンド(Windows)
あら、ソフトいらず。
PS C:\Users\xxxx\Pictures> format-hex sample.png パス: C:\Users\xxxx\Pictures\sample.png 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 PNG........IHDR 00000010 00 00 05 31 00 00 06 3F 08 06 00 00 00 5B 11 B9 ...1...?.....[.¹ 00000020 14 00 00 00 01 73 52 47 42 00 AE CE 1C E9 00 00 .....sRGB.®Î.é.. 00000030 00 04 67 41 4D 41 00 00 B1 8F 0B FC 61 05 00 00 ..gAMA..±.üa... 00000040 00 09 70 48 59 73 00 00 0E C3 00 00 0E C3 01 C7 ..pHYs...Ã...Ã.Ç 00000050 6F A8 64 00 00 FF A5 49 44 41 54 78 5E EC DD 07 o¨d...¥IDATx^ìÝ. (略)
コマンドの結果がスクロールして流れて行ってしまうので、moreコマンドに渡すと1ページずつ見える。
PS C:\> format-hex sample.png | more
コマンドプロンプトで certutil コマンド(Windows)
16進ダンプをファイルに書き出してくれる。書き出されたファイルをエディタなどで開いて確認できる。
>certutil -f -encodehex sample.png sample.txt 5
sample.png の16進ダンプが sample.txt に書き出される。
末尾の数字は形式の指定。
https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/certutil
hexdumpコマンド(Linux)
linux環境や、WSL環境なら、hexdumpコマンドで。
$ hexdump test.php 0000000 3f3c 6870 0d70 760a 7261 645f 6d75 2870 0000010 5f24 4553 5652 5245 3b29 0a0d 000001c
オプションで元の文字も表示できる。
$ hexdump -C test.php 00000000 3c 3f 70 68 70 0d 0a 76 61 72 5f 64 75 6d 70 28 |<?php..var_dump(| 00000010 24 5f 53 45 52 56 45 52 29 3b 0d 0a |$_SERVER);..| 0000001c
表示が長いときは less などで閲覧。
$ hexdump -C test.php | less
xxdコマンド(Linux)
xxdコマンドでも可能。
$ xxd test.php 00000000: 3c3f 7068 700d 0a76 6172 5f64 756d 7028 <?php..var_dump( 00000010: 245f 5345 5256 4552 293b 0d0a $_SERVER);..
ほかに
エディタについている変換機能を使うなど。
コメント