本站支持 ActivityPub: [email protected]

Android手机4G网络抓包(需要root)

图片来源:《侦探已经死了》第一集截图

使用的Android设备为一加7Pro, 刷机和root流程:Linux下给一加7Pro刷入LineageOS、获取root权限

不需要root权限的抓包方法:Android手机4G网络抓包(no-root)

方案一(仅使用手机):安装配置Termux

Termux下载地址:官方github仓库, GooglePlay(不推荐,版本较老), Fdroid, apkmirror

配置

打开Termux

获取存储权限,并且会在家目录下生成storage文件夹,里面包含downloads等手机共享目录的软连接方便使用

termux-setup-storage

先更新一波,更新过程中可能会有多次提示配置文件覆盖需要你选择,直接回车默认是不覆盖,也可以输入“Y”选择覆盖,建议覆盖

pkg upgrade

添加root仓库

pkg install root-repo

安装sudo工具

pkg install tsu

安装tcpdump

pkg install tcpdump

抓包

运行tcpdump开始抓包,然后切换到需要抓包的应用开始操作即可

sudo tcpdump -i any -w ~/storage/downloads/xxx.pcap

“Ctrl+C”停止抓包,这样抓到的报文就会保存在系统下载目录的“xxx.pcap”文件中

这样抓的包以太网协议头会被替换成伪协议“Linux cooked capture”,需要的话可以进行转换,转换方法见文末

正常的报文
从“any”设备抓的包,以太网协议头被替换成“Linux cooked capture”

方案二:使用tcpdump和PC端wireshark抓包

注意:LineageOS支持下面的操作,但很多国内厂商的手机系统,即使root了也无法进行下面的操作,原因和解决方案请自行参看https://stackoverflow.com/questions/25271878/android-adbd-cannot-run-as-root-in-production-builds

安装adb

Arch Linux

sudo pacman -S android-tools

Ubuntu

sudo apt install adb

安装tcpdump到手机

访问https://www.androidtcpdump.com/android-tcpdump/downloads, 下载“tcpdump for ARM Android”

手机打开“USB调试”、“Root身份调试”,数据线连接手机和电脑,进入存放刚刚下载的tcpdump的目录,执行

adb root
adb remount 
adb push ./tcpdump /system/xbin/tcpdump 

抓包

确保adbd运行在root模式

adb root

电脑上打开wireshark,能看到很多“Android tcpdump”开头的网卡(Android tcpdump 后面跟的第一个单词才是真的网卡名字)

候选网卡比较多,可以一个个试,移动数据网络一般是“rmnet_dataN”(N是个数字,关闭“移动数据”再打开可能会变),我的是“rmnet_data3”,双击即可开始抓包

和方案一一样,这样抓的包以太网协议头会被替换成伪协议“Linux cooked capture”,需要的话可以进行转换,转换方法见文末

Linux cooked-mode capture (SLL)格式转换

使用“tcprewrite”重写数据即可,“tcprewrite”包含在“tcpreplay”包中

安装

Arch Linux

sudo pacman -S tcpreplay

Ubuntu

sudo apt install tcpreplay

转换

tcprewrite --dlt=enet -i in.pcap -o out.pcap

#也可以指定生成的mac地址
tcprewrite --dlt=enet --enet-dmac=00:11:22:33:44:55 --enet-smac=66:77:88:99:AA:BB -i in.pcap -o out.pcap

另外我在Arch Linux上使用安装的“tcpreplay-4.4.2”存在转换失败的情况,回退到“tcpreplay-4.3.1”后则没有问题


参考:

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注