1 tcpdump 是什么?
tcpdump 可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、端口的过滤,并提供 and、or、not 等逻辑语句来帮助你过滤掉不关注的信息。 通常用 tcpdump 抓包数据输出到文件(如在 linux 服务器上抓包数据),把文件下载拖到工作电脑 Wireshark 软件上配合分析(Wireshark 使用自行白度,也可以使用 wireshark 直接抓包分析)。
2 tcpdump 常用命令参数
还有非常多的参数,只简单备注一些常用的
- -i <网络界面> 使用指定的网络截面送出数据包。
- -w <数据包文件> 把数据包数据写入指定的文件。
- -v 详细显示指令执行过程。
- -n 不把主机的网络地址转换成名字。
3 tcpdump 抓包 wss,配合 Wireshark 分析
//ip 瞎写的哈,脱敏
tcpdump -i en0 '((src or dst host 163.235.251.6) or (src or dst host 163.235.251.7) or (src or dst host 163.235.251.8))' -w wss-log.cap
- (1)eth0 是网卡,可以通过 ifconfig 查看你的网卡。
- (2)((src or dst host 163.235.251.6) or (src or dst host 163.235.251.7) or (src or dst host 163.235.251.8)) 这一段表示,一次监听抓取多个远端的主机地址,src or dst 可以把交互都抓出来,就是从这台发出来的,到这台回复的都可以抓出来,可以看到 TCP 完整的握手挥手过程。
- (3)-w wss-log.cap 这个是把抓取的日志,写到 wss-log.cap,文件名以.cap 结尾。
- (4)工作电脑下载 Wireshark 并打开,把上面的文件 wss-log.cap 拖到 Wireshark 界面即可看到协议交互过程。
- (5)下面是一次 wss 的抓包(websocket+TLS),图片信息做脱敏处理。
4 tcpdump 抓包白度,配合 Wireshark 分析)
(1)抓包命令
tcpdump -i en0 'src or dst host www.baidu.com' -w baidu.cap
(2)访问下白度
curl www.baidu.com
(3)Wireshark 分析下抓的数据
5 tcpdump 其他一些用例
1 抓取经过指定端口的数据包,不指定网卡
tcpdump -vn -i any port 7280 -w tcptemp.cap
- (1)-i interface 指定 tcpdump 需要监听的接口,'any' 这个虚拟网络接口可被用来接收所有网络接口上的数据包。
- (2)-v 当分析和打印的时候,产生详细的输出。比如包的生存时间,标识,总长度以及 IP 包的一些选项。这也会打开一些附加的包完整性检测,比如对 IP 或 ICMP 包头部的校验和。
- (3)-n 不对地址 (比如主机地址,端口号) 进行数字表示到名字表示的转换。
2 指定主机,ip 抓包
tcpdump tcp port 23 and host 163.235.251.6
6 小结
tcpdump 可以将网络中传送的数据包完全截获下来提供分析。通常用 tcpdump 抓包数据输出到文件(如在 linux 服务器上抓包数据),把文件下载拖到工作电脑 Wireshark 软件上配合分析。本文记录了最简单的一些 case 使用,起到抛砖引玉的作用。