このエントリーをはてなブックマークに追加

xxdコマンドを用いることで、バイナリデータの中身を見ることができます。

何かしらバイナリファイル(この場合はlsコマンドのプログラム)をバイナリ表示してみます。

$ xxd /bin/ls | head
0000000:  cffa edfe 0700 0001 0300 0080 0200 0000  ................
0000010: 1300 0000 1807 0000 8500 2000 0000 0000  .......... .....
0000020: 1900 0000 4800 0000 5f5f 5041 4745 5a45  ....H...__PAGEZE
0000030: 524f 0000 0000 0000 0000 0000 0000 0000  RO..............
0000040: 0000 0000 0100 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 1900 0000 2802 0000  ............(...
0000070: 5f5f 5445 5854 0000 0000 0000 0000 0000  __TEXT..........
0000080: 0000 0000 0100 0000 0050 0000 0000 0000  .........P......
0000090: 0000 0000 0000 0000 0050 0000 0000 0000  .........P......
$ xxd /bin/ls | tail
0008710: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0008720: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0008730: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0008740: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0008750: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0008760: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0008770: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0008780: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0008790: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00087a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

画像ファイルの先頭と最後を表示します。

$ xxd test.jpg | head
0000000: ffd8 ffe0 0010 4a46 4946 0001 0101 0060  ......JFIF.....`
0000010: 0060 0000 ffdb 0043 0002 0101 0201 0102  .`.....C........
0000020: 0202 0202 0202 0203 0503 0303 0303 0604  ................
0000030: 0403 0507 0607 0707 0607 0708 090b 0908  ................
0000040: 080a 0807 070a 0d0a 0a0b 0c0c 0c0c 0709  ................
0000050: 0e0f 0d0c 0e0b 0c0c 0cff db00 4301 0202  ............C...
0000060: 0203 0303 0603 0306 0c08 0708 0c0c 0c0c  ................
0000070: 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c  ................
0000080: 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c  ................
0000090: 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c ffc0  ................
$ xxd test.jpg | tail
0003b80: f414 5140 0607 a0a3 03d0 5145 0018 1e82  ..Q@......QE....
0003b90: 8c0f 4145 1400 607a 0a30 3d05 1450 0181  ..AE..`z.0=..P..
0003ba0: e828 c0f4 1451 4006 07a0 a303 d051 4500  .(...Q@......QE.
0003bb0: 181e 828c 0f41 4514 0060 7a0a 303d 0514  .....AE..`z.0=..
0003bc0: 5001 81e8 28c0 f414 5140 0607 a0a3 03d0  P...(...Q@......
0003bd0: 5145 0018 1e82 8c0f 4145 1400 607a 0a30  QE......AE..`z.0
0003be0: 3d05 1450 0181 e828 c0f4 1451 4006 07a0  =..P...(...Q@...
0003bf0: a303 d051 4500 181e 828c 0f41 4514 0060  ...QE......AE..`
0003c00: 7a0a 303d 0514 5001 81e8 28c0 f414 5140  z.0=..P...(...Q@
0003c10: 0607 a0a3 03d0 5145 007f ffd9            ......QE....

逆に変換する場合は、rオプションをつけます。

$ echo "this is text file" > test.txt
$ xxd test.txt
0000000: 7468 6973 2069 7320 7465 7874 2066 696c  this is text fil
0000010: 650a                                     e.
$ xxd test.txt | xxd -r
this is text file

元のデータに戻ります。




記事一覧へ