tcpdump常用抓包命令
发布时间:2022-03-29 22:17:02
tcpdump常用抓包命令
NAME
tcpdump - dump traffic on a network
SYNOPSIS
tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
[ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
[ --number ] [ -Q in|out|inout ]
[ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision=tstamp_precision ]
[ --immediate-mode ] [ --version ]
[ expression ]
常用的参数:
-D:列出可用于抓包的接口;
-l :使标准输出变为缓冲行形式;
-n:不把网络地址转换成名字;
-c:在收到指定的包的数目后,tcpdump就会停止;
-i:指定监听的网络接口;(如果没有指定可能在默认网卡上监听,需要指定绑定了特定IP的网卡);
-s:指定记录package的大小,常见 -s 0 ,代表最大值65535,一般linux传输最小单元MTU为1500;
-w:直接将包写入文件中,配合 -G time 选项可以按照固定的时间间隔切割输出的文件;
-X:直接输出package data数据,默认不设置,只能通过-w指定文件进行输出;
Unix、Mac下tcpdump命令的参数有所不同,在具体使用过程中要查阅文档进行相应的调整。如Mac下的命令格式:NAME tcpdump - dump traffic on a networkSYNOPSIS tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ] [ -c count ] [ -C file_size ] [ -G rotate_seconds ] [ -F file ] [ -i interface ] [ -j tstamp_type ] [ -k (metadata_arg) ] [ -m module ] [ -M secret ] [ --number ] [ -Q in|out|inout ] [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ -Q packet-metadata-filter ] [ -Q in|out|inout ] [ --time-stamp-precision=tstamp_precision ] [ --immediate-mode ] [ --version ] [ expression ]
过滤端口:
# tcpdump -i eth0 port 80
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:32:25.014599 IP iZ2zeb7o9hu1q8bvuj8olgZ.41196 > 100.100.30.26.http: Flags [.], seq 2657951256:2657954104, ack 2775895637, win 675, length 2848: HTTP
11:32:25.014644 IP iZ2zeb7o9hu1q8bvuj8olgZ.41196 > 100.100.30.26.http: Flags [P.], seq 2848:3086, ack 1, win 675, length 238: HTTP
11:32:25.047036 IP 100.100.30.26.http > iZ2zeb7o9hu1q8bvuj8olgZ.41196: Flags [.], ack 1424, win 1424, length 0
11:32:25.047074 IP 100.100.30.26.http > iZ2zeb7o9hu1q8bvuj8olgZ.41196: Flags [.], ack 2848, win 1413, length 0
11:32:25.047080 IP 100.100.30.26.http > iZ2zeb7o9hu1q8bvuj8olgZ.41196: Flags [.], ack 3086, win 1412, length 0
过滤主机/IP:
tcpdump -i eth1 host 172.16.7.206
抓取所有经过网卡1,目的IP为172.16.7.206的网络数据
过滤特定协议:
tcpdump -i eth1 udp
抓取所有经过网卡1,协议类型为UDP的网络数据
抓取本地环路数据包:
tcpdump -i lo udp // 抓取UDP数据
tcpdump -i lo udp port 1234 // 抓取端口1234的UDP数据
tcpdump -i lo port 1234
特定协议特定端口:
tcpdump udp port 1234
抓取所有经过1234端口的UDP网络数据
抓取特定类型的数据包:
#tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'
抓取所有经过网卡1的SYN类型数据包
#tcpdump -i eth1 udp dst port 53
抓取经过网卡1的所有DNS数据包(默认端口)
逻辑语句过滤:
#tcpdump -i eth1 '((tcp) and ((dst net 172.16) and (not dst host 192.168.1.200)))'
抓取所有经过网卡1,目的网络是172.16,但目的主机不是192.168.1.200的TCP数据
抓包存储:
tcpdump -i eth1 host 172.16.7.206 and port 80 **-w** /tmp/xxx.cap
抓取所有经过网卡1,目的主机为172.16.7.206的端口80的网络数据并存储
可以用Wireshark来分析收集到的文件
tcpdump -vnn port 80 -w tcp80.cap