「バイナリって言葉はよく聞くけど、実際に何のことかよくわからない」——そんな悩みを持つセキュリティ担当者は少なくありません。ログの分析、マルウェアの調査、パケットキャプチャの確認……セキュリティ業務のあらゆる場面で登場するバイナリ。この記事では、プログラミング経験ゼロでも理解できるよう、図や表を使いながらバイナリの基礎から実務での活用方法までをやさしく解説します。
この記事の目次
バイナリとは?
バイナリの定義とは
バイナリ(binary)は英語で「2つの状態からなる」という意味です。コンピューターの世界では、すべてのデータを 「0」と「1」の2種類だけで表現する方法——つまり2進数(にしんすう)のことを指します。
私たちが普段使う数字は「10進数」で、0〜9の10種類を使います。9の次は桁が上がって10になりますね。一方、バイナリ(2進数)は0と1の2種類しかないため、1の次はすぐに桁が上がって「10(イチゼロ)」になります。

10進数とバイナリ(2進数)の対応表
まず、10進数とバイナリがどう対応するかを確認しましょう。以下の表を手元に置いておくと、バイナリを読む際の基準になります。
| 10進数 | 2進数(バイナリ) | 覚え方のコツ | 日常の例え |
|---|---|---|---|
| 0 | 0000 | ゼロはゼロ | 電球:消灯 |
| 1 | 0001 | 最後の桁が1 | 電球:点灯 |
| 2 | 0010 | 2桁目が1 | スイッチ2つ |
| 4 | 0100 | 3桁目が1 | 4部屋のアパート |
| 8 | 1000 | 4桁目が1 | 8つのロッカー |
| 10 | 1010 | 8+2 | 電話の内線番号 |
| 15 | 1111 | 全桁1(4ビット最大) | 満室のホテル |
| 16 | 10000 | 5桁目が1 | 新しいフロア |
| 255 | 11111111 | 全桁1(8ビット最大) | IPアドレスの最大値 |
バイナリを10進数に変換する方法
バイナリ「1011」を10進数に変換してみましょう。右の桁から「1の位・2の位・4の位・8の位」と割り当てて計算します。

ビットとバイトを正しく知ろう
ビット(bit)とは
バイナリの「0」や「1」の1桁分を「1ビット(1 bit)」と呼びます。ビットはデータの最小単位です。ビットが増えるほど表現できる状態の数が増えます。
- 1ビット:2通り(0か1)
- 2ビット:4通り(00 / 01 / 10 / 11)
- 8ビット:256通り(0〜255)
- 32ビット:約42億通り(IPv4アドレスの総数)
バイト(Byte)とデータ単位の全体像
8ビットをまとめたものが「1バイト(1 Byte)」です。英字1文字はちょうど1バイトで表現されます(ASCII文字の場合)。
| 単位 | 正式名称 | ビット数 | 身近な例 |
|---|---|---|---|
| 1 bit | ビット | 1ビット | コインの表/裏(0か1) |
| 1 Byte | バイト | 8ビット | 英字1文字(例:’A’) |
| 1 KB | キロバイト | 約8,000ビット | 短いメモ帳のテキスト |
| 1 MB | メガバイト | 約800万ビット | スマホ写真1枚 |
| 1 GB | ギガバイト | 約80億ビット | 映画1本(標準画質) |
| 1 TB | テラバイト | 約8兆ビット | HDD・SSDの容量単位 |
16進数はセキュリティ現場の共通語
なぜ16進数が使われるのか
バイナリはコンピューターには扱いやすいですが、人間が読むには桁が多すぎます。1バイトだけでも「11111111」と8桁になります。そこで登場するのが16進数(ヘキサデシマル)です。
16進数は4ビットを1桁で表現できます。つまり1バイト(8ビット)をわずか2桁で書けます。10以上の値はA〜Fのアルファベットで表し(A=10, B=11 … F=15)、先頭に「0x」をつけることで16進数だと示します。

| 16進数 | 2進数(4bit) | 10進数 | よく出る場面 | 具体例 |
|---|---|---|---|---|
| 0〜9 | 0000〜1001 | 0〜9 | 通常の数値 | 通常の数字と同じ |
| A | 1010 | 10 | MACアドレス | FF:FF:FF:FF:FF:FF |
| C | 1100 | 12 | IPサブネット | /24 = 0xFFFFFF00 |
| F | 1111 | 15 | 色コード・ハッシュ | #FF0000(赤) |
| 0xFF | 11111111 | 255 | 1バイト最大値 | ブロードキャストIP |
セキュリティ担当者が覚えておくべき16進数
- 0x00:NULLバイト。文字列終端・バイナリインジェクション攻撃の起点
- 0x0A:改行コードLF(Unix系)。HTTPヘッダインジェクションに悪用
- 0x0D 0x0A:改行コードCRLF(Windows系)。HTTPヘッダの境界
- 0x4D5A(MZ):Windowsの実行ファイル(.exe/.dll)のマジックナンバー
- 0x7F454C46(ELF):Linux/Unixの実行ファイルのマジックナンバー
- 0xFFD8FF:JPEGファイルのマジックナンバー
バイナリとASCIIの仕組みとは
ASCIIコードとは
コンピューターは文字をそのまま保存できないため、各文字に番号を割り当てています。最も基本的なものが「ASCII(アスキー)コード」です。英字・数字・記号などを0〜127の数値で表現し、それぞれがバイナリで記録されます。
セキュリティ担当者がASCIIコードを知っておくべき理由は、攻撃者がASCIIコードを悪用してセキュリティフィルターを回避するケースがあるからです。

| 文字 | 10進数 | 16進数 | 2進数 | セキュリティ上の意味 | 注意点 |
|---|---|---|---|---|---|
| A | 65 | 41 | 01000001 | ログ・パケット内の文字 | 大文字・小文字は別コード |
| a | 97 | 61 | 01100001 | 攻撃文字列の一部 | 0x41と0x61の違いに注意 |
| 0 | 48 | 30 | 00110000 | SQLインジェクション | 数字と文字コードの混同に注意 |
| / | 47 | 2F | 00101111 | パス区切り文字 | URLエンコードで%2Fに変換 |
| < | 60 | 3C | 00111100 | XSSの特殊文字 | HTMLエスケープ対象 |
| NUL | 0 | 00 | 00000000 | 文字列の終端(C言語) | バイナリインジェクションの起点 |
| CR | 13 | 0D | 00001101 | 行末コード(Windows) | ヘッダインジェクションに悪用 |
| LF | 10 | 0A | 00001010 | 行末コード(Unix) | 改行コード統一の重要性 |
セキュリティ業務でのバイナリの活用場面
バイナリの知識は「知っているだけ」では終わりません。以下の表は、セキュリティ担当者がバイナリに直接触れる主な場面です。
| セキュリティ業務 | バイナリの使われ方 | 担当者が見るべきポイント |
|---|---|---|
| マルウェア解析 | 実行ファイル(.exe等)の内部構造を16進数で読む | MZヘッダ(4D 5A)でWindowsの実行ファイルか確認 |
| ログ分析 | パケットのペイロードがバイナリで記録される | 異常なバイト列(シェルコードのパターン等)の検出 |
| 暗号・ハッシュ | SHA-256等の出力は256ビット(32バイト)のバイナリ | ファイルの改ざん検知(ハッシュ値の比較) |
| 脆弱性診断 | バッファオーバーフロー等でバイナリデータを注入 | 入力値の長さ・文字種制限の確認 |
| フォレンジック | 削除ファイルをバイナリレベルで復元 | マジックナンバー(先頭バイト)でファイル種類を特定 |
| ネットワーク監視 | パケットキャプチャのデータがバイナリ形式 | Wiresharkでの16進数表示の読み方 |
マジックナンバーでファイル種類を見分ける
ファイルの先頭数バイトには「マジックナンバー」と呼ばれる固有のバイト列が格納されており、ファイルの種類を識別できます。拡張子が変更されていてもマジックナンバーを確認すれば正体がわかるため、不審ファイルの調査で非常に役立ちます。
| マジックナンバー(16進数) | ファイル種類 | 拡張子の例 | セキュリティ上の注意 |
|---|---|---|---|
4D 5A(MZ) |
Windowsの実行ファイル | .exe / .dll | マルウェアの多くがこの形式 |
7F 45 4C 46(ELF) |
Linux/Unixの実行ファイル | 拡張子なし | Linuxサーバー侵害に使われる |
FF D8 FF |
JPEG画像 | .jpg / .jpeg | 画像を偽装したマルウェアに注意 |
89 50 4E 47(PNG) |
PNG画像 | .png | 同上 |
25 50 44 46(%PDF) |
PDFファイル | 悪意あるPDFの添付に注意 | |
50 4B 03 04(PK) |
ZIPファイル | .zip / .docx / .xlsx | Officeファイルも内部はZIP形式 |
ハッシュ値はバイナリデータ
ファイルの改ざん検知によく使われる「ハッシュ値」(SHA-256など)も、実体はバイナリデータです。SHA-256の出力は256ビット(32バイト)で、通常は64文字の16進数文字列として表示されます。

実務で使えるツール・コマンド集
Windowsで使えるコマンド
certutil -hashfile ファイル名 SHA256:ファイルのSHA-256ハッシュ値を確認Format-Hex ファイル名(PowerShell):ファイルを16進数で表示Get-FileHash ファイル名 -Algorithm SHA256:PowerShellでハッシュ確認
Linux / macOSで使えるコマンド
xxd ファイル名:ファイルの16進数ダンプを表示(最もよく使う)hexdump -C ファイル名:16進数ダンプ(詳細表示)file ファイル名:マジックナンバーでファイル種類を判定sha256sum ファイル名:SHA-256ハッシュ値を確認strings ファイル名:バイナリから読める文字列を抽出
GUIツール 初心者におすすめ
- Wireshark:ネットワークパケットを16進数で確認。無料で高機能。セキュリティ担当の必須ツール
- CyberChef:ブラウザで動く多機能変換ツール。16進数・Base64・ハッシュなど様々な変換に対応。インストール不要
- HxD(Windows):フリーの16進数エディタ。バイナリファイルの確認・編集が可能
- Ghidra(NSA製):無料のリバースエンジニアリングツール。マルウェア解析に活用
よくある疑問(Q&A)
Q. バイナリとバイナリファイルは何が違うの?
「バイナリ(数の表現方法)」と「バイナリファイル(テキストではないファイル全般)」は文脈によって使い分けられます。日常会話で「バイナリファイル」と言う場合は「実行ファイル・画像・音声など、テキスト以外のファイル」を指すことが多いです。
Q. Base64とバイナリはどう違うの?
Base64はバイナリデータをテキストとして安全に送受信するためのエンコード方式です。A〜Z、a〜z、0〜9、+、/ の64文字でバイナリを表現します。JWTトークンやメール添付ファイルで使われます。マルウェアがコードをBase64でエンコードして検知を回避しようとするケースもあるため、Base64文字列が含まれるログには注意が必要です。
Q. エンディアン(リトルエンディアン・ビッグエンディアン)とは?
複数バイトのデータをメモリに格納する際の「バイトの並び順」のことです。ビッグエンディアンは人間の感覚に近い「大きい桁から」の並び順、リトルエンディアンは「小さい桁から」の並び順で、IntelのCPUはリトルエンディアンを使います。バイナリ解析で「思った値と違う」と感じたときはエンディアンの違いが原因であることが多いです。
Q. バイナリ解析ってどこから勉強すればいい?
最初のステップとしては、CyberChefを使って16進数とBase64の変換を試してみることをおすすめします。次に、Wiresharkでパケットを実際に見てみましょう。基礎が固まったら、CTF(Capture The Flag)のバイナリ問題に挑戦するのが実践的なスキルアップになります。
まとめ
バイナリとは0と1だけで情報を表現する2進数のことです。1バイト=8ビットで256通りの値を表現でき、16進数を使うと人間にも読みやすくなります。文字コード(ASCII)やハッシュ値もバイナリデータの一種で、攻撃者による悪用やファイル改ざん検知にも深く関わります。WiresharkやCyberChefなどのツールと組…バイナリとは0と1だけで情報を表現する2進数のことです。1バイト=8ビットで256通りの値を表現でき、16進数を使うと人間にも読みやすくなります。文字コード(ASCII)やハッシュ値もバイナリデータの一種で、攻撃者による悪用やファイル改ざん検知にも深く関わります。WiresharkやCyberChefなどのツールと組み合わせることで、セキュリティ業務で即実践できる知識です。





















![中小企業の情報瀬キィリティ相談窓口[30分無料]](/wp-content/uploads/2023/07/bnr_footer04.png)


