tcpdump——网络抓包工具


发布于 2024-07-23 / 26 阅读 / 0 评论 /
TCPDump可以将网络中传送的数据包完全截获下来提供分析。

tcpdump和wireshark都是网络抓包工具,wireshark有桌面版,而tcpdump只有命令行。

1.tcpdump命令行说明

tcpdump支持以下命令行选项

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

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

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

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

-D 显示所有可用网络接口的列表

-e  在输出行打印出数据链路层的头部信息

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

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

-L 列出指定网络接口所支持的数据链路层的类型后退出

-n  不把网络地址转换成名字,即不做反向域名解析

-q 简洁地打印输出。即打印很少的协议相关信息, 从而输出行都比较简短

-t 在每行的输出中不输出时间

-tt 在每行的输出中会输出时间戳

-ttt 输出每两行打印的时间间隔(以毫秒为单位)

-tttt 在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)

-v 产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。

-vv 产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。

-vvv 产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来

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

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

-i  指定监听的网络接口

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

-w  直接将数据报写入文件中,并不分析和打印出来

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

-s tcpdump 默认只会截取前96字节的内容,要想截取所有的报文内容,可以使用-s number,number就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。

-S seq ack 使用绝对序列号,而不是相对序列号

-Z 后接用户名,在抓包时会受到权限的限制。如果以root用户启动tcpdump,tcpdump将会有超级用户权限

2.tcpdump使用场景

有以下常用场景。

2.1.tcpdump -i eth0

捕获指定接口(网卡)的数据包 可通过 netstat -i查看网卡设备

2.2.tcpdump -i eth0 -c 3

捕获指定个数的数据包(3个数据包)

2.3.tcpdump -A -i eth0

用ASCII码格式输出捕获的数据包

2.4.tcpdump -D

显示可用的系统接口

2.5.tcpdump -XX -i eth0

用十六进制和ASCII码格式显示捕获的数据包

2.6.tcpdump -w tempDump.pcap -i eth0

把捕获的数据包写入到一个.pcap后缀的文件中

2.7.tcpdump -r tempDump.pcap

读取捕获数据包文件的内容

2.8.tcpdump -n -i eth0

单个 n 表示不解析域名,直接显示 IP

2.9.tcpdump -i eth0 tcp

捕获TCP类型的数据包

2.10.tcpdump -i eth0 port 22

捕获指定端口(这里是22)的数据包

2.11.tcpdump -i eth0 src 192.168.0.101

捕获请求源是 192.169.12.101 的数据包

2.12.tcpdump -i eth0 dst 192.168.0.101

捕获指定目的IP是192.168.0.101的数据包

2.13.tcpdump -i eth0 dst host 192.168.0.101 and port 8080 -w data.pcap

抓取指定网卡,指定IP和端口的数据包 并写入到data.pcap文件中

2.14.tcpdump host 192.168.0.101 and 192.168.0.102 -w out &

后台抓取两主机之间的数据

2.16.tcpdump -nn

单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口。这样不仅方便查看 IP 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度