Android上使用Tcpdump进行抓包
工具包内容如下:(下载地址:http://download.csdn.net/download/yezhaohui2011/8368061)
adb ——谷歌提供的安卓远程调试工具 。(用于PC连接手机并输入命令)
tcpdump——Linux系统中普遍使用的一款开源网络协议分析工具。(放在手机内部进行抓包)
wireshark——window 系统下的抓包工具。(查看分析抓取的数据包)
抓包条件:手机需要取得 root权限
使用方法:
1、 把adb工具放到PC任一目录,然后进入cmd切换到工具目录,如:
2、 通过USB线把手机和PC连接,并打开手机的USB调试模式
3、 cmd 输入:adb devices 这个命令是查看当前连接的设备,如
4、 把tcpdump 工具拷贝到手机,cmd输入: adb push <本地路径> <远程路径> ,如:
5、 给tcpdump 执行权限,分别输入adb shell -> su ->chmod 6755 /data/local/tcpdump
6、 开始抓包,输入:/data/local/tcpdump –p –s 0 –w /sdcard/test.pcap
crtl+c 结束抓包,这样在手机/sdcard目录里面就会保存一个test.pcap的文件.
7、 把抓取的报文从手机上拷贝回电脑,输入:adb pull <远程路径> <本地路径> ,如:
然后就可以用 wireshark打开查看报文内容了。
可以看到向10.0.0.172发送的报文,即是移动网络发送的报文。
中国移动 网关:10.0.0.172 HTTP端口: 80和8080 WAP端口:9201
中国联通 网关:10.0.0.172 HTTP端口: 80和8080 WAP端口:9201
中国电信 网关:10.0.0.200 HTTP端口: 80
使用Fiddler工具进行抓包
Fiddler工具简介
Fiddler是强大且好用的Web调试工具之一,它能记录客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展,在web开发和调优中经常配合firebug使用。
Fiddler的运行机制其实就是本机上监听8888(默认)端口的HTTP代理。 对于PC端Fiddler启动的时候默认IE的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置,所以如果需要监听PC端Chrome或其他应用的网络数据包,将其代理改为127.0.0.1:8888就可以监听数据了,手机端按照下面的设置即可完成整个系统的http代理。
相对于通过adb使用tcpdump+wireshark抓包的优势在于:
1) 无需取得手机root权限
2) 对Android和Iphone同样适用
3) 操作更简单方便(第一次安装配置,第二次只需设置代理即可)
4) 可以利用Fiddler的强大功能对数据包进行各种操作
5) 可以查看https请求(Fiddler提供解密)
注意:只能是手机已经连接上网,且与Fiddler所在的PC在同一局域网内,手机能通过fiddler代理上网才能使用该方法进行抓包。
通过Fiddler进行手机抓包方法
1、 PC端安装Fiddler,Fiddler作为代理服务器模式
2、 配置Fiddler允许监听https
打开Fiddler菜单项Tools->Fiddler Options,选中decrypt https traffic和ignore server certificate errors两项,如下图:
第一次会提示是否信任fiddler证书及安全提醒,选择yes,之后也可以在系统的证书管理中进行管理。
3、 配置Fiddler允许远程连接
如上图的菜单中点击connections,选中allow remote computers to connect,默认监听端口为8888,若被占用也可以设置,配置好后需要重启Fiddler以使配置生效,如下图:
4、 配置手机端
打开手机连接到同一局域网的wifi,并修改该wifi网络详情(长按wifi选择->修改网络)->显示高级选项,选择手动代理设置,主机名填写Fiddler所在机器ip(与手机同一局域网的IP),端口填写Fiddler端口,默认8888,如下图:
这时,手机上的网络访问在Fiddler就可以查看了:
使用Charles工具进行抓包
Charles原理介绍
charles是一款在Mac下常用的截取网络封包工具。Charles实现对Https进行抓包,使用的原理就是中间人技术(man-in-the-middle)。Charles会动态生成一个使用自己根证书签名的证书,Charles接收web服务器的证书,而客户端浏览器/客户端 接收Charles生成的证书,以此客户端和Charles之间建立Https连接,Charles和Web服务器之间建立Https连接,实现对Https传输信息的抓包。如果Charles根证书不被信任则无法建立Https连接,所以需要添加Charles根证书为信任证书。
使用方法
1、给Mac安装证书
打开Charles,在Menu选择SSL Proxying > Install Charles Root Certificate,Keychain Access(钥匙访问串)被打开,如下图所示可以看到Charles Certificate已经被安装
2、信任证书
双击该行弹出证书详情,选择“Always Trust”(始终信任)
3、给手机安装证书
打开Charles,在Menu选择Help > SSL Proxying > Install Charles Root Certificate on a Mobile Device or Remote Browser,弹出提示框,按提示框操作即可(先设置代理然后访问证书安装页面进行证书的安装)
也可以在Charles上选择Help > SSL Proxying > Save Charles Root Certificate先导出证书,然后adb等工具导入手机中进行安装
4、开启SSL代理功能
在Menu选择Proxy->SSL Proxying Setting,选中Enable SSL Proxying,在Locations里面添加要使用SSL代理的网站,端口号输入443,如果需要匹配所有的HTTPS网站则输入 * 号即可。现在即可拦截所有Https的数据包了
注意事项
1、手机上有开启FQ应用,如***等时,不要设置成全局代理,否则charles上是抓不到包,可设置分应用抓包-绕行模式--将待抓包的app勾选让其绕行即可
charles工具更多使用介绍见: