该命令是抓包分析工具,可以将数据包的头或者是整个包抓取下来进行分析,支持针对特定协议、主机进行过滤,同时支持逻辑操作。
#抓取本机第一个网络接口通常是eth0上所有的包 tcpdump #抓取指定指定网卡上的的所有包 tcpdump -i eth0
抓取特定主机收到的和发出的所有包,这里的IP不是说包里有这个IP,而是说抓取流经这个主机的进出所有包
# -n 是显示IP和端口,也就是不解析主机名 tcpdump -n host [IP]
抓取特定主机之间的所有IP协议数据包
# 这里的ip指的是IP协议,and表示两个主机之间 tcpdump -n ip host 192.168.51.188 and 192.168.51.164 # 扩展:获取51.188与51.164或者51.165主机之间的IP协议通信 tcpdump -n ip host 192.168.51.188 and \(192.168.51.164 or 192.168.51.165\)
参数 | 说明 |
-a | 将网络地址和广播地址转换成名字 |
-d | 将匹配数据包的代码用汇编格式输出 |
-dd | 将匹配数据包的代码用C语言格式输出 |
-n | 不把网络地址转换成名字 |
-nn | 以IP和端口来显示 |
-t | 不打印时间戳,默认输出每行开头是时间戳 |
-v | 输出详细信息 |
-vv | 输出详细的报文信息 |
-c | 在收到多少数据包后,停止获取。 |
-i | 指定监听的网络接口 |
-w | 将获取的信息写入文件而不是输出到控制台 |
-e | 每行打印输出中包含数据包的数据链路层头信息 |
-x | 打印每个包的头信息,以16进制打印出每个包的数据。 |
-xx | 打印每个包的头信息,以16进制打印出每个包的数据,包含数据链路层的头部。 |
-X | 当分析和打印时,会打印每个包的头信息,同时以16进制和ASCII码形式打印每个包的数据,但是不包括链路层头信息。 |
-XX | 当分析和打印时,会打印每个包的头信息,同时以16进制和ASCII码形式打印每个包的数据,包括链路层头信息。 |
类型关键字:
传输方向:
协议关键字:fddi、ip、tcp、udp、arp、rarp等。 |
获取主机51.188除了和51.164之外的所有IP通信
tcpdump -n ip host 192.168.51.188 and ! 192.168.51.164
获取源IP为172.16.100.212到本机的IP请求,并且不解析主机名,获取2个数据包就停止
tcpdump -n -c 2 ip src 172.16.100.212
获取指定主机指定端口的IP协议包
tcpdump -n -c 2 host 192.168.51.188 and port 80
抓取一个HTTP包
0x4745表示“GET”中的GE,0x4854表示“HTTP”中的HT
tcp[20:2],表示长度
tcpdump -XvvennSs 0 -i em1 -c 5 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
时间: 2024-10-06 01:10:44