カラフルで見やすい!ターミナルで使えるバイナリファイルビューア「hexyl」入門

タグ GitHubオープンソースsharkdphexyl

このソフトで何ができる?

hexyl は、ターミナル(コマンド画面)でファイルの中身を16進数(ヘックス)で表示するツールです。ふだん目に見えないバイナリファイルの中身を、色分けされた見やすい形式で確認できます。NULLバイト・印刷可能な文字・空白文字・その他の文字をそれぞれ異なる色で表示するため、ひと目でファイルの構造が把握できます。

どんな人におすすめ?

こんな場面で役立ちます:

  • ファイルの中身を調べたいとき — 画像や音声ファイルがどんなデータでできているか興味がある方
  • プログラムの勉強をしている方 — テキストエディタで開けないファイルの実際のデータを確認したい学習者
  • ファイルが壊れていないか確認したいとき — ダウンロードしたファイルの先頭部分(マジックバイト)を目視で確認したいエンジニア
  • セキュリティを学んでいる方 — バイナリ解析の入口として、難しいツールを使う前の準備として
  • 設定ファイルを扱う方 — 見慣れないファイルに不審なバイトが混ざっていないか確認したい管理者

専門的な知識がなくても、色の違いでデータの種類がわかるため、IT初心者の方でも直感的に使えます。

インストール方法

お使いの環境に合わせていずれかの方法でインストールしてください。

Ubuntu / Debian 系 Linux:

sudo apt install hexyl

Fedora:

sudo dnf install hexyl

Arch Linux:

pacman -S hexyl

macOS(Homebrew):

brew install hexyl

macOS(MacPorts):

sudo port install hexyl

FreeBSD:

pkg install hexyl

Termux(Android 端末):

pkg install hexyl

Nix 環境:

nix-env -i hexyl

インストール後、以下のコマンドでバージョンを確認してみましょう。

hexyl --version

基本的な使い方

基本的な使い方はとてもシンプルです。hexyl のあとに見たいファイルのパスを指定するだけです。

hexyl ファイル名

例:テキストファイルを表示する

hexyl hello.txt

出力は次のような形式で表示されます。

┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 48 65 6c 6c 6f 2c 20 57 ┊ 6f 72 6c 64 21 0a       │Hello, W┊orld!·  │
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘

左から順に「オフセット(何バイト目か)」「16進数の値」「実際の文字」が並んでいます。色分けにより、印刷できる文字・空白・NULLバイトなどが一目でわかります。

表示する行数を制限する(大きなファイルの先頭だけ見たい場合):

hexyl --length 256 大きなファイル.bin

特定の位置から表示を始める:

hexyl --skip 512 ファイル名

1行あたりのバイト数を変える:

hexyl --bytes-per-line 8 ファイル名

他のコマンドの出力をパイプで渡す:

echo "Hello, hexyl!" | hexyl
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 48 65 6c 6c 6f 2c 20 68 ┊ 65 78 79 6c 21 0a       │Hello, h┊exyl!·  │
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘

活用アイデア

1. 画像ファイルのヘッダーを確認する

PNGやJPEGなどの画像ファイルには、先頭に「このファイルは何者か」を示す特定のバイト列(マジックバイト)が含まれています。hexyl で先頭だけを表示することで、拡張子が変えられていても本当のファイル形式を調べることができます。

hexyl --length 16 image.png

PNGファイルなら先頭に 89 50 4e 47 という値が必ず現れます。

2. ダウンロードしたバイナリの中身をざっくり確認する

信頼できるかわからないファイルを実行する前に、hexyl で中身を眺めてみましょう。テキストとして読める文字列が混在していたり、怪しいパターンが見えたりすることがあります。セキュリティ学習の第一歩としても最適です。

hexyl --length 512 suspicious_file

3. 自作プログラムのファイル出力をデバッグする

プログラムでバイナリファイルを書き出したとき、意図したデータが正しく書き込まれているかを hexyl で目視確認できます。デバッガを使わなくても、目で見て「あ、ここがずれている」と気づけるのが便利です。

./my_program output.bin && hexyl output.bin

4. テキストファイルの文字コードを調べる

日本語ファイルがUTF-8なのかShift-JISなのか迷ったとき、hexyl でバイト値を確認することで文字コードの手がかりが得られます。UTF-8の日本語は e3e4 などで始まるバイト列として現れます。

hexyl japanese_text.txt | head -20

5. パイプラインの途中でデータを覗き見る

他のコマンドと組み合わせて、処理の途中のデータがどうなっているかを確認するデバッグ用途にも使えます。

curl -s https://example.com | hexyl | head -30

まとめ

hexyl は、ターミナルでバイナリデータを色鮮やかに、わかりやすく表示してくれるシンプルなツールです。インストールはワンコマンドで完了し、使い方も hexyl ファイル名 と入力するだけという手軽さが魅力です。

ファイルの中身を16進数で確認するという作業は、これまでは玄人向けのイメージがありましたが、hexyl の色分け表示のおかげで初心者でも直感的に内容を把握できます。プログラムの学習中の方、セキュリティに興味がある方、ファイルの中身をちょっと覗いてみたい方など、幅広い方に試してみてほしいツールです。まずは手元の適当なファイルに向かって hexyl コマンドを打ち込んでみてください。きっとデータの世界の見え方が少し変わるはずです。