🍣

m3macでtcpdumpを使ってパケットキャプチャする

2024/02/24に公開

m3macでtcpdumpを使ってパケットキャプチャする

m3macでtcpdumpを使ってパケットキャプチャする方法をメモがてら書きます。

環境

  • PC:M3 pro Mac
  • OS version:sonoma 14.3

インストール

不要です。macOSにはデフォルトでインストールされています。

使い方

❯ tcpdump -h
tcpdump version 4.99.1 -- Apple version 133
libpcap version 1.10.1
LibreSSL 3.3.6
Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count]
		[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
		[ -i interface ] [ --immediate-mode ] [ -j tstamptype ]
		[ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout|out|packet-metadata-filter ]
		[ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
		[ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
		[ --time-stamp-precision precision ] [ --micro ] [ --nano ]
		[ -z postrotate-command ] [ -Z user ] [ expression ]
		[ --apple-oneline] [ -g ]
		[ --apple-md-print (metadata_arg)] [ -k (metadata_arg)]
		[ --apple-pcapng] [ -P ]
		[ --apple-md-filter meta-data-expression] [ -Q meta-data-expression ]
		[ --apple-ext-fmt n ] [--apple-arp-plain]
		[ --apple-compression n ] [--apple-truncate] [--apple-pktapv2 ]
		[ --apple-head-drop ]

オプション

interface指定

tcpdump -i <interface_name>

<interface_name>は、ifconfigコマンドで確認できます。
実行すると、パケットキャプチャが開始されます。

❯ tcpdump -i en0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on en0, link-type EN10MB (Ethernet), snapshot length 524288 bytes
17:42:57.817261 IP 192.168.10.10.44912 > mdns.mcast.net.mdns: 23505 PTR (QM)? 1.10.168.192.in-addr.arpa. (43)
17:42:57.817265 IP 192.168.10.10.57488 > mdns.mcast.net.mdns: 23506 PTR (QM)? 1.10.168.192.in-addr.arpa. (43)
17:42:57.817266 IP 192.168.10.10.50676 >mdns mdns.mcast.net.: 23507 PTR (QM)? 110.10.168.192.in-addr.arpa. (45)

---- snip ----

^C
17 packets captured
17 packets received by filter
0 packets dropped by kernel

ファイル出力

tcpdump -i <interface_name> -w <file_name>

<file_name>にファイル名を指定すると、キャプチャしたパケットをファイルに出力します。

❯ tcpdump -i en0 -w test.pcap
tcpdump: listening on en0, link-type EN10MB (Ethernet), snapshot length 524288 bytes
^C89 packets captured
89 packets received by filter
0 packets dropped by kernel

指定したファイル名でパケットが出力されて、Ctrl + Cで終了します。
出力されたファイルは、Wiresharkなどで開くことができます。

画面上に表示

tcpdump -i <interface_name> -r <file_name>

-rオプションを指定すると、ファイルに出力されたパケットを画面上に表示します。

❯ tcpdump -i en0 -r test.pcap
reading from file test.pcap, link-type EN10MB (Ethernet)
17:49:38.924218 IP 192.168.10.176.60000 > 192.168.10.117.51772: UDP, length 363
17:49:38.924220 IP 192.168.49.1.60000 > 192.168.10.117.51772: UDP, length 363
17:49:38.924222 IP 192.168.10.176.60000 > 192.168.10.117.48912: UDP, length 363

---- snip ----

カウント指定

tcpdump -i <interface_name> -c <count>

-cオプションを指定すると、指定した数のパケットをキャプチャします。

❯ tcpdump -i en0 -c 5
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on en0, link-type EN10MB (Ethernet), snapshot length 524288 bytes

-------- snip --------

5 packets captured
6 packets received by filter
0 packets dropped by kernel

Discussion