首页 > 代码库 > tcpdump抓包

tcpdump抓包

tcpdump简单来说就是输出网络上的数据报文。可以根据使用者的选择来对网络上的数据报文进行截获并进行分析。

可以根据网络协议、物理接口、ip地址和端口号等各种条件进行过滤,还可以对抓获报文大小进行控制,等等。

1. 抓取报文

最简单的开始捕获报文的方法是直接使用tcpdump并指定捕获的网卡名称即可。

tcpdump -i eth0

可以使用ctrl+c来结束捕获程序。tcpdump的可视化输出功能有限。通常是捕获报文并保存下来,然后使用图形用户界面软件wireshark来分析。

可以使用-w选项来指定文件名即可将报文保存下来。

tcpdump -i eth0 -s 1500 -w aaa.cap

tcpdump有很多参数来控制在哪里捕获,如何捕获,以及捕获文件如何保存处理等选项,

-i interface 指定监听的网卡

-s  指定每个报文中截取的数据长度,不是缺省的68字节。如果仅仅对报头感兴趣,可以不使用该选项,指定为0说明不限制报文长度,而是捕获整个报文。一般以太网的MTU值为1500,因此指定长度为1500即可。

-w filename  报文保存到文件

-c 当收到指定报文个数后退出

-n 不要将IP地址和端口号进行转换,转换需要CPU时间

-G <rotate_seconds> 每隔指定的时间,将捕获的报文循环保存为新文件。需要-w配合使用,并指定时间格式才能循环保存文件,否则覆盖原来文件。常用事件格式%d(每月中的第几天),%H(当前的小时时间),%M(当前的分钟时间),%S(当前的秒时间)。

-D 输出tcpdump可以捕获的接口列表,包含接口编号和接口名称

-v 当解析或打印时输出详细的信息。例如报文的生存时间TTL、ID等IP报文选项。

-r 读取有-w创建的报文

tcpdump -i eth0 -s 1500 -G 60 -w  wang%H%M%s.pcap

tcpdump -i eth0 -n -v -c 500

2. 匹配规则

只有符合表达式要求的报文才会被抓取到。

 

tcpdump抓包