android无root抓包(PCAPdroid)
- 官网:https://github.com/emanuele-f/PCAPdroid
- apk下载:https://github.com/emanuele-f/PCAPdroid/releases/
为了预防Github打不开,我在Gitee上克隆了一份:
- https://gitee.com/daizhufei/PCAPdroid
- https://gitee.com/daizhufei/PCAPdroid/releases/ Gitee在克隆时不会克隆release,所以我这里只是手动上传了1.8.6版本的apk,其它版本或者最新版本请从Github上下载。
PCAPdroid 是一款注重隐私的开源应用程序,可让您跟踪、分析和阻止设备中其他应用程序建立的连接。它还允许您导出流量的 PCAP 转储、检查 HTTP、解密 TLS 流量等等!
PCAPdroid 模拟 VPN 以便在没有 root 的情况下捕获网络流量。它不使用远程 VPN 服务器,而是在设备上本地处理数据。
使用Fiddler代理可以给Android抓包,但是它抓的是TCP连接的,PCAPdroid 则没有限制,比如我的App使用UDP连接也可以捕获。
PCAPdroid使用:
- 下载apk:https://github.com/emanuele-f/PCAPdroid/releases/
- 安装到手机上
- 启动应用,如下:
- 点击“无转储”,然后选择“PCAP文件”,这样捕获的流量会转储到PCAP文件中。
- 在目标应用中,可以选择要捕获的app,如果不选择,则默认捕获所有app的流量。
- 点击标题栏的设置按钮,然后开启 “PCAPdroid扩展” ,这样可以向数据包添加应用名称,并在Wireshark中显示,当我们对多个app同时抓包时,通过应用名称可以快速区分流量是哪个应用产生的。
- 点击标题栏的运行按钮(三角形按钮)或者 “就绪” 两字即可开始抓包,如果是第一次运行会弹出一个VPN权限授权对话框,同意即可。
- 点击标题栏的停止按钮(四方形按钮)即可停止抓包。抓包文件保存在
/sdcard/Download/PCAPdroid
目录中,文件名类似于:PCAPdroid_29_5月_15_28_44.pcap
- 使用
Wireshark
打开pcap
文件进可进行流量分析,示例如下:
如上图,可看到有SIP协议,因为我的App中使用了SIP协议来做即时通讯,我们随机点击一个SIP协议的请求,如下:
如上图,可以看到我们应用的SIP消息是使用UDP协议进行发送的。 - 之前我们开启了“PCAPdroid扩展” ,它会向数据包中添加应用名称,但是我们并没有看到这个数据,这是因为添加的应用名称不是标准协议里面的,需要添加插件来解析,下载插件:https://github.com/emanuele-f/PCAPdroid/blob/master/tools/pcapdroid_udpdump.lua
把pcapdroid_udpdump.lua
放到Wireshark
安装目录中的\plugins\4.0\
目录下,完整路径类似于:C:\Program Files\Wireshark\plugins\4.0\pcapdroid.lua
再次打开pcap文件,如下:
如上图所示,可以看到有两个地方显示了应用名称,对于中文,一个地方正常,一个地方乱码。 - 可以把应用名称显示到列中,在任意一列中右击,然后选择“列首选项…”,如下:
在弹出地界面中,点击加号来添加一列,在Title
中输入 “App”,在类型
中选择 “Custom”,在Fields
中输入 “pcapdroid.appname”,然后点击 “OK” 按钮即可,效果如下:
Info
这一列占的宽度很宽,所以默认情况下看不到App
这一列,把Info
这一列拉窄一点就能看到了。遗憾的是,如果App是中文名称,会显示乱码,如果是英文则没问题。中文的话,则只能在包分析里面去看了,如下: