Hexdumpは、開発者やアプリケーションデバッガーにとって非常に便利なLinuxコマンドです。ファイルの内容を16進数、8進数、ASCII、10進数などの多くの形式にダンプする機能があります。このコマンドは、ファイルまたは任意の標準入力を入力パラメーターとして受け取り、それを選択した形式に変換します。バイナリデータを操作していて、ファイルの形式を理解できないと仮定します。Hexdumpコマンドを使用して、ファイルの内容をはるかに読みやすい形式で取得できます。このコマンドは、CentOS、Fedora、Ubuntu、Debian、Arch Linuxなどの最新のLinuxオペレーティングシステムすべてにプリインストールされています。この記事では、さまざまな例を使用してhexdumpコマンドの使用方法を示します。このコマンドはC言語で書かれているため、プロのCプログラマーには理解しやすいかもしれませんが、他のITプロフェッショナルにとっては扱いにくいコマンドかもしれません。この記事では、その使用法と目的を示すために最善を尽くします。
1)16進ダンプ-b
16進ダンプで「-b」スイッチを使用すると、入力オフセットが16進形式で表示されます。このオプションは、「1バイト8進表示」とも呼ばれます。出力の後には、スペースで区切られた16の、3列、ゼロで埋められた、1行あたり8進数の入力データのバイトが続きます。これは、「Linoxide」という名前のファイルで「-b」スイッチを指定してこのコマンドを実行したときに受け取った出力例です。
# hexdump -b Linoxide
0000000 124 150 151 163 040 151 163 040 040 141 040 164 145 163 164 040
0000010 114 151 156 157 170 151 144 145 040 106 151 154 145 012 125 163
0000020 145 144 040 146 157 162 040 144 145 155 157 156 163 164 162 141
0000030 164 151 157 156 040 160 165 162 160 157 163 145 163 012 012
000003f
2)Hexdump -c
このオプションは「1バイト文字表示」と呼ばれます。このコマンドパラメータを使用して、入力オフセットを16進数で表示できます。出力文字列の後には、1行に16個のスペースで区切られた、3列の、スペースで埋められた入力データの文字が続きます。このコマンドの出力例を次に示します。
hexdump -c Linoxide
0000000 T h i s i s a t e s t
0000010 L i n o x i d e F i l e \n U s
0000020 e d f o r d e m o n s t r a
0000030 t i o n p u r p o s e s \n \n
000003f
3)Hexdump -C
「Canonicalhex+ASCII display」とも呼ばれ、入力オフセットを16進数で表示します。出力の後には、16進数のスペースで区切られた、2列の16進数バイトと、「|」で囲まれた%_p形式の同じ16バイトが続きます。 ''文字。このコマンドオプションの実例を次に示します。
# hexdump -C Linoxide
00000000 54 68 69 73 20 69 73 20 20 61 20 74 65 73 74 20 |This is a test |
00000010 4c 69 6e 6f 78 69 64 65 20 46 69 6c 65 0a 55 73 |Linoxide File.Us|
00000020 65 64 20 66 6f 72 20 64 65 6d 6f 6e 73 74 72 61 |ed for demonstra|
00000030 74 69 6f 6e 20 70 75 72 70 6f 73 65 73 0a 0a |tion purposes..|
0000003f
4)Hexdump -d
このスイッチ/オプションは、入力オフセットを16進数で表示し、スペースで区切られた8つの列、ゼロで埋められた2バイト単位の入力データを表示します。出力は、1行あたり符号なし10進数です。 「2バイト10進表示」モードとも呼ばれます。このコマンドの出力例を次に示します。
hexdump -d Linoxide
0000000 26708 29545 26912 08307 24864 29728 29541 08308
0000010 26956 28526 27000 25956 17952 27753 02661 29525
0000020 25701 26144 29295 25632 28005 28271 29811 24946
0000030 26996 28271 28704 29301 28528 25971 02675 00010
000003f
5)Hexdump -o
「2バイト8進表示」とも呼ばれ、指定された入力オフセットを16進数で表示します。コマンドの出力の後には、スペースで区切られた8つの列、ゼロで埋められた、1行あたり8進数の2バイトの入力データが続きます。
# hexdump -o Linoxide
0000000 064124 071551 064440 020163 060440 072040 071545 020164
0000010 064514 067556 064570 062544 043040 066151 005145 071525
0000020 062145 063040 071157 062040 066545 067157 072163 060562
0000030 064564 067157 070040 071165 067560 062563 005163 000012
000003f
6)Hexdump -x
オフセットが16進数で表示され、その後に8つ、スペースで区切られ、4列、ゼロで埋められた、2バイトの入力データが16進数で表示されます。これは「2バイト16進表示」と呼ばれます。
# hexdump -x Linoxide
0000000 6854 7369 6920 2073 6120 7420 7365 2074
0000010 694c 6f6e 6978 6564 4620 6c69 0a65 7355
0000020 6465 6620 726f 6420 6d65 6e6f 7473 6172
0000030 6974 6e6f 7020 7275 6f70 6573 0a73 000a
000003f
7)Hexdump -v
デフォルトでは、hexdumpはアスタリスク記号(*)を使用して出力文字列の同じ行を置き換えますが、-vオプションを指定すると、hexdumpはすべての入力データを表示します。このオプションは、文字列またはテキストの完全な出力の分析を実行するときに役立ちます。このコマンドは、シェル/ bashスクリプトでも使用でき、目的のタスクをより適切に自動化できます。
8)16進ダンプ-s
「Hexdump-s」は、ファイルから指定されたバイト数のみを表示します。このオプションを使用する一般的な構文は次のとおりです。
hexdump -s n -c File
ここで、「n」を表示する行数に置き換え、「File」を実際のファイル名に置き換えます。次の出力例では、この概念をさらに明確にする必要があります。
# hexdump -s 1 -c Linoxide
0000001 h i s i s a t e s t L
0000011
上記のコマンドは、1行の出力のみを表示します。
ヘルプマニュアルを使用して、hexdumpの詳細を取得できます。 Linuxシステムのターミナルで次のコマンドを入力するだけで、hexdumpで使用できるすべての可能性とオプションが表示されます。
man hexdump
結論
Hexdumpは、システム管理者やプログラマーにとって非常に便利なユーティリティです。これにより、さまざまなファイル形式の分析とデコードが簡単になります。これは、bashプログラミングまたはCプログラミング言語スクリプトで簡単に使用して、ファイル形式の変換または分析とリバースエンジニアリングの複雑なタスクを実行できます。この記事では、hexdump、その便利なオプション、およびこのユーティリティに関連するコマンドのいくつかの便利なデモンストレーションを紹介しました。この記事を楽しんでいただけたでしょうか。コメントや質問がある場合は、コメントでお知らせください。