如何使用Wireshark捕获Genymotion模拟器的网络流量?

17

我希望使用Wireshark捕获 Android 应用程序的 HTTP 消息。

我一直试图过滤出 Android 的 IP 地址,然后是 MAC 地址,但没有成功。 我相信这个解决方案很简单,但我还没有想出来。

2个回答

19

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

适配器1通常为vboxnet0(如果您在Ubuntu上),是一个仅限主机的适配器,用于支持主机和VM之间的本地交互。在默认的Ubuntu设置中,这是192.168.56.0网络。主机机器是192.168.56.1,而VM通常从VirtualBox内置的DHCP服务器获取192.168.56.101。此连接由Android Debug Bridge (ADB)用于将开发工具与VM连接起来。例如,这就是Eclipse ADT和Android Studio如何与VM通信以安装APK文件等的方式。当您执行adb shell时,也会通过此网络连接。若想检查开发工具如何与VM通信,请在vboxnet0(或等效适配器)上进行捕获。

Adapter 2 通常会使用NAT方式与您主机的网络连接,通常是Ubuntu上的 eth0wlan0。这为虚拟机提供了互联网访问功能。如果您想查看虚拟机如何与本地网络或互联网进行交互,请针对主机的主要网络适配器进行捕获。不幸的是,当虚拟机被NAT时,它的IP地址将与主机相同,这使得过滤变得困难。如果这造成了问题,关闭虚拟机,直接打开VirtualBox(即没有Genymotion启动器),将Adapter 2更改为“桥接适配器”,并在VM的网络配置中选择当前活动的主机适配器。如果您的本地LAN使用DHCP(很可能),这将允许虚拟机获取自己的IP地址,然后您可以在Wireshark中过滤该地址。一旦您重新启动虚拟机(从Genymotion Launcher),您就可以通过在主机上使用adb shell ifconfig找到已分配给它的地址。查找对应于VIrtualBox Adapter 2的 eth1eth0用于VirtualBox Adapter 1上的adb连接)。


1
感谢您对适配器的描述。我想捕获Andorid VM的网络消息,所以根据您的评论,我将VirtualBox中的Adapter 2更改为Bridged。使用桥接适配器后,Android无法连接到WiredSSID(没有任何适配器名称)。 - b4l4zs
您的主机所连接的网络是否使用DHCP? - Paul Ratazzi
出于某种原因,我也无法在虚拟机上获取分配的IP地址。我没有访问路由器的权限,所以可能有MAC过滤器,但我对此一无所知。 我也尝试了这个方法,但没有成功:http://scrumsofanarchy.com/capturing-traffic-from-genymotion-or-any-other-virtual-box-based-emulator-without-a-proxy/ - julien_c
嗯。由于这个答案的年代久远,我决定再试一次安装看看Genymotion是否有所改变。今天我使用的是Win10,运行Genymotion Launcher 2.11.0、VirtualBox 5.2.6,我的VM是一个运行Android 7.1.0的Nexus 5X。为了嗅探VM的Internet流量,我将Adapter 2更改为“桥接(Bridged)”,并指向我的笔记本电脑有线以太网适配器,这是我当前的连接方式。当我启动VM时,它捕获了一个与我的笔记本电脑不同的地址,我能够在以太网适配器上运行Wireshark,并过滤出VM的地址。 - Paul Ratazzi
我也刚试了一下我的WiFi适配器,似乎也可以在那里工作。顺便说一句,您可以在VM的Shell提示符处使用ifconfig检查VM的地址。应该有两个:eth0对应VirtualBox Adapter 1(这是adb连接的Host Only适配器)和eth0对应VirtualBox Adapter 2(Internet连接的NAT或桥接适配器)。 - Paul Ratazzi
显示剩余3条评论

0

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

  1. 由于Gennymotion使用Virtualbox创建虚拟环境,因此您可以在wireshark中找到列出的vboxnet0接口,选择它并记录在客户端(Genymotion)和主机(您的系统)之间流动的所有流量。

WireShark Interface List

  1. 如果你不想使用 WireShark 监控流量,你也可以使用 Fiddler 并在 Genymotion 中配置代理设置 (添加代理步骤记录在 Genymotion 文档 中) 指向 Fiddler 运行机器的 IP 地址和端口

  2. 在 Fiddler 中设置捕获流量的方式如下: Tools 菜单 > Fiddler Options > Connections,勾选 Allow Remote Computers to connect box,然后重新启动 Fiddler。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接