1. 基本命令
(1)列出可监控的网卡接口(any 包含所有 active 的接口)
	tcpdump --list-interfaces
	tcpdump -D
(2)监控 any 接口且只输出前 5 条记录(-c 参数 - count)
	tcpdump -i any -c 5
(3)默认 tcpdump 会将 ip/port 解析为 name,禁用该解析(-n 和 - nn 参数),防止 dns 查找
	tcpdump -i any -c5 -nn
 
 
 
2. 输出说明
tcpdump 可以抓取和解析各种不同的协议,如 TCP, UDP, ICMP 等等。
具体可以参考:http://www.tcpdump.org/manpages/tcpdump.1.html#lbAG
 
以 TCP 为例,通常是返回下面这种格式:
08:41:13.729687 IP 192.168.64.28.22 > 192.168.64.1.41916: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 372
 
说明:
(1)08:41:13.729687:代表接收到该数据包的时间戳(本地时钟)
(2)IP:代表网络层协议,这里指 IPV4,如果是 IPV6,则显示 IP6
(3)192.168.64.28.22:源 ip 地址与端口
(4)192.168.64.1.41916:目标 ip 地址与端口
(5)Flags [P.]:TCP flags,这里也可以是组合在一起的值,比如 [S.] 代表 SYN-ACK 包
	Value	Flag Type	Description
	S	SYN	Connection Start
	F	FIN	Connection Finish
	P	PUSH	Data push
	R	RST	Connection reset
	.	ACK	Acknowledgment
(6)seq 196:568:这次捕获的数据包包含字节从 196 字节到 568 字节(this flow)
(7)ack 1:这里是 1,因为这是发送数据的一方。如果是接收数据的一方,这个字段表示该流中的下一个预期字节(比如下一个数据包 ack 就应该为 568)
(8)win 309:代表接收缓冲区中可用的字节数,
     参考:https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml
(9)length 372:数据包长度,payload 数据的字节长度,即 568 - 372
 
 
 
 
3. 筛选数据包
(1)根据协议筛选:如筛选 icmp 的数据包,可以在另一个终端中尝试使用 ping 命令测试(ping 基于 icmp 协议)
	tcpdump -i any -c5 icmp
(2)根据主机筛选:抓取与指定主机通信的数据包
	tcpdump -i any -c5 -nn host 54.204.39.132
(3)根据所需服务或端口筛选:比如捕获 Web(HTTP)服务相关的数据包或者 https 443 端口、dns 53 端口等
	tcpdump -i any -c5 -nn port 80
(4)根据 source ip/hostname 筛选:
	tcpdump -i any -c5 -nn src 192.168.122.98
	tcpdump -i any -c5 -nn dst 192.168.122.98
(5)复杂表达式:如 source IP 为 192.168.122.98 且 service HTTP only 或者更复杂一些
	tcpdump -i any -c5 -nn src 192.168.122.98 and port 80
	tcpdump -i any -c5 -nn "port 80 and (src 192.168.122.98 or src 54.204.39.132)"
 
 
 
4. 检查包内容
上面的都是检查数据包头(header)信息。
tcpdump 提供两个额外标志来查看包内容:
	-x   打印 16 进制内容
	-A   打印 ASCII 内容
如: tcpdump -i any -c10 -nn -A port 80
这个对于跟踪 http 的 api 调用有些作用,对于加密连接没有太大作用
 
 
 
5. 将捕获内容保存到文件
这个很方便,比如我们可以以批处理模式捕获夜里数据包,方便第二天早晨做分析。
比如:	tcpdump -i any -c10 -nn -w webserver.pcap port 80
webserver.pcap 是我们保存的文件名字,.pcap 后缀代表 “packet capture” 并且是约定的一种包文件格式。
webserver.pcap 是二进制文件,不能以文本方式浏览,需使用命令打开:tcpdump -nn -r webserver.pcap。
 
比如:  tcpdump -nn -r webserver.pcap src 54.204.39.132
持续捕获源 ip 为 54.204.39.132 的数据包
 
 
 
 
附:
tcpdump 官网:http://www.tcpdump.org/#
tcpdump 手册:http://www.tcpdump.org/manpages/tcpdump.1.html
带 GUI 图形界面:https://www.wireshark.org/  或 https://www.telerik.com/fiddler
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Jalen Chu 微信支付

微信支付

Jalen Chu 支付宝

支付宝

Jalen Chu 公众号

公众号