如何用WireShark抓取Genymotion模拟器的流量?

How to capture the traffic of Genymotion Emulator with WireShark?

我想用 wireshark 捕获 Android 应用程序的 http 消息之一。

我试图过滤到 android 的 IP 地址,然后是 mac 地址但没有成功。 我确定解决方案很简单,但我还想不出来。

如果您使用 Genymotion,捕获主机(即您的机器)和访客(即 Genymotion 模拟器)之间的流量非常简单。

  1. 由于 Gennymotion 使用 Virtualbox 创建虚拟环境,您可以在 wireshark 中找到 vboxnet0 接口,select 它并记录来宾(Genymotion)和之间的所有流量主机(您的系统)。

  1. 如果你不想使用 WireShark 来监控流量,你也可以使用 Fiddler and configure proxy settings in Genymotion (Adding Proxy steps documented in Genymotion docs) towards Fiddler-running machine IP address and port.

  2. 并在 Fiddler 中捕获流量进行此设置: Tools menu > Fiddler Options > Connections 并勾选 Allow Remote Computers to connect box,然后重新启动 Fiddler。

Genymotion 虚拟机在底层 VirtualBox 配置中有两个网络适配器。您应该捕捉哪一个取决于您要寻找什么。此外,一些细节(适配器名称等)取决于您使用的 OS。但是,概念是相同的。

适配器 1,如果您使用 Ubuntu,通常 vboxnet0,是用于支持 local 的仅主机适配器 主机和虚拟机之间的交互。在默认 Ubuntu 设置中,这是 192.168.56.0 网络。主机是 192.168.56.1 并且 VM 通常最终从 VirtualBox 的内置 DHCP 服务器获得 192.168.56.101。 Android 调试桥 (ADB) 使用此连接将开发工具与 VM 连接起来。例如,这就是 Eclipse ADT 和 Android Studio 能够与 VM 通信以安装 APK 等的方式。当您执行 adb shell 时,您也通过该网络进行连接。 如果您想检查您的开发工具如何与您的 VM 通信,请在 vboxnet0(或同等级别)上捕获。

适配器 2 通常 NAT 到主机的网络连接,通常类似于 Ubuntu 上的 eth0wlan0。这将为 VM 启用 Internet 访问。 如果您想查看您的 VM 如何与本地网络或 Internet 交互,请针对您主机的主网络适配器进行捕获。不幸的是,当 VM 被 NAT 时,您的 VM 流量将具有相同的流量IP作为您的主机,使其难以过滤。如果这导致问题,请关闭您的 VM,直接打开 VirtualBox(即,没有 Genymotion 启动器),将 Adapter 2 更改为 "Bridged Adapter",并将 select VM 网络配置中的当前活动主机适配器。如果您的本地 LAN(可能)使用 DHCP,这将允许 VM 获得它自己的 IP,然后您可以在 Wireshark 中对其进行过滤。重新启动 VM 后(从 Genymotion 启动器),您可以从主机中找到用 adb shell ifconfig 分配给它的地址。寻找对应于 VIrtualBox 适配器 2 的 eth1eth0 用于通过 VirtualBox 适配器 1 的 adb 连接)。