FIG-095

パケットキャプチャ — 空中の手紙を、虫眼鏡で読む

ネットワーク 2026.09.24 公開 読了 約11分

Wi-Fiの電波は、部屋じゅうに手紙をばらまいているようなものです。宛先の人だけが拾う約束になっていますが、拾おうと思えば誰でも拾えます。ネットワークを流れるパケットをそのまま拾い集めて眺めることをパケットキャプチャと言い、その定番の道具が Wireshark です。

図1は、カフェのWi-Fiで隣の席の人の通信を拾ったという想定の画面です。「キャプチャ開始」を押して、流れてきたパケットを1行ずつクリックして虫眼鏡で覗いてみてください。右下の手帳に、分かってしまったことが書き込まれていきます。

パケットキャプチャ — 空中を飛ぶ手紙を、虫眼鏡で読む
表示フィルタ
0 件
No.送信元宛先種類内容
「キャプチャ開始」を押すと、電波に乗っているパケットが流れてきます
行をクリックすると、中身が階層ごとに開きます
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 192.168.1.23
宛先: 192.168.1.1
▾ User Datagram Protocol
送信元ポート: 53124
宛先ポート: 53
▾ Domain Name System
質問: melon-shop.example の A レコード
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 192.168.1.1
宛先: 192.168.1.23
▾ User Datagram Protocol
送信元ポート: 53
宛先ポート: 53124
▾ Domain Name System
回答: melon-shop.example = 203.0.113.10
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 192.168.1.23
宛先: 203.0.113.10
▾ Transmission Control Protocol
送信元ポート: 51200
宛先ポート: 80
フラグ: SYN
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 203.0.113.10
宛先: 192.168.1.23
▾ Transmission Control Protocol
送信元ポート: 80
宛先ポート: 51200
フラグ: SYN, ACK
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 192.168.1.23
宛先: 203.0.113.10
▾ Transmission Control Protocol
送信元ポート: 51200
宛先ポート: 80
フラグ: ACK
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 192.168.1.23
宛先: 203.0.113.10
▾ Transmission Control Protocol
送信元ポート: 51200
宛先ポート: 80
フラグ: PSH, ACK
▾ Hypertext Transfer Protocol
POST /login HTTP/1.1
Host: melon-shop.example
Content-Type: application/x-www-form-urlencoded
▾ 本文(そのまま読める)
user=hanako&pass=melon0724
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 203.0.113.10
宛先: 192.168.1.23
▾ Transmission Control Protocol
送信元ポート: 80
宛先ポート: 51200
フラグ: PSH, ACK
▾ Hypertext Transfer Protocol
HTTP/1.1 200 OK
Content-Type: text/html
▾ 本文(そのまま読める)
<h1>ようこそ、はなこ様</h1> ご注文履歴: 夕張メロン 2玉
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 192.168.1.23
宛先: 192.168.1.1
▾ User Datagram Protocol
送信元ポート: 53125
宛先ポート: 53
▾ Domain Name System
質問: mybank.example の A レコード
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 192.168.1.23
宛先: 198.51.100.7
▾ Transmission Control Protocol
送信元ポート: 51210
宛先ポート: 443
フラグ: PSH, ACK
▾ Transport Layer Security
Handshake: Client Hello
SNI(接続先の名前): mybank.example
▾ Ethernet II
送信元MAC: 3c:22:fb:9a:10:4e
宛先MAC: 00:1a:2b:3c:4d:5e
▾ Internet Protocol v4
送信元: 192.168.1.23
宛先: 198.51.100.7
▾ Transmission Control Protocol
送信元ポート: 51210
宛先ポート: 443
フラグ: PSH, ACK
▾ Transport Layer Security
Content Type: Application Data
長さ: 412 バイト
▾ 本文(暗号化されている)
17 03 03 01 9c 8f e2 4a b1 07 c9 5d 3e a0 f4 62 19 bb 0d 7e 58 c3 a6 91 2f e0 44 d8 71 06 bd 3a
🕵️ スパイの手帳 0 / 5
  1. #1 この人は melon-shop.example を開こうとしている
  2. #6 ユーザー名 hanako、パスワード melon0724
  3. #7 購入履歴は 夕張メロン 2玉
  4. #8 mybank.example という銀行を使っている
  5. #10 銀行とのやり取りは暗号化されていて読めない(でも412バイト送ったのは分かる)
READY
まだ何も拾っていない
隣の席の人が、メロンの通販サイトにログインし、そのあと銀行のサイトを開こうとしています。電波は誰にでも届くので、同じWi-Fiにいるだけでそのやり取りを拾えます。
図1 — 暗号化されていない通信は、パスワードまで丸見え。暗号化しても「どこと話したか」は残る

パケットは、層ごとに開ける封筒

図1で行をクリックすると、中身が Ethernet → IP → TCP/UDP → HTTP と入れ子で開きます。外側の封筒ほど配達のための情報(どの機器から、どの住所へ、どの窓口へ)で、いちばん内側がアプリの本文です。Wiresharkはこの封筒を全部開けて、読める形に翻訳して見せてくれます。

表示フィルタに dns や http と入れると、その種類だけに絞れます。実際のキャプチャは1秒で数千行流れることもあるので、目的の手紙だけ拾い出すフィルタが Wireshark の使い方の中心になります。

暗号化で隠れるもの、隠れないもの

#6 の HTTP は暗号化されていないので、フォームに打ったパスワードがそのまま文字として流れています。一方 #10 の TLS(HTTPS) は本文が意味のないバイト列になっていて、何を送ったのかは読めません。

それでも手帳は空になりません。DNSの問い合わせ(#8)や、TLSの最初のあいさつに書かれる接続先の名前(#9 の SNI)、いつ・どれだけ送ったかは外から見えます。暗号化が守るのは手紙の中身で、封筒の宛名までは隠さないのです。

本来は、トラブルを調べる道具

ここまで盗み見の話をしてきましたが、パケットキャプチャの本来の用途は原因調査です。「つながらない」「遅い」と言われたとき、本当にパケットが出ているのか、返事が来ているのかを実際の通信で確かめられます。推測ではなく証拠を見るための道具です。

ただし、自分が管理していないネットワークで他人の通信を拾うことは、法律や規約で禁じられている場合があります。試すなら自分の機器と自分のネットワークで行ってください。

用語ミニ辞書
パケットキャプチャ
ネットワークを流れるパケットをそのまま記録し、中身を調べること。
Wireshark
代表的なキャプチャ・解析ツール。層ごとに中身を開いて見せる。
表示フィルタ
記録したパケットから、条件に合うものだけを表示する機能。
平文
暗号化されていない、そのまま読める状態のデータ。
SNI
TLSの最初に送る接続先のドメイン名。通常は暗号化されずに見える。

まとめ

電波やケーブルを流れるパケットは、拾おうと思えば拾えます。暗号化していなければパスワードも本文も丸見え、暗号化していても誰と・いつ・どれだけは残る。図1の手帳が最後まで埋まったなら、「HTTPSなら何も漏れない」が言いすぎだということも、もう分かっているはずです。