Hexdump(16進数ダンプ)の読み方
Hexdump 出力の読み方と解釈を学習。オフセット、16進数データ、ASCII 列の意味を理解。デバッグ、フォレンジック、リバースエンジニアリングに必須のスキルです。
Raw Binary Data → Hexadecimal + ASCIIEncoding
詳細な説明
Hexdump はバイナリファイルの内容を16進数の値とそれに対応する ASCII 文字と並べて表示します。ファイル、ネットワークパケット、メモリのバイナリデータを検査するための主要なツールです。
Hexdump の1行の構造:
00000010 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 0A 00 FF FE |Hello World!....|
- オフセット (
00000010): ファイル内のバイト位置(16進数)。この行はバイト 16 から始まります。 - 16進数データ (
48 65 6C...): 2桁の16進数値として表示された16バイトで、読みやすさのために8バイトずつ2つのグループに分かれています。 - ASCII 列 (
|Hello World!....|): 印刷可能な ASCII 表現。印刷不可のバイトはドットで表示されます。
すぐに認識すべき主な16進数の値:
00= null バイト(C での文字列終端)0A= 改行(\n、Unix の行末)0D 0A= キャリッジリターン + 改行(\r\n、Windows の行末)20= スペース文字FF= 255、マーカーや最大値としてよく使われる7F= DEL 文字(127)
ファイルシグネチャ(マジックバイト)の読み取り:
ファイルは先頭に識別バイトシーケンスを持っています:
89 50 4E 47= PNG 画像(ASCII で.PNG)50 4B 03 04= ZIP アーカイブ(DOCX、XLSX、JAR も同様)25 50 44 46= PDF ファイル(%PDF)FF D8 FF= JPEG 画像7F 45 4C 46= ELF 実行ファイル(.ELF)
Hexdump を作成するツール:
xxd file.bin--- Linux/macOS で標準的hexdump -C file.bin--- 正規形式od -A x -t x1z file.bin--- 16進数出力のオクタルダンプ
Hexdump を流暢に読めることは、ファイル形式の問題のデバッグ、ネットワークプロトコルの分析、デジタルフォレンジック、ソフトウェアのリバースエンジニアリングに不可欠なスキルです。
ユースケース
デジタルフォレンジック調査官は、ディスクイメージの Hexdump を読み取り、ファイルシグネチャの特定、削除ファイルの復元、他のファイル形式に埋め込まれた隠しデータの発見を行います。