您的位置:首页 > 理论基础 > 计算机网络

如何对Android设备进行网络抓包

2016-01-30 13:34 344 查看

问题描述:

       前段时间自己的app访问服务器的url总是会出现间接性失败的问题,于是和服务器的同事开了个会,提出了他们服务器存在的这个bug,我的同事自然说自己的服务器没问题,然后要我重现bug然后提供抓包给他分析。所以我自己去折腾了各种网络抓包的方法,下面介绍一种实际可行的对android设备抓包的方法。

解决方案:

       利用tcpdump对android设备进行抓包,用wireshark进行抓包分析。在进行抓包之前,需要将设备进行root,推荐是用root工具king root,成功率较高。

1、下载tcpdump

我给大家准备好了tcpdump的下载地址

http://www.strazzere.com/android/tcpdump

2、将tcpdump复制进自己的android设备

不需要adb shell进入设备,直接执行adb push e:\tools\tcpdump /data/local/tcpdump将文件复制到指定的文件夹。

可以手动复制,也可以利用adb push指令进行复制。这个指令需要进入到你adb所在的目录才能执行。复制完成后可以用ls查看是否复制成功。

3、进入到tcpdump对应的文件夹

cd /data/local

4、执行tcpdump的抓包指令

./tcpdump -p -vv -s 0 -w /sdcard/capture.pcap

正常情况下,是可以抓包成功过了。但是你可能会遇到下面的提示



这种情况下需要对tcpdump进行读写授权,执行读写权限的时候,先进行adb shell进入设备。不需要进入到tcpdump的文件夹

/*修改读写权限*/

mount -t yaffs2 -o remount,rw,noatime,nodiratime /mnt/sdcard/data/tcpdump

-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。

-o options 主要用来描述设备或档案的挂接方式。

如果还是不行可以用下面指令修改读写权限
/*修改读写权限*/

chmod 6755 /data/local/tcpdump

5、将抓到的包复制到电脑

adb pull /sdcard/capture.pcap C:\Users\XXX\Desktop\capture.pcap

5、抓包完成,用wireshark进行分析

wireshark的下载链接很多,我就不贴了。

结论:

android设备抓包的方式还有不止这一种,假如你的电脑能开wifi热点的话,可以让android设备连接自己的wifi热点。可以直接用wireshark直接进行抓包,会简便很多。

抓包以及分析技能做网络应用的童鞋们还是需要掌握的,比如访问服务器速度过慢的原因,也可以通过抓包来进行分析。

下面我会继续介绍如何分析网络抓包,找出开头提到的访问服务器间隙性失败的原因。在抓包分析之前,先了解一下TCP的三次握手和四次握手
《TCP建立连接三次握手和断开连接四次握手 》,这篇文章从抓包分析了TCP建立连接的三次握手和四次握手机制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息