概要
xxdは、`hexdump`や`od`と同様に、バイナリファイルの内容を16進数とASCII文字列で表示します。しかし、最大の特徴は、ダンプされた内容を元のバイナリファイルに戻せる**逆変換(reverse)機能**です。この機能のおかげで、バイナリファイルをテキストエディタで16進数形式に修正し、`xxd -r`を使用して再びバイナリファイルとして保存する作業が可能です。この柔軟性は、バイナリファイルの分析と修正、特に`vim`エディタと組み合わせて使用する場合に非常に強力です。
主な特徴
xxdコマンドの主な特徴は以下の通りです。
- ファイルの内容を16進数およびASCII形式で出力します。
- 16進数ダンプを元のバイナリに逆変換できます。
- 一般的なテキストエディタと組み合わせてバイナリファイルの修正に活用できます。
- 出力形式を細かく制御する多様なオプションがあります。
xxdとhexdumpの違い
xxdとhexdumpは16進数ダンプ機能は似ていますが、逆変換機能の有無が最大の相違点です。
- xxd: 16進数ダンプを元のバイナリに戻す`逆変換`機能(`-r`)を提供します。`vim`との統合機能が強力です。
- hexdump: ダンプ機能に特化したツールであり、逆変換機能はありません。
主なオプション
よく使用するxxdコマンドのオプションを目的別にグループ化しました。
1) ダンプおよび逆変換オプション
2) ヘルプ
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`xxd` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
xxdコマンドの様々な使用例を通じて機能を習得してください。
ファイル内容の16進数ダンプ
echo 'Hello World!' > test.txt
xxd test.txt
`test.txt`ファイルの内容を16進数およびASCII文字で出力します。
16進数ダンプをファイルに保存
xxd /bin/ls > ls_dump.txt
バイナリファイル`/bin/ls`の内容を`ls_dump.txt`ファイルに保存します。
ダンプファイルを元に戻す
xxd -r ls_dump.txt ls_copy
以前保存した`ls_dump.txt`ファイルを元のバイナリファイル`ls_copy`に戻します。**この機能がxxdの最大の特徴です。**
vimでバイナリファイルを編集
vim file.bin
(vimで) :%!xxd
(編集)
(vimで) :%!xxd -r
`vim`で`%!xxd`コマンドを使用して現在のファイルを16進数ダンプモードに変換し、修正後に再度`%!xxd -r`で元に戻して保存します。
インストール
xxdは`vim`パッケージに含まれています。ほとんどのLinuxディストリビューションには`vim-common`または`vim`パッケージがデフォルトでインストールされているため、別途インストールする必要はありません。
Debian/Ubuntu
sudo apt update
sudo apt install -y vim-common
RHEL/CentOS/Fedora
sudo dnf install -y vim-common
ヒントと注意点
xxdコマンドを使用する際の注意点をまとめました。
ヒント
- `xxd`の`-r`オプションは、`xxd`で生成されたダンプファイルのみを正常に逆変換できます。他の形式の16進数ダンプファイルには適用されない場合があります。
- バイナリファイルを修正する際は、非常に慎重に行う必要があります。誤ったバイト一つでプログラム全体を破壊する可能性があります。
- 逆変換時に元のファイルを上書きしないよう、常に別のファイル名で保存するのが安全です。(例: `xxd -r old.hex > new.bin`)