你如何监控iPhone上的网络流量?

时间:2009-01-12 21:20:45

标签: iphone security networking wireshark

我们正在寻找一种类似Wireshark的工具,可以在与第三方合作之前在iPhone上测试第三方应用程序。有什么建议吗?

13 个答案:

答案 0 :(得分:44)

如果您只想查看HTTP / HTTPS流量,那么中间人代理就像其他答案所建议的那样,是一个很好的解决方案。

数据包嗅探的最佳解决方案(虽然它仅适用于实际 iOS设备,而不是模拟器)我发现使用rvictlThis blog post有一个很好的写作。基本上你做:

rvictl -s <iphone-uid-from-xcode-organizer>

然后你用Wireshark(或你最喜欢的工具)嗅探它创建的界面,当你完成时关闭界面:

rvictl -x <iphone-uid-from-xcode-organizer>

这很好,因为如果你想要对模拟器进行数据包嗅探,你也不得不通过流量到达本地Mac,但是rvictl创建了一个虚拟界面,只显示来自iOS的流量您已插入USB端口的设备。

注意:这仅适用于Mac。

答案 1 :(得分:36)

你没有指定你使用的平台,所以我认为它是Mac; - )

我所做的是使用代理。我使用SquidManSquid

的独立实现

我在Mac上启动SquidMan,然后在iPhone上我在General / Wifi Settings中输入Proxy params。

然后我可以在Console App中查看HTTP流量,查看squid-access.log

如果我需要更多信息,我会切换到tcpdump,但我认为WireShark也应该工作。

答案 2 :(得分:21)

我使用Charles Web Debugging Proxy费用但是他们有试用版。

如果您的iPhone / iPad与Mac共享相同的Wifi网络,则设置非常简单。

  1. 在Mac上安装Charles
  2. 获取Mac的IP地址 - 使用Mac“网络实用程序”
  3. 在iPhone / iPad上打开Wifi设置,然后在“HTTP下” 代理“更改为手动并从步骤(2)输入IP,然后输入端口 至8888(查尔斯默认港口)
  4. 打开Charles并在“代理设置”对话框下确定 勾选“启用Mac OS X代理”和“使用HTTP代理”
  5. 您现在应该看到Charles
  6. 中出现的流量
  7. 如果您想查看HTTPS流量,您需要执行额外的2个步骤下载 Charles Certificate Bundle然后将.crt文件通过电子邮件发送给您 iPhone / iPad并安装。
  8. 在“代理设置对话框SSL”选项卡中,添加特定的https顶部 您希望使用端口443嗅探的级别域。
  9. 如果您的Mac和iOS设备不在同一个Wifi网络上,您可以使用“系统偏好设置”中的“共享”下的“Internet共享”选项将Mac设置为Wifi路由器。然后,您将设备连接到“Wifi”网络,并按照上述步骤操作。

答案 3 :(得分:16)

通过代理运行它并使用Wireshark监控流量。

答案 4 :(得分:13)

适用于Mac OS X

  1. 安装Charles Proxy
  2. 在Charles转到代理&gt;代理设置。它应该显示HTTP代理端口(默认为8888)。

  3. 对于Windows

    1. 安装Fiddler2
    2. 工具 - &gt;提琴手选项 - &gt;连接并选中“允许远程计算机连接”

    3. 常规设置

      1. 转到设置&gt; Wifi&gt; i符号&gt;在底部代理&gt;设置为手动,然后为服务器将您正在使用的计算机放在IP地址上,对于端口放置8888,因为这是每个应用程序的默认值

      2. ARP欺骗

        最后一节的一般说明,如果您想要嗅探所有网络流量,请使用ARP spoofing将所有流量从iOS转发到笔记本电脑/台式机。 ARP欺骗有多种工具,需要对所有细节进行研究。这使您可以看到每一盎司的流量,因为您的路由器将所有用于iOS设备的数据路由到笔记本电脑/台式机,然后您将这些数据转发到iOS设备(自动)。

        请注意我只推荐这作为最后的手段。

答案 5 :(得分:9)

我不知道你的要求究竟是什么,这就是我从iPhone上看到的包装:在以太网上连接mac,通过机场共享网络并将iPhone连接到无线网络。在mac上运行Wireshark或Packet Peeper。

答案 6 :(得分:9)

在越狱的iPhone / iPod上,“tcpdump”和“pirni”都可以很好地捕获流量 - 可在cydia存储库中找到。通过将捕获转移到另一台机器并使用wireshark之​​类的东西来完成对这些数据的分析。然而,鉴于这些工具似乎正在进行积极的开发,iPhone可能很快就会处理它。

答案 7 :(得分:8)

我找到的最佳解决方案是Works:

通过USB连接您的设备

然后输入以下命令:

  1. rvictl -s UDID - (设备20个字符的ID,你可以在iTunes中找到4t或在Xcode中找到组织者)

  2. sudo launchctl list com.apple.rpmuxd

  3. sudo tcpdump -n -t -i rvi0 -q tcp
    或者只是sudo tcpdump -i rvi0 -n

  4. 如果rvictl无法正常安装Xcode

    欲了解更多信息: Remote Virtual Interface

    http://useyourloaf.com/blog/2012/02/07/remote-packet-capture-for-ios-devices.html

答案 8 :(得分:6)

这是另一种方式http://www.tuaw.com/2011/02/21/how-to-inspect-ioss-http-traffic-without-spending-a-dime/

我没有看到Roger Nolan的回复,上面的链接与使用不同工具的工作流程相同。

答案 9 :(得分:3)

取决于您想要做什么,通过代理运行它并不理想。只要数据包没有被篡改,透明代理就可以正常工作。

我准备将在iPhone 4.3.x上从iPhone传输到iPad的GPS数据转换为获取香草数据,获得干净网络转储的最佳方法是使用“tcpdump”和/或“pirni”正如已经建议的那样。

在我们想要Tethered数据的特殊情况下,它需要尽可能透明。显然你需要你的手机才能成为JailBroken才能工作。

答案 10 :(得分:2)

在Mac OS X上尝试Debookee,如前所述,感谢MITM,它将在不需要代理的情况下透明地拦截iPhone的流量。 然后,您将实时查看设备使用的不同协议。

免责声明:我是Debookee开发团队的一员,这是一个付费应用程序。试用版将在有限的时间内向您显示所有功能。

答案 11 :(得分:1)

一般的解决方案是使用配置为透明代理的linux框(可能在虚拟机中)拦截流量,然后使用wireshark或tcpdump或任何您喜欢的方式对其进行分析。也许MacOS也可以这样做,我还没试过。

或者,如果您可以在模拟器中运行该应用程序,则可以监控自己计算机上的流量。

答案 12 :(得分:0)

Com'on,没有提及Fiddler?爱在哪里:)

Fiddler是一款非常受欢迎的HTTP调试器,面向开发人员而非网络管理员(即Wireshark)。

Setting it up for iOS is fairly simple process。它也可以解密HTTPS流量!

在QA部门开始使用Fiddler解决问题后,我们的移动团队终于得到了缓解。在小提琴手面前,人们不知所措地想知道应该责怪谁,移动团队或API团队,但现在不行了。