安装:yum install tcpdump
截获某IP的主机的网络数据包:
tcpdump host 192.168.0.123
TCP协议要建立连接要经过3次“握手”,截取的数据包也是从3次握手开始,可以看到前三个包的状态(Flags)分别是:
[S]、[S.]、[.]
cron可以定时执行抓包的时间
抓包命令:
tcpdump -c 100000 -w /home/kang/Desktop/test.txt -n
注释:抓10万个包,存在test.txt文件里,-n的意思是不对原地址和目的地址进行DNS查询
读文件命令:
tcpdump -r /home/kang/Desktop/test.txt -X -vv
注释:-r是读文件,-X是以ASCII码显示内容。-VV是以详细的报文信息显示
参数:
-i<interface> 接口
-v 详细
-vv 更加详细
-x 以十六进制显示数据包
-X 以ASCII码显示数据包
-n 不查询DNS
-F<file> 从指定的文件读取表达式
-D 显示可用的网络接口
-s 设置捕获数据包的长度
tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的,所以通常的解决办法是显示用带-w的tcpdump保存到i文件中,再使用wireshark进行解码分析,并且定义过滤规则,以避免捕获的数据包铺满整个硬盘。
tcpdump为了方便wireshark工具认识,保存的文件名最好是xx.pcap后缀。例如:
tcpdump -nn -s 0 host 192.168.0.120 and port -80 -w wireshark.pcap
tcpdump分析http请求:
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745为“GET”前两个字母“GE”,0x4854为“HTTP”前两个字母“HT”
101.227.172.51.80
115.25.210.10.80
61.135.132.59.80
222.23.55.208.80
61.135.132.59
220.181.11.98
ip/dns解析:http://dns.aizhan.com/,查询到DNS解析的URL和地址