Linuxでバイナリファイルを編集する方法
1. 概要
バイナリファイルを表示および編集する必要がある場合があります。 ほとんどのLinuxディストリビューションには、バイナリファイルを操作するためのユーティリティが組み込まれています。 バイナリ形式からテキスト形式への変換、およびその逆の変換も実行できます。
このチュートリアルでは、バイナリファイルとは何かを学び、それらに対して読み取り/書き込み操作を実行するためのユーティリティについて説明します。
2. バイナリファイルとは何ですか?
バイナリファイルには、コンピュータで読み取り可能な形式で構造化および保存されたデータが含まれています。 これは、2進数またはビットで構成されており、コンピューターで簡単に解釈できます。
バイナリファイルは、プレーンテキストファイルを除いて、コンピュータに保存されている他のすべてのものを構成します。 これらは通常、データファイル、画像、サウンドファイル、実行可能プログラムなどに使用されます。
バイナリで保存されたプログラムの利点は、同等のデータ量を持つテキストファイルよりも小さいため、非常に高速に実行できることです。
デフォルトでは、通常のプログラムやテキストエディタでバイナリファイルを表示または編集することはできません。 代わりに、バイナリファイルにアクセスするための特別なユーティリティと16進エディタが必要です。
これらのユーティリティのいくつかを調べて、それらを使用してバイナリファイルを編集する方法を見てみましょう。
3. 設定
sample.txt という名前のテキストファイルを作成して、hexdumpを使用してバイナリファイルに変換します。
$ echo "BAELDUNGISAWESOME baeldungisawesome" > sample.txt
$ hexdump sample.txt > sample.bin
0000000 4241 454c 4455 4e47 4953 4157 4553 4f4d
0000010 4520 6261 656c 6475 6e67 6973 6177 6573
0000020 6f6d 650a
0000024
このチュートリアルでは、この sample.bin ファイルを使用して、さまざまなツールで編集を実行します。
4. xxdで編集
xxdコマンドを使用すると、16進データをバイナリファイルから簡単にダンプできます。16進データをバイナリファイルに変換して戻すこともできます。 これは、通常vimテキストエディタパッケージの一部である便利なコマンドライン16進エディタです。
xxd コマンドは、ほとんどすべての主要なLinuxディストリビューションに組み込まれています。
上からsample.binを使用して、次のコマンドを入力し、vimを介してファイルをバイナリファイルとして開きます。
$ vim -b sample.bin
ファイルは16進形式なので、 vim で編集モードに入り、 4241を6261に変更できます。16進数
また、2行目の 6261を4241に変更してみましょう。
変更を加えたら、 vim で次のコマンドを入力して、ファイルをテキスト形式に変換できます。
:%!xxd -r
baELDUNGISAWESOME BAeldungisawesome
テキスト形式に変換すると、文字列の先頭にある大文字の「 BA」が、先頭の小文字の「ba」に置き換えられていることがわかります。文字列の2番目の部分。
vimのターミナルで次のコマンドを入力すると、変更を保存できます。
:wq
5. ghexで編集
GNOME Hex Editorは、バイナリファイルから生データをロードして編集用に表示するために使用できるシンプルなバイナリエディタです。これにより、16進形式とASCII形式の両方でバイナリファイルを表示および編集できます。
表示は2つの列に分割され、一方の列に16進値があり、もう一方の列にASCII表現があります。
ローカルパッケージマネージャーを使用して、ダウンロードおよびインストール GNOME HexEditorを実行できます。
$ sudo apt install ghex
インストールしたら、次のコマンドを入力してsample.binファイルを開きます。
$ ghex sample.bin
私たちのファイルに関する多くの役立つ情報を見ることができます。 文字列の16進値を編集することもできます。
GHex の利点は、変更がsample.binファイルの文字列にどのように影響しているかをリアルタイムで確認できることです。
編集が完了したら、 Ctrl +Sを押して変更を保存できます。
6. hexeditで編集する
hexedit は、バイナリファイルの表示と編集に使用できるコマンドラインツールです。 Hexedit は、ASCIIおよび16進形式でデータを表示します。
また、値によるデータの検索をサポートし、スクロール可能な出力を表示できます。 また、hexデータをナビゲートするためのさまざまなキーボードショートカットにアクセスできます。
hexedit は、すべての主要なLinuxディストリビューションですぐに利用できます。 必要に応じて、パッケージマネージャーを使用してインストールできます。
$ sudo apt install hexedit
インストールしたら、次のコマンドを入力してsample.binファイルを開きます。
$ hexedit sample.bin
ファイルの16進値を変更して、それらがファイルの文字列にどのように影響するかをリアルタイムで確認できます。
変更を保存するには、 Ctrl +Sと入力します。
7. jeexで編集
jeex は、2進数、16進数、ASCII、および8進数でファイルを作成、開く、および編集できるようにする単純な16進数エディターです。 また、削除、挿入、コピーと貼り付け、検索などの機能も含まれています。
さらに、 jeex は、変更タイムスタンプ、最終アクセスタイムスタンプ、モードビットなど、開いたファイルに関する多くの情報を表示します。
jeex は、すべての主要なLinuxディストリビューションですぐに利用できます。 必要に応じて、パッケージマネージャーを使用してインストールできます。
$ sudo apt install jeex
インストールしたら、次のコマンドを入力してsample.binファイルを開きます。
$ jeex sample.bin
私たちのファイルに関する多くの有用な情報を見ることができます。 さらに、ファイルの16進値を編集して、それらが文字列のASCII値にどのように影響するかを確認できます。
Ctrl + S と入力すると、変更が保存されます。
8. hexcurseで編集
hexcurse は、ncursesベースの16進エディタユーティリティです。
hexcurseのフレンドリーな端末インターフェースにより、特定の行に簡単に移動することもできます。
hexcurse は、すべての主要なLinuxディストリビューションですぐに利用できます。 必要に応じて、パッケージマネージャーを使用してインストールできます。
$ sudo apt install hexcurse
インストールしたら、次のコマンドを入力してsample.binファイルを開くことができます。
$ hexcurse sample.bin
キーボードを使用してファイル内を移動し、16進値を編集できます。 また、変更がファイル内のテキストにどのように影響するかをリアルタイムで確認できます。
完了したら、下部にある[保存]ボタンをクリックします。
9. 結論
この記事では、バイナリファイルとは何かを学び、いくつかの人気のあるバイナリファイルエディタに触れました。 また、それらを使用してバイナリファイルに変更を加える方法についても説明しました。