TCPDUMP 抓包和 Wireshark 分析
做了测试才发现我是多么讨厌测试......但是也花了功夫了,就记录一下吧。
tcpdump 抓包并保存到文件中
常见命令:
-i eth0
:指明 eth0 网卡host hostname
:截获指定 hostname 发出和接收的所有数据src
:截获发出的所有数据dst
:截获接收的所有数据-w
:保存为文件
由于工作中既需要将 tcpdump 的结果打印,又需要将结果保存供 Wireshark 分析,搜索许久后终于实现了。
tcpdump -s 0 -U -w - | tee target.$(date +%Y-%m-%d-%H-%M-%S).pcap | tcpdump -r -
其中:
-w
:告诉 tcpdump 将二进制数据写入 stdout-s 0
:抓取完整的数据包tee
:将该二进制数据写入文件并写入其自己的 stdout-r
:告诉第二个 tcpdump 从它的数据中获取它的数据 stdin-U
:使数据包在收到后立即写入
docker 容器内抓包
项目采用 docker 部署的时候,若不指明网卡则可能得不到想要的结果,有三种方法:
- 直接进入容器
- 找到容器对应的虚拟网卡,参数
-i
指明网卡 nsenter
命令在宿主机上进入容器的网络空间
第 2 种 方法参考底部链接,我个人更喜欢第 3 种方法,详细命令如下:
# 获取容器进程 pid
docker inspect --format {{.State.Pid}} ContainerId
# 进入容器的网络空间
nsenter -n --target pid
此时,tcpdump 抓取的只是容器内的数据,其只对当前窗口有效。
Wireshark 分析 grpc 协议
后续用到再补充吧,详细参考底部链接,大致步骤为:
- 添加 proto 文件;
- 解码为 http2 协议
其他工具
- 工作流带宽统计:
if top
- 漏洞扫描工具: OWASP ZAP
参考
- wireshark分析grpc协议 | zhanglonglong
- tcpdump 抓取docker网络包_made4971
- 使用Wireshark分析gRPC消息| gRPC
- tcpdum+wireshark抓包分析 | cocoo前端笔记
- 如何让 tcpdump 将适当的数据写入文件和标准输出- Stack Overflow
Last modified on 2021-05-31