主要介绍如何利用tcpdump抓取andorid手机上网络数据请求,利用Wireshark可以清晰的查看到网络请求的各个过程包括三次握手。需要 root
但相对来说使用Fiddler进行网络数据抓包和展现更方便,Fillder 优点包括:(1)无需root (2)对Android和Iphone同样适用 (3)操作更简单方便(第一次安装配置,第二次只需设置代理即可) (4)数据包的查看更清晰易懂 (5) 可以查看https请求,建议使用Fillder,具体可见:利用Fiddler进行网络数据抓包。
1、下载并安装tcpdump
下载地址:tcpdump
安装tcpdump,命令行模式依次执行:
1 2 3 |
adb root adb push C:\Users\Trinea\Desktop\tcpdump /data/local/tcpdump adb shell chmod 6755 /data/local/tcpdump |
其中adb push的第一个参数为本地tcpdump的路径。
2、启动并运行tcpdump
命令行模式运行下面命令:
1 |
adb shell /data/local/tcpdump -n -s 0 |
这时在手机上做任何涉及到网络的操作都会在屏幕上打印出来,可以通过ctrl+c停止。
由于命令行最大输出的限制及屏幕不断滚动,查看不方便,我们可以将抓取的网络包保存到sd卡,如下命令:
1 |
adb shell /data/local/tcpdump -i any -p -s 0 -w /sdcard/netCapture.pcap |
依然通过ctrl+c停止,将文件拉取到本地PC
1 |
adb pull /sdcard/netCapture.pcap d:\\ |
通过–help我们发现tcpdump支持如下参数:
tcpdump [-aAdDeflLnNOpqRStuUvxX] [-c count] [ -C file_size ]
[ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ] [ -y datalinktype ] [ -Z user ]
[ expression ]
其中-c表示监控的请求个数;-C表示存储文件的最大大小;
-i表示监控的类型;-s表示抓取的网络请求返回的大小,0表示抓取整个网络包;-w表示抓取的包保存的文件路径,此时不会在标准输出打印。并且可以添加port参数表示端口。
3、利用wireshark分析数据
wireshark下载地址,中文版地址:http://www.onlinedown.net/softdown/2883_2.htm,英文版地址(需要翻墙):http://www.wireshark.org/download.html
用wireshark打开capture.pcap即可分析log
关于wireshark具体可见:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html
对你有帮助的话,去知乎点个赞让更多人了解:如何在 Android 手机上实现抓包
(1)无需root (描述不正确,请删除)
说的是 fiddler 不需要 root
复制粘贴 张嘴就来? 无需root你怎么运行的root命令
仔细看。说的是 fiddler 不需要 root
电脑怎么连接手机传输tcpdump文件? 不连接的话,无法执行adb root等指令呢。
怎么安装啊,大佬们
only position independent executables (PIE) are supported 这是为什么呢?
出现only position independent executables (PIE) are supported
可以把tcpdump 拷到其他目录 比如 /sdcard/
然后再测试 , 自测好像可以了
我也查了好久,不过还好有人已经基于源码重新编译了一个,所以请使用这个吧:https://pan.baidu.com/s/1bpetNQJ
Pingback: Android利用Fiddler进行网络数据抓包 | forlong401的分享
请问楼主,tcpdump能抓取到https协议的数据么?
其实原理都是使用PC的虚拟热点,然后抓PC的包
对
HTTPScoop也挺好用的,Mac 新建热点,让设备连接热点就能抓包了
哦哦,fiddler走代理,两者方便程度差不多