首页 » 网络 » 用tcpdump抓包

tcpdump命令行参数

-D
查看所有网络接口。输出类似ifconfig -a。
-L
输出网卡类型并退出。
-i interface
从指定端口抓包。-i any 表示从所有接口抓包。
-x
输出数据包的内容。
-A
以ASCII码打印数据包内容。抓取Web页面时有用。
-t
不打印时间戳。
-F file
从文件读取过滤表达式,忽略命令输入的表达式。
-l
将输出行缓存。
-n/-nn
对ip/port不作DNS/名字转换。
-c N
捕获到N个数据包后就退出。
-w file
将输出写入文件。

-l参数的用法:

$ tcpdump -l | tee /tmp/tcpdump
$ tcpdump -l > /tmp/tcpdump | tail -f /tmp/tcpdump

打印HTTP报文的内容

目标:过滤http协议报文,并以人可读形式输出其内容:

# tcpdump -A -n -nn 'tcp port 80 and (((ip[2:2] - ((ip[0] & 0xf) << 2)) - ((tcp[12] & 0xf0) >> 2)) != 0)'

输出如(如果嫌这个输出太冗余,可以考虑使用tshark):

00:15:05.476081 IP 125.39.16.85.51442 > 173.255.196.50.80: Flags [P.], seq 733:1453, ack 173, win 4241, options [nop,nop,TS val 1632185 ecr 580802270], length 720
E....^@.(.0.}'.U...2...Pa+.P6^...... ......
....".V.GET /berlinix.js HTTP/1.1
Host: www.berlinix.com
...

00:15:05.476349 IP 173.255.196.50.80 > 125.39.16.85.51442: Flags [P.], seq 173:344, ack 1453, win 1089, options [nop,nop,TS val 580802543 ecr 1632185], length 171
E.....@.@.m....2}'.U.P..6^..a+. ...A.......
".W.....HTTP/1.1 304 Not Modified
Date: Tue, 12 Jun 2012 04:15:05 GMT
...

分享

0