🍣
m3macでtcpdumpを使ってパケットキャプチャする
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