ファイルまたは文字列のHexdumpを作成する方法

前書き

16進ダンプは、データの16進表示です。 プログラムのデバッグやプログラムのリバースエンジニアリングには、16進数を使用することをお勧めします。

たとえば、多くのファイル形式は、その種類を示すために特定の16進数文字を持っています。 何らかの理由でプログラムを使用してファイルを読み込もうとしていて、正しく読み込まれていない場合は、ファイルが期待どおりの形式でない可能性があります。

プログラムの仕組みを見て、コードをリバースエンジニアリングするソースコードやソフトウェアがない場合は、16進ダンプを見て何が起きているのか試してみてください。

16進数とは何ですか?

コンピュータはバイナリで考える。 すべての文字、数字、および記号は、バイナリまたは複数のバイナリ値によって参照されます。

しかし、人間は10進数で考える傾向があります。

何千もの 百人 テンズ 単位
1 0 1 1

人間としては、最も低い数字は単位と呼ばれ、0から9までの数字を表します.10になると、単位の列を0に戻し、1を10の列(10)に追加します。

128 64 32 16 8 4 2 1
1 0 0 1 0 0 0 1

バイナリでは、最も低い数字は0と1のみを表します.1を超えると、2の列に1を、1の列に0を入れます。 4を表現したいときは、4列に1を入れ、2と1の列をリセットします。

したがって、15を表すには1111があり、それは1 8、1 4、1 2、1 1を表します。 (8 + 4 + 2 + 1 = 15)となる。

バイナリ形式のデータファイルを見た場合、それは絶対に巨大であり、意味をなさないことは事実上不可能です。

バイナリから次のステップは、8進数で、8を基本数として使用します。

24 16 8 1
0 1 1 0

8進数のシステムでは、最初の列は0から7になり、2番目の列は8から15、3番目の列は16から23、4番目の列は24から31などとなります。 バイナリよりも一般的に読むのは簡単ですが、ほとんどの人は16進数を使うことを好みます。

16進数は16を基数として使用します。 ここでは、人間としては数字を0から9までと考えているので、混乱するところです。

だから、10,11,12,13,14,15に使われるのは何ですか? 答えは手紙です。

したがって、値100は64で表されます。単位列に96を、次に4に100を設定する16列のうち6が必要です。

ファイル内のすべての文字は16進数で表されます。 これらの値が意味することは、ファイル自体のフォーマットに依存します。 ファイルの形式は16進数で表され、通常はファイルの先頭に格納されます。

ファイルの先頭に表示される16進数値のシーケンスを知ることで、ファイルのフォーマットを手動で設定することができます。16進数のダンプ・ファイルを表示すると、ファイルが表示されているときに表示されない通常のテキストエディタに読み込まれます。

Linuxを使って16進ダンプを作成する方法

Linuxを使用して16進ダンプを作成するには、hexdumpコマンドを使用します。

端末 (標準出力)に16進数でファイルを表示するには、次のコマンドを実行します。

hexdumpファイル名

例えば

hexdump image.png

デフォルトの出力には行番号(16進形式)が表示され、1行に4つの16進値が8セット表示されます。

例えば:

00000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244

異なるスイッチを指定して、デフォルト出力を変更することができます。 例えば、マイナスbスイッチを指定すると、8桁のオフセットとそれに続く16進数3桁の入力データの8進数のバイトが生成されます。

hexdump -b image.png

したがって、上記の例は、以下のように表される。

00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122

上記のフォーマットは、1バイトの8進表示と呼ばれます。

ファイルを表示するもう1つの方法は、マイナスcスイッチを使用して1バイトの文字表示です。

hexdump -c image.png

これは再びオフセットを表示しますが、この後には、スペースごとに区切られた16個のスペース、行ごとに入力データのスペースで埋められた文字が続きます。

その他のオプションには、マイナスCスイッチとマイナスdスイッチを使用して表示できる2バイトの10進数表示を使用して表示できるCanonical hex + ascii表示があります。 マイナススイッチを使用すると、2バイトの8進表示を表示できます。 最後に、minux xスイッチを使用して、2バイトの16進表示を表示することができます。

hexdump -C image.png

hexdump -d image.png

hexdump -o image.png

hexdump -x image.png

上記のいずれのフォーマットもニーズに合わない場合は、マイナススイッチを使用してフォーマットを指定します。

データファイルが非常に長く、最初の数文字を見てそのタイプを確認したい場合は、-nスイッチを使用してファイルのどのくらいの部分を16進数で表示するかを指定できます。

hexdump -n100 image.png

上記のコマンドは最初の100バイトを表示します。

ファイルの一部をスキップする場合は、マイナススイッチを使用して開始オフセットを設定します。

hexdump -s10 image.png

ファイル名を指定しないと、標準入力からテキストが読み込まれます。

次のコマンドを入力します。

ヘキサダンプ

その後、テキストを標準入力に入力し、quitと入力して終了します。 16進数は標準出力に表示されます。

概要

hexdumpユーティリティは明らかにかなり強力なツールであり、すべての機能を完全に把握するにはマニュアルページを必ず読んでください。

あなたはまた、出力を読むときにあなたが探しているものをよく理解する必要があります。

マニュアルページを表示するには、次のコマンドを実行します。

人間のhexdump