Android平台上抓包

经常会有一些测试需求比如:测试手机上某个app的网络通信是否已经加密,或者测试某个app是否偷偷链接某些网站。

根据抓包的对象,主要有两种途径:

1. 在路由器端抓包:使用一台已经连入路由器的PC来抓取路由器上所有的数据传输信息。

2. 在终端抓包:在终端(手机,平板等)上抓取次终端设备的网络传输信息。


注意:可以很容易通过网络下载到很多可以用来抓包的apk,但是前提是android手机或者终端要root过,笔者试过其中的一、二款,感觉不够理想。

其实网上的这些工具也都是使用tcpdump这款命令行工具来实现抓包的,下面我就来简单说一下方法2,也就是终端抓包的具体操作:

【准备】

当然是需要下载好tcpdump这个工具:http://www.strazzere.com/android/tcpdump

你也可以在tcpdump的官网下载源代码编译得到,但是android系统的tcpdump可以从如上的网站得到。从如上的网站上下载的工具不依赖于手机的cpu架构,所以无论arm还是x86平台都可以运行,请放心使用。


【安装】

安装的难易程度因终端是否root而异。请使用adb将tcpdump传输到sd卡中

$> adb push tcpdump /sdcard/

对于已经root过的机器,请使用adb root ,adb remount 后,

$>adb root
$>adb remount

然后将tcpdump拷贝到/system/xbin下,修改执行权限(可以使用 chmod 777 tcpdump)

对于没有root过的机器,可以使用一些工具,比如“刷机精灵”来取得root权限。笔者是使用R.E浏览器这款应用手动将tcpdump从sdcard拷贝到/system/xbin,然后添加执行权限。

经过如上的操作,你应该保证你的tcpdump这个文件已经在/system/xbin下,并且已经具备了可执行的权限。


【抓包】

根据使用的场景不同,tcpdump的参数也有相应的设置,这里列举一个常用的 tcpdump -p -vv -s 0 -w /sdcard/log1.pcap

这里将输出都写在了sd卡上的log1.pcap文件中.

如果你使用如上的命令遇到了"device not suitable"类似的问题,说明执行权限还是不对。笔者一般使用如下的命令抓包

$> adb shell su tcpdump -p -vv -s 0 -w /sdcard/log1.pcap


su是为了让tcpdump在root下运行。

如果tcpdump成功的运行起来,你会看到命令行已经挂起了,这个时候你操作需要测试app,数据就被抓到了。


【分析】

得到的数据文件XX.pcap可以用wireshark工具进行分析, 这个工具可以从http://www.wireshark.org/download.html得到。

如果成功安装了wireshark,可以发现你抓出来的数据包有一个小图标:Android平台上抓包Android平台上抓包

双击这个文件,wireshark就会给出信息:

Android平台上抓包Android平台上抓包

这里不打算介绍数据的分析方法,只简单的说一下,首先要确定好你想要分析的数据所在的层(应用层,还是传输层,又或者是其他层),找到对应的协议,然后分析数据。


【总结】

以上就是抓包的方法,同样可以在linux base的系统上使用。


Android平台上抓包,布布扣,bubuko.com

Android平台上抓包

上一篇:iOS App Launch Option


下一篇:移动web页面支持弹性滚动的3个方案