抓包方法汇总
| 是否需要PC/Mac协助 | 设备是否需要root/越狱 | 对系统版本是否有特殊要求 | 是否需要指定机型 |
方法一 | √ | × | × | √ |
方法二 | √ | × | × | × |
方法三 | × | √ | × | × |
方法四 | √ | × | √ | × |
方法五 | √ | × | √ | × |
方法六 | √ | × | × | × |
方法七 | × | √ | × | × |
PC上获取手机数据包
方法一、通过“Internet传输”接入方式,在PC上获得数据包
通过手机设置上Internet传输,让手机共享PC网络,在PC上抓取手机的数据包。
前提条件:
资源:一部 Htc系列的手机,例如:G12、G14、G18等。
工具:Htc sync、Wirewark
步骤:
1、PC上需要下载Htc sync这款软件进行安装;
2、使用手机连接PC;
3、在设置里面选择连接方式:Internet传输;
4、当手机界面上出现双通的图标时,说明连接成功;使用手机上的浏览器输入网址进行页面的浏览,如果可以正常显示网页内容,则说明网络已联通;
5、在PC上使用Wireshark,选择Htc的接口,就可以获取到手机上的数据包;
可能遇到的问题:
1、若在连接中出现了如下图的提示,关闭提示即可。
2、若连接后没有出现双通的符号或者双通符号中一边显示为”X”,则说明未连通,需要拔掉手机重新进行插入。
PC作为无线AP,设备通过共享接入,在PC上监听数据包信息。
前提条件:
资源:无线路由一台;
工具:下载安装Charles软件。
步骤:
1、 将有线网络的端口插入无线路由器(如果在公司内部进行架设,需要先电话8000,让8000的同事进行架设);
2、 在无线路由中设置DHCP等服务(具体配置可以自行百度);
3、 在PC上启动Charles软件,在Proxy设置中取消掉代理,因为测试是手机app,不需要该选项;
4、 设置PC代理,点击Proxy Setting,代理的端口默认为8888;
SSL选项里面端口号和主机都填入*即可。
5、 设置允许代理的IP范围,设置为0.0.0.0/0标识任何人都可以访问这个网络;
6、 设置手机参数,找到你电脑架设的网络,输入代理的IP和在Charles上设置的端口号(8888);
7、 在手机上进行网络操作,在Charles的structure里面显示信息,则说明抓包成功。
可能遇到的问题:
1、同样设置在一些机器可以捕获到Google Analytics的请求,但有些不行,暂时还找不到原因;
2、暂时无法捕捉到微信等请求,可能因为使用的协议不同所以无法捕获,这也是其局限性之一;
3、在一些机器开启Charles捕获连接时使用新浪微博登录时会出现崩溃现象,原因也暂时不明。
手机上获取数据包
手机上安装GT工具,通过GT获取到手机的网络数据,得到数据包。
前提条件:
资源:root手机一台
工具:GT
步骤:
1、 在http://gt.tencent.com/下面下载GT的Android apk进行安装。
2、 启动GT,选择plugin里面GTPcap,输入文件名称,点击start,开始抓包。
3、 进行操作完毕后,点击GT,点击stop,结束抓包。在/sdcard/GT/tcpdump的目录下,获得刚才操作获取的安装包。
Mac上获取数据包
通过IOS系统5.0里面的虚拟接口,将IOS设备的数据包转到Mac上面,在Mac上通过网络抓包获取IOS的数据信息。
前提条件:
资源:Mac机一台
工具:Wirewark(X11及其以上的wirewark版本)
步骤:
1、 IOS设备连接Mac设备,在Organizer里面获取到设备的identifier信息
2、 启动Mac上的系统终端,使用rvictl命令创建远程虚拟的接口,在终端显示succeed,并且可以正常显示,说明连接建立成功。
3、 启动wirewark,选择rvi0端口,在IOS设备上进行网络操作就可以显示数据包信息。
方法五、通过Xcode自带的instruments,进行数据包的截获
在Mac机上编译打包app到IOS设备上,通过Xcode里面Network Connections模块,记录该进程产生的数据包。
前提条件:
资源:Mac机一台、IOS设备版本在5.0以上;
工具:Xcode
步骤:
1、 IOS设备连接Mac机器;
2、 使用Xcode编译版本到IOS设备上;
3、 关闭Xcode,若app已经在IOS设备上运行,则关闭app;
4、 在library中选择Network Connections模块;
5、 开始记录,在手机上进行测试操作(操作要尽量精确到原子级;一个操作测量多次取均值;测试前先记录好现有端口和数据,操作完成后增加的端口为该操作的数据);
在PC/Mac上获取手机数据包
方法六、将手机和PC/Mac接入同一公共网络,在PC/Mac上获取数据包
前提条件:
资源:手机一台、PC/Mac一台
工具:Android手机,安装fiddler软件;
IOS手机,安装wirewark软件;
步骤:
1、 选择FreeWifi中,点击修改网络;
2、 在代理设置中选择“手动”,输入自己PC的IP地址,代理端口输入8888(fiddler)的默认端口,保存设置;
3、 若是Android手机进行测试,启动PC上的fiddler,Tools-> Fiddler Options->Connections,选择“Allow remote computers to connect”,保存设置后,重启fiddler。
若是IOS手机进行测试,在Mac上启动wirewark,进行监听。
4、 在手机上继续操作,获取到网络包。
可能遇到的问题:
由于手机上需要输入PC的IP地址,因此需要每次启动后都需要修改手机上代理的IP地址。
手机上获取数据包
方法七、手机安装tcpdump,使用tcpdump截取数据包
手机上安装tcpdump,tcpdump通过监听手机网卡,获取网络数据包信息。
前提条件:
资源:Android系统,root手机一台;
IOS系统,需要越狱手机一台;
工具:Android系统,tcpdump;
IOS系统,在cydia里安装tcpdump、OpenSSH;PC上安装itools、putty
Android手机的操作步骤:
1、下载tcpdump到PC上,比如c:/;
2、将手机与PC用USB数据线连接;
3、将下载到PC上的tcpdump上传到手机上,进入windows命令行界面,输入命令:
“adb push c:/tcpdump /data/local/tcpdump”;
4、修改 tcpdump的权限,在命令行中输入命令:adb shell chmod 6755 /data/local/tcpdump;
5、以root身份访问,在命令行中输入命令继续输入:adb shell,回车,继续输入:su root(记得手机侧要点击确认授予最高权限访问);
6、进入到手机放置tcpdump的目录下,输入命令:cd /data/local;
7、输入命令 ./tcpdump -i any -p -s 0 -w /sdcard/tmp.pcap,开始抓包;
8、去手机侧开始操作游戏登陆的一系列操作,完成后,在PC侧的命令行界面Ctrl+c停止抓包。
可能出现的问题:
1、 adb 里面显示的设备offline
解决方法:
(1) 多次拔插设备,进行查看;
(2) 如第1步依然不行,则查看手机Android版本是否比PC上Android开发环境里面版本高,升级PC上的Android开发环境里的platform-tools的版本,让adb的版本号高于或者等于1.0.31;
2、 手机root过了,但是使用adb push时,依然存在Permission denied的情况。
解决方法:
(1) 将tcpdump的文件先放入到sd卡里面。
(2) 使用adb shell,su root权限。
(3) 进入sd卡里面,使用CP命令将tcpdump拷贝到/data/local的目录下面
IOS系统操作步骤:
若你习惯在设备上直接截取数据包,则可以在IOS上启动terminal mobile并在上面输入步骤3里面的命令,就可以在手机上直接进行数据包的截取,最后通过步骤5将数据包导出。
1、 将ios设备与pc建立连接,成功标准是你的itools上可以看到手机连接已经成功
2、 点击itools/高级功能,开启SSH隧道,开启后获取ip地址
3、 在PC上打开putty,输入在上图获取的IP地址和端口号,连接成功后输入用户名和密码。并且输入tcpdump -X -s0 -w /tmp.cap开始抓包;
4、手机侧开始游戏的操作。操作完成后,在PC侧的putty中按Ctrl+c终止抓包;
5、 在pc上的itools/文件系统/越狱系统,找到你刚刚抓包的数据文件,导出到pc上;