图片来源:《侦探已经死了》第一集截图 使用的Android设备为一加7Pro, 刷机和root流程:Linux下给一加7Pro刷入LineageOS、获取root权限 不需要root权限的抓包方法:Android手机4G网络抓包(no-root) 方案一(仅使用手机):安装配置Termux Termux下载地址:官方github仓库, GooglePlay(不推荐,版本较老), Fdroid, apkmirror 配置 打开Termux 获取存储权限,并且会在家目录下生成storage文件夹,里面包含downloads等手机共享目录的软连接方便使用 先更新一波,更新过程中可能会有多次提示配置文件覆盖需要你选择,直接回车默认是不覆盖,也可以输入“Y”选择覆盖,建议覆盖 添加root仓库 安装sudo工具 安装tcpdump 抓包 运行tcpdump开始抓包,然后切换到需要抓包的应用开始操作即可 “Ctrl+C”停止抓包,这样抓到的报文就会保存在系统下载目录的“xxx.pcap”文件中 这样抓的包以太网协议头会被替换成伪协议“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 Ubuntu 安装tcpdump到手机 访问https://www.androidtcpdump.com/android-tcpdump/downloads, 下载“tcpdump for ARM Android” 手机打开“USB调试”、“Root身份调试”,数据线连接手机和电脑,进入存放刚刚下载的tcpdump的目录,执行 抓包 确保adbd运行在root模式 电脑上打开wireshark,能看到很多“Android tcpdump”开头的网卡(Android tcpdump 后面跟的第一个单词才是真的网卡名字) 候选网卡比较多,可以一个个试,移动数据网络一般是“rmnet_dataN”(N是个数字,关闭“移动数据”再打开可能会变),我的是“rmnet_data3”,双击即可开始抓包 和方案一一样,这样抓的包以太网协议头会被替换成伪协议“Linux cooked capture”,需要的话可以进行转换,转换方法见文末 Linux cooked-mode capture (SLL)格式转换 使用“tcprewrite”重写数据即可,“tcprewrite”包含在“tcpreplay”包中 安装 Arch Linux Ubuntu 转换 另外我在Arch Linux上使用安装的“tcpreplay-4.4.2”存在转换失败的情况,回退到“tcpreplay-4.3.1”后则没有问题 参考:
wireshark
2 posts
图片来源:https://www.pixiv.net/artworks/101295432 Linux下从网卡读取数据需要root权限,以普通用户身份运行的Wireshark无法抓包 临时方案 使用root权限启动Wireshark 不太安全的方案 利用“SUID”让所有用户执行特定二进制程序时能够拥有root权限,SUID简单介绍可参看 SUID、SGID和SBIT 推荐方案 给 /usr/bin/dumpcap 添加抓包的权限,添加一个新用户组wireshark,使所有组内用户能够执行 /usr/bin/dumpcap,有的Linux发行版(比如ArchLinux、Ubuntu)用包管理器安装wireshark后,其实默认就是这个方案,只是不会自动将用户加入wireshark用户组而已 查看/usr/bin/dumpcap 如果输出类似上面这样, 文件所属组为wireshark,组成员具有可读和可执行权限,则只需要将当前用户加入wireshark用户组,然后注销重新登录即可 如果不是话,就要自己手动执行创建用户组等全部操作,然后注销重新登录 参考: