手机抓包工具汇总
Last updated
Last updated
做移动开发,抓包是基本功。抓包工具非常成熟。
在移动设备上抓包,需要下面几个方面的配合:
移动设备支持;
代理服务器;
分析工具。
先说个抓 HTTP(HTTPS) 包的例子算是入门啦。
移动设备支持
操作系统
越狱或root
移动设备支持
Android
否
操作系统自带代理
iOS
否
操作系统自带代理
代理服务器+分析工具
操作系统
软件
Windows
macOS
Fiddler 是 freeware, 它的 macOS 版本已经在进行 beta 测试了,由于采用了 .NET Framework,它的 macOS 版本可以基于 运行。
Charles 是商业软件,它也有 Windows 版本,由于使用 JAVA 编写,它的 Windows 版很容易实现。
既然它们都已经是全平台支持,怎么选就看你了。我目前主要在 macOS 下工作。就介绍 Charles 好了。
Charles 的配置很简单,只需要 在 Proxy->Proxy Settings
对话框中启动 HTTP Proxy,然后在移动设备上设置代理为 macOS 的 IP 地址即可。
Proxy Settings
设置 Charles
HTTP Proxy iOS
设置 iOS 的 HTTP 代理
HTTP Proxy Mi
设置 Android(小米手机) 的 HTTP 代理
HTTP Proxy 修改
HTTP Proxy 填写
有些安卓系统的 HTTP 代理设置需要长按 WIFI 名称,单击“修改网络”
Charles Baidu
Fiddler 的操作也类似,网上大把教程,这里就略过了。
有些应用比较调皮,不走操作系统的 HTTP 代理。还有些应用(例如游戏)直接走 TCP 协议,无法使用 HTTP 代理抓包。虽然 Charles 支持 SOCKS 代理,但无法分析 TCP 包。
移动设备支持
操作系统
越狱或root
移动设备支持
Android
否
Android
否
Android
是
iOS
否
rvictl
代理服务器+分析工具
操作系统
软件
Windows
macOS
包内容可以保存成 PCAP 格式,将其传到桌面环境中使用 Wireshark 打开分析。Charles 也可以打开 PCAP 格式,但是仅能分析其中的 HTTP 协议内容。
Packet Capture
Packet Capture 抓包界面
tPacketCapture
tPacketCapture 抓包界面
Packet Capture 目前只能保存单个包,这略显不便。tPacketCapture 则可以将包内容直接保存到文件中。
用数据线将 Root 过的 Android 设备连上电脑,并开启 USB 调试:
...SHELL
此时可以在手机上进行正常操作了。抓包结束的时候使用 Ctrl+C
结束 tcpdump 的执行,将 /sdcard/tcpdump.pcap
复制到桌面环境,使用 Wireshark 打开进行分析就 OK 啦。
Wireshark 分析 tcpdump 结果
RVI 代表的意思是 Remote Virtual Interface 。这是 XCode 自带的一个工具,它可以将连接到 macOS 的 iOS 设备的网卡虚拟成 macOS 的网络设备。
若碰到提示 rvictl: command not found
,那么可能你需要访问 App Store ,安装 XCode 并运行一次。
先使用数据线连接 iOS 设备,打开 iTunes 获取 UDID,在保持数据线连接的情况下,执行下面的命令创建虚拟设备 rvi0 (xxxx代表设备的 UDID):
开启 Wireshark 或者 tcpdump (macOS 自带) ,选择设备 rvi0 抓包即可。
抓包完毕后,要用 rvictl -x 取消使用。
桌面系统上的 Wireshark 和 tcpdump 可以对该系统的网络设备抓包。因此我们只需保证移动设备的所有流量经过某个网络设备,就能得到它传输的所有信息。
把桌面设备变成一个热点,让移动设备通过该热点上网就能做到这点了。无论桌面设备使用有线网络还是无线网络,只需要购买一个无线网卡就能实现热点功能。不用做任何配置,就能抓包了。
接着要做的就是拿起手机访问访问网络。下图是我在 iOS 设备上使用 Safari 访问百度的包信息。是的,HTTPS 也是可以解密的,参见 Charles 的官方文档 即可。
这就需要祭出大杀器 和 啦。还有一些 App 可以直接运行在 Android 上进行抓包,这也是很方便的啊。
还可以使用透明代理来处理这些不走系统代理的应用,我在 一文中作了介绍。
和 可以直接安装在 Android 设备上,他们会在设备上启动一个 VPN,让所有的网络流量都从 VPN 经过,从而实现抓包。这两个 App 在安装的时候都不需要 Root 权限。
Packet Capture
tPacketCapture
在 Android 上安装专用于安卓的 ,然后启动它对 Android 的网卡抓包。这个方法很简单粗暴,但需要拥有 Root 权限。
= Man In The Middle Proxy,这个名字相当的拉风啊。它是使用 Python + C 实现的开源软件。
是基于命令行界面的,但同时它可以在命令行界面进行交互。 另外,它也提供了一个类似于 tcpdump 的 mitmdump 工具。为了方便查看,它还提供了 mitmweb 这个可视化分析工具。
另一个稍微小众一点的工具 虽然是商业软件,但免费版提供的功能已经够用了。
苹果提供了一个相当详细的如何抓包的文档,其中提到了许多抓包软件和方法,值得一看: 。