パケットファイルの中身を見る必要があり、Wireshark を Mac に環境構築をしたため手順などをまとめておく。
環境
% sw_vers ProductName: macOS ProductVersion: 14.7.2 BuildVersion: 23H311 % brew --version Homebrew 4.4.14
CLI 版のインストール
wireshark
を指定して brew install すると CLI 版がインストールされる。
% brew install wireshark
xcode-select のインストールが必要な旨のエラーになった場合は、表示されたコマンドをそのまま実行して解消した上で、再度 brew install wireshark
を実行すると良い。
Error: can't modify frozen String: "The bottle needs the Xcode Command Line Tools to be installed at /Library/Developer/CommandLineTools.\nDevelopment tools provided by Xcode.app are not sufficient.\n\nYou can install the Xcode Command Line Tools, if desired, with:\n xcode-select --install\n" % xcode-select --install
実行確認
wireshark
ではなく tshark
コマンドを実行する。
% tshark --version TShark (Wireshark) 4.4.2 (Git commit 7e61ffa5bef8). Copyright 1998-2024 Gerald Combs <gerald@wireshark.org> and contributors. Licensed under the terms of the GNU General Public License (version 2 or later). This is free software; see the file named COPYING in the distribution. There is NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled (64-bit) using Clang 16.0.0 (clang-1600.0.26.4), with GLib 2.82.2, with libpcap, without POSIX capabilities, with zlib 1.2.12, without zlib-ng, with PCRE2, with Lua 5.4.7, with GnuTLS 3.8.4 and PKCS #11 support, with Gcrypt 1.10.3, with Kerberos (MIT), with MaxMind, with nghttp2 1.64.0, with nghttp3 1.6.0, without brotli, without LZ4, without Zstandard, without Snappy, with libxml2 2.9.13, with libsmi 0.5.0, with binary plugins. Running on macOS 14.7.2, build 23H311 (Darwin 23.6.0), with Intel(R) Core(TM) i5-8210Y CPU @ 1.60GHz (with SSE4.2), with 8192 MB of physical memory, with GLib 2.82.4, with libpcap 1.10.1, with zlib 1.2.12, with PCRE2 10.44 2024-06-07, with c-ares 1.34.4, with GnuTLS 3.8.4, with Gcrypt 1.10.3, with nghttp2 1.64.0, with nghttp3 1.7.0, with libsmi 0.5.0, with LC_TYPE=ja_JP.UTF-8, binary plugins supported.
試しに、以下 CTF の問題として公開されている pcap ファイルの中身を見てみる。
tshark -r <ファイル名>
で内容を確認できる。
% tshark -r q8.pcap 1 0.000000 192.168.107.128 → 49.212.153.157 TCP 66 1298 → 10080 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM 2 0.000270 192.168.107.128 → 49.212.153.157 TCP 66 1299 → 10080 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM 3 0.023722 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1298 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1460 4 0.023746 192.168.107.128 → 49.212.153.157 TCP 54 1298 → 10080 [ACK] Seq=1 Ack=1 Win=65535 Len=0 5 0.023770 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1299 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1460 6 0.023778 192.168.107.128 → 49.212.153.157 TCP 54 1299 → 10080 [ACK] Seq=1 Ack=1 Win=65535 Len=0 7 0.067735 192.168.107.128 → 49.212.153.157 HTTP 447 GET /~q8/ HTTP/1.1 8 0.068787 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1298 [ACK] Seq=1 Ack=394 Win=64240 Len=0 9 0.097472 49.212.153.157 → 192.168.107.128 HTTP 776 HTTP/1.1 401 Authorization Required (text/html) 10 0.098323 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1298 [FIN, PSH, ACK] Seq=723 Ack=394 Win=64240 Len=0 11 0.098323 192.168.107.128 → 49.212.153.157 TCP 54 1298 → 10080 [ACK] Seq=394 Ack=724 Win=64813 Len=0 12 3.925554 192.168.107.128 → 49.212.153.157 TCP 54 1298 → 10080 [FIN, ACK] Seq=394 Ack=724 Win=64813 Len=0 13 3.928885 192.168.107.128 → 49.212.153.157 HTTP 502 GET /~q8/ HTTP/1.1 14 3.929044 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1298 [ACK] Seq=724 Ack=395 Win=64239 Len=0 15 3.929290 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1299 [ACK] Seq=1 Ack=449 Win=64240 Len=0 16 3.977588 49.212.153.157 → 192.168.107.128 HTTP 506 HTTP/1.1 200 OK (text/html) 17 3.991586 192.168.107.128 → 49.212.153.157 TCP 54 1299 → 10080 [FIN, ACK] Seq=449 Ack=453 Win=65083 Len=0 18 3.992543 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1299 [FIN, PSH, ACK] Seq=453 Ack=449 Win=64240 Len=0 19 3.992553 192.168.107.128 → 49.212.153.157 TCP 54 1299 → 10080 [ACK] Seq=450 Ack=454 Win=65083 Len=0 20 3.992622 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1299 [ACK] Seq=454 Ack=450 Win=64239 Len=0 21 4.020582 192.168.107.128 → 49.212.153.157 TCP 66 1300 → 10080 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 SACK_PERM 22 4.043778 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1300 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1460 23 4.043800 192.168.107.128 → 49.212.153.157 TCP 54 1300 → 10080 [ACK] Seq=1 Ack=1 Win=65535 Len=0 24 4.044158 192.168.107.128 → 49.212.153.157 HTTP 394 GET /favicon.ico HTTP/1.1 25 4.044331 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1300 [ACK] Seq=1 Ack=341 Win=64240 Len=0 26 4.123001 49.212.153.157 → 192.168.107.128 HTTP 531 HTTP/1.1 404 Not Found (text/html) 27 4.123014 192.168.107.128 → 49.212.153.157 TCP 54 1300 → 10080 [FIN, ACK] Seq=341 Ack=478 Win=65058 Len=0 28 4.125483 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1300 [ACK] Seq=478 Ack=342 Win=64239 Len=0 29 4.273082 49.212.153.157 → 192.168.107.128 TCP 60 10080 → 1300 [FIN, PSH, ACK] Seq=478 Ack=342 Win=64239 Len=0 30 4.273107 192.168.107.128 → 49.212.153.157 TCP 54 1300 → 10080 [ACK] Seq=342 Ack=479 Win=65058 Len=0
GUI 版のインストール
brew install の際に --cask
を指定すると GUI 版がインストールされる。途中で sudo 権限が必要になるためパスワード入力が求められる。
% brew install --cask wireshark ( 中略 ) ==> Running installer for wireshark with sudo; the password may be necessary. Password:
また、CLI 版を先にインストールしている場合には以下のように idl2wrs
がすでに存在する旨のエラーが出る場合がある。この場合、CLI 版を remove してから再度 brew install --cask wireshark
を実行すると良い。
==> Purging files for version 4.4.2 of Cask wireshark Error: It seems there is already a Binary at '/usr/local/bin/idl2wrs'. % brew remove wireshark
実行確認
アプリケーションから起動する。初回起動時はキャプチャするネットワークインターフェイスを選択するような画面になる。
先ほどと同様に、File > Open から pcap ファイルを開いてみる。CLI 版に比べて各行の情報が詳細に確認できる。