一个运行在命令行下的抓包工具.

本文整理转自:[tcpdump参数解析及使用详解](https:/

/blog.csdn.net/hzhsan/article/details/43445787)

tcpdump介绍

tcpdump 是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 适用于大多数的类Unix系统操作系统(如linux,BSD等)。类Unix系统的 tcpdump 需要使用libpcap这个捕捉数据的库就像 windows下的WinPcap。

tcpdump命令格式

Tcpdump的大概形式如下:

tcpdump –i eth0 ’port 1111‘ -X -c 3
  • X 告诉 tcpdump 命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

tcpdump 采用命令行方式,它的命令格式为:

tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]

tcpdump 参数

-a:将网络地址和广播地址转变成名字;

-d:将匹配信息包的代码以人们能够理解的汇编格式给出;

-dd:将匹配信息包的代码以c语言程序段的格式给出;

-ddd:将匹配信息包的代码以十进制的形式给出;

-e:在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;

-f:将外部的Internet地址以数字的形式打印出来;

-l:使标准输出变为缓冲行形式;

-n:指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;

-nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示

-t:在输出的每一行不打印时间戳;

-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

-vv:输出详细的报文信息;

-c:在收到指定的包的数目后,tcpdump就会停止;

-F:从指定的文件中读取表达式,忽略其它的表达式;

-i:指定监听的网络接口;

-p:将网卡设置为非混杂模式,不能与host或broadcast一起使用

-r:从指定的文件中读取包(这些包一般通过-w选项产生);

-w:直接将包写入文件中,并不分析和打印出来;

-s:snaplen snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。

-T:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

-X:告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

过滤解析包长度

tcpdump 支持 protocol[x:x] 表达式,用于指定某协议[起始偏移量:数值类型长度],

如指定IP包长度大于100:

tcpdump -i eth0 -n 'ip[2:2] > 100'

捕获tcp目标端口在10000和20000之间的包:

tcpdump  -i eth0 -n  'tcp[2:2]>10000' and 'tcp[2:2]<20000'

参考文献

最后修改:2024 年 09 月 05 日
如果觉得我的文章对你有用,请随意赞赏