如何在Genymotion / Android Emulator上嗅探非HTTP流量(套接字)?

时间:2018-01-02 14:11:19

标签: android android-emulator genymotion socks packet-sniffers

我试图对一个Android应用的流量进行逆向工程,并且使用套接字,xmpp或其他内容,但在某些功能上不使用http(s)。我知道这是因为Charles没有看到一些请求,但数据肯定来自服务器(例如聊天消息)。

Android允许设置http(s)代理,而不是socks。 ProxyDroid并不适用于genymotion,因为它的x86和ProxyDroid并不支持genymotion。在genymotion上尝试过Drony app,据说应该允许使用socks代理,但是一旦我尝试打开它,整个模拟器就会重启(可能会崩溃)。

那么我如何在Genymotion / Android模拟器上嗅探/跟踪/检查套接字流量?

1 个答案:

答案 0 :(得分:3)

通过在主机端执行此操作可能会更好运,即从运行Genymotion的Windows / Mac / Linux计算机上运行。

基础知识

  1. 安装Wireshark

  2. 启动Wireshark并选择将您连接到Internet(或您感兴趣的服务器)的网络接口。对我来说,它是wlp1s0

  3. Selecting the capture interface in Wireshark

    1. 通过在过滤行中输入ip.dst == <server-ip>,告诉Wireshark您只希望流量从您的设备传输到您感兴趣的服务器。现在返回您的设备并使用与服务器通信的应用程序。流量应出现在Wireshark中。我在这里浏览我的网站,其IP地址是5.135.144.176:
    2. Watching traffic with Wireshark

      请注意,如果Wireshark知道服务器使用的协议,您可以对其进行过滤。以下是与http过滤器相同的输出:

      Watching HTTP traffic with Wireshark

      仅观看来自设备的流量

      使用当前设置,如果您从主机访问服务器,Wireshark也会记录此流量。为避免这种情况,您需要执行以下操作:

      1. 在桥接模式下配置设备:停止设备,打开其设置对话框并选择Bridge:
      2. Configuring Genymotion in Bridge mode

        1. 获取设备IP地址:重启设备,打开&#34;设置&#34;申请并转到&#34;关于手机&gt;状态&#34;,记下IP地址:
        2. The Android Status screen

          1. 将此IP地址添加到wireshark中的过滤行,如下所示:ip.src == <the-device-ip> and ip.dst == <the-server-ip>