tcpdump抓包实时发送到远程主机解析

本文最后更新于:2025年11月19日 下午

将tcpdump抓到的包实时发送到另一台主机上,另一台主机通过wireshark实时解析。

使用场景

嵌入式调试时抓包,有时只能在机内使用tcpdump,如果直接dump到终端,分析不方便。如果直接保存到内存,内存又怕不够。需要一种把抓到的包实时发送到远端保存解析的方法。

实现方法

原理:
tcpdump抓包保存到标准输出,通过管道发送到远程主机。远程主机wireshark通过管道从标准输入读取数据解析。

实现1

解析的主机上先运行:

1
nc -l -p 22122 | wireshark -k -i -

-k -i - 表示立即开始从标准输入抓包

然后在抓包的主机上运行抓包:

1
tcpdump -i eth0.1 -U -w - | nc 192.168.10.123 22122

-w -表示保存到标准输出
-U表示使用包缓存,即收到一个包立即写入。而不是等到缓冲区满。

实现2 – 更简洁(推荐)

先在抓包的主机上运行:

1
tcpdump -i eth0.1 -U -w - | ./nc -l -p 22122 &

然后在解析的主机上运行:

1
wireshark -i TCP@192.168.10.1:22122 -k

windows上wireshark处理

命令行参数是一样的,只是windows的cmd中默认找不到wireshark,需要这样。
(1)右键wireshark图标,打开文件夹所在位置
(2)在文件夹中右键打开命令行
(3)输入命令即可

1
PS C:\Program Files\Wireshark> .\Wireshark.exe -i TCP@192.168.2.1:22122 -k

rpcapd的方式

windows上的wireshark有一个远程接口选项卡。
可以在抓包主机上运行如下程序。然后解析的windows wireshark中添加远程接口,抓包即可。

1
2
# -d daemon, -n 不认证,默认端口2002
rpcapd -d -n

rpcapd是libpcap库中的一个程序,可自己编译。
接口列表处要卡几秒。


人生苦短,远离bug Leon, 2024-05-28

tcpdump抓包实时发送到远程主机解析
https://leon0625.github.io/2024/05/28/d3264814853a/
作者
leon.liu
发布于
2024年5月28日
许可协议