Mac に Homebrew で Wireshark をインストールする

パケットファイルの中身を見る必要があり、WiresharkMac に環境構築をしたため手順などをまとめておく。

環境

% 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 ファイルの中身を見てみる。

ksnctf.sweetduet.info

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 版に比べて各行の情報が詳細に確認できる。

CLI 版も GUI 版も詳細確認のためのオプションが多数存在するが、環境構築と動作確認としてはここまで。