0

我对制作一个能够从 Android 设备捕获网络流量的 C# 程序很感兴趣。使用 ADB,我能够将流量从设备转发到 Windows 标准输出。然后,输出将被转发到预先配置为监听标准输出的 Wireshark。

以下是我正在使用的命令,以防其他人需要

在第一个 CMD 窗口中

adb shell "tcpdump -n -s 0 -w - | nc -l 11233"

在第二个 CMD 窗口中

adb forward tcp:11233 tcp:11233 && nc 127.0.0.1 11233 | wireshark -k -S -i -

这是我的问题。

我正在使用 SharpPcap 在我的程序中捕获网络流量。目前,我能够从我的网络适配器(即以太网或 WiFi)获取数据包。但正如您所见,在此命令之后,网络流量从 Android 设备转发到标准输出

adb forward tcp:11233 tcp:11233 && nc 127.0.0.1 11233

此命令的输出将作为以下命令的输入,因为 Wireshark 配置为通过“-i -”侦听标准输出

每次执行以上 2 条命令,都会打开一个 Wireshark 窗口实例来抓包。这不能应用于我的程序。

这个想法是使用 SharpPcap 打开一个表单以从标准输出中捕获数据包

有谁知道如何做到这一点?也欢迎任何其他想法。

非常感谢!!!

4

1 回答 1

0

您可以使用mkfifonc写入fifo而不是stdout来创建fifo吗?然后只是从fifo而不是stdin读取wireshark?

mkfifo sharkfin
wireshark -k -S -i sharkfin &
adb forward tcp:11233 tcp:11233 && nc 127.0.0.1 11233 > sharkfin

如果wireshark停止捕获并且您不希望它,您也可以在启动wireshark后发出以下命令以确保wireshark永远不会收到EOF。

cat > sharkfin &
于 2017-02-22T16:06:29.917 回答