Ubuntu18.04使用adb和tcpdump对android设备进行网络调试
准备工作
1. Android设备需要root
2. 在 https://www.androidtcpdump.com/ 下载适用于Android的tcpdump可执行文件
3. 本地安装 android-tools-adb 和 android-tools-adbd
sudo apt install android-tools-adb sudo apt install android-tools-adbd
4. 一些相应的权限设置, 例如 /etc/udev/rules.d/ 下增加针对usb的android规则, 以避免执行adb命令时出现权限问题, 参考 https://www.cnblogs.com/milton/p/9339415.html
环境检查
注意: 在adb shell中, 非su用户可以用Ctrl+C终止命令, 但是在su用户下无效, 尚不清楚原因, 一个可能的解释是 https://github.com/termux/termux-app/issues/77 .
Update 2018-08-24: 如果使用"adb shell"进入, 那么在里面执行su后不能使用Ctrl+C; 如果需要用su, 可以直接用"adb shell su"进入, 这样就可以用Ctrl+C命令了, 其他的Ctrl+Z, Ctrl+\ 都是有效的
# 查看连接的设备, 如果不止一个, 那么adb shell时会报错 adb devices # 进入android设备的shell adb shell # 在shell里提升到su, 如果已经root的手机, 这一步可以直接执行, 不会提示权限错误, 不会提示输入密码 su # 远程提升到 su, 如果报 adbd cannot run as root in production builds 错误的话, 使用adbd root 命令代替 adb root
上传tcpdump
# 因为我的设备是production环境, 所以都用的adbd adbd root adbd remount adbd push ~/Backup/linux/tcpdump /system/xbin/tcpdump
然后在adb shell里检查是否有 /system/xbin/tcpdump 这个文件
必须是真实root了的设备才能成功... 如果只是临时root的设备, 例如最近用kingroot处理的麦芒5, 显示root成功了但是无法写入, 会报 read only错误.
使用tcpdump
运行tcpdump必须要有su权限, 如果出现 tcpdump error: no suitable device found 错误, 就是因为没有su权限. 可以执行以下命令测试
$ adb shell $ su # tcpdump -p -s 0
使用Ctrl+C退出
常用命令格式
# tcpdump -p -vv -s 0 -w /sdcard/capture.pcap # adb shell tcpdump -i any -p -s 0 -w /sdcard/capture.pcap # tcpdump -vv -i any -s 0 -w /sdcard/dump.pcap # Real time packet monitoring adb shell tcpdump -n -s 0 # Typical tcpdump options apply. For example, if you want to see HTTP traffic: adb shell tcpdump -X -n -s 0 port 80 # You can also monitor packets with wireshark or ethereal, as shown below: # In one shell, start tcpdump. adb shell "tcpdump -n -s 0 -w - | nc -l -p 11233"
将文件传回PC
adb pull /sdcard/dump.cap .
安装wireshark
Wireshar可以用来分析查看tcpdump产生的日志文件. 安装命令
sudo apt install wireshark
安装过程中, 会提示存在的风险, 是否允许non-root用户使用抓包工具, 这时候如果选择no的话, 以后要用root身份来运行wireshark才能抓包, 对于开发工作来讲, 选yes就可以了. 如果选得不对想改的话, 还可以通过这个命令再次配置
sudo dpkg-reconfigure wireshark-common
修改完配置, 貌似要重启后才能生效
- Ubuntu下使用adb和USB连接的方式进行android设备调试
- Ubuntu下使用adb和USB连接的方式进行android设备调试
- 使用adb和USB连接的方式进行android设备调试
- Ubuntu 下使用 ADB 调试 Android 应用时的设备识别问题
- Ubuntu下ADB调试Android找不到设备的解决方法(转)
- Ubuntu Android adb调试无法识别设备 -- List of devices attached ???????????? no permissions
- 使用adb无线连接手机进行开发和调试,适用于usb host/accessory设备调试
- Ubuntu下ADB调试Android找不到设备的解决方法
- ubuntu下adb调试android找不到设备的解决方法
- android开发教程之ubuntu使用adb连接小米2的步骤和adb调试方法
- android开发使用adb连接手机进行调试
- Ubuntu下Adb调试Android找不到设备的解决方法
- Ubuntu下ADB调试Android找不到设备
- ADB 通过网络连接设备进行调试
- mac平台使用adb、tcpdump工具抓取android手机网络包
- 在Windows下使用tcpdump对Android进行网络抓包
- android adb网络调试 Android中使用WIFI来连接ADB 简单100%成功
- ubuntu 使用adb shell命令识别android设备
- 通过USB连接到Android真机,在终端中配置adb工具,并使用adb工具对安卓手机进行调试
- ubuntu下adb调试android找不到设备的解决方法