准备工作

1. Android设备需要root

2. 在 https://www.androidtcpdump.com/ 下载适用于Android的tcpdump可执行文件

3. 本地安装 android-tools-adb 和 android-tools-adbd

  1. sudo apt install android-tools-adb
  2. 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+\ 都是有效的

  1. # 查看连接的设备, 如果不止一个, 那么adb shell时会报错
  2. adb devices
  3. # 进入android设备的shell
  4. adb shell
  5. # 在shell里提升到su, 如果已经root的手机, 这一步可以直接执行, 不会提示权限错误, 不会提示输入密码
  6. su
  7.  
  8. # 远程提升到 su, 如果报 adbd cannot run as root in production builds 错误的话, 使用adbd root 命令代替
  9. adb root

上传tcpdump

  1. # 因为我的设备是production环境, 所以都用的adbd
  2. adbd root
  3. adbd remount
  4. 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权限. 可以执行以下命令测试

  1. $ adb shell
  2. $ su
  3. # tcpdump -p -s

使用Ctrl+C退出

常用命令格式

  1. #
  2. tcpdump -p -vv -s -w /sdcard/capture.pcap
  3. #
  4. adb shell tcpdump -i any -p -s -w /sdcard/capture.pcap
  5. #
  6. tcpdump -vv -i any -s -w /sdcard/dump.pcap
  7.  
  8. # Real time packet monitoring
  9. adb shell tcpdump -n -s
  10. # Typical tcpdump options apply. For example, if you want to see HTTP traffic:
  11. adb shell tcpdump -X -n -s port
  12. # You can also monitor packets with wireshark or ethereal, as shown below:
  13. # In one shell, start tcpdump.
  14. adb shell "tcpdump -n -s 0 -w - | nc -l -p 11233"

将文件传回PC

  1. adb pull /sdcard/dump.cap .

安装wireshark

Wireshar可以用来分析查看tcpdump产生的日志文件. 安装命令

  1. sudo apt install wireshark

安装过程中, 会提示存在的风险, 是否允许non-root用户使用抓包工具, 这时候如果选择no的话, 以后要用root身份来运行wireshark才能抓包, 对于开发工作来讲, 选yes就可以了. 如果选得不对想改的话, 还可以通过这个命令再次配置

  1. sudo dpkg-reconfigure wireshark-common

修改完配置, 貌似要重启后才能生效

Ubuntu18.04使用adb和tcpdump对android设备进行网络调试的更多相关文章

  1. 怎样对Android设备进行网络抓包

    问题描写叙述: 前段时间自己的app訪问server的url总是会出现间接性失败的问题,于是和server的同事开了个会.提出了他们server存在的这个bug,我的同事自然说自己的server没问题 ...

  2. 转: Android 设备的远程调试入门

    从 Windows.Mac 或 Linux 计算机远程调试 Android 设备上的实时内容. 本教程将向您展示如何: 设置您的 Android 设备进行远程调试,并从开发计算机上发现设备. 从您的开 ...

  3. ubuntu 使用adb shell命令识别android设备

    ubuntu 使用adb shell命令配置 在ubuntu下使用adb 命令识别Android设备需配置adb_usb.ini 文件 文件路径:  ~/.android/ ,若不存在创建该文件. a ...

  4. adb通过wifi连接android设备

    问题背景 近期的项目测试中,需要将移动设备与厂商机器进行usb连接视频传输(投屏).测试过程中需要定位问题,经常需要查看实时日志,移动设备已经和厂商机器usb连接投屏,无法用usb连接到PC,那么有什 ...

  5. adb 通过 WiFi 连接 Android 设备

    PC 和 Android 设备连接在同一个局域网. 查看 Android 设备的 IP:设置 > WLAN > 选择连接的WiFi > 查看IP地址. PC 端执行: ping &l ...

  6. mac平台adb、tcpdump捕手android移动网络数据包

    在移动电话的发展app当我们希望自己的下才能看到app网络发出请求,这个时候我们需要tcpdump工具包捕获.实现tcpdump空灵,以下步骤需要: 在这里,在android 华为手机 P6对于样本 ...

  7. 在Linux下adb连接不上android手机的终极解决方案

    转自: http://blog.csdn.net/liuqz2009/article/details/7942569 1.做android开发的过程,碰到了Linux下adb识别不了android设备 ...

  8. 通过ADB命令行卸载或删除你的Android设备中的应用(转载)

    转自:http://mytiankong.com/?p=11755 如果你对你的Android设备在与命令行的交互间有一定的兴趣,那你可能想学习一些使用ADB卸载设备中已安装应用的技巧.为了使这种方法 ...

  9. 如何通过Chrome远程调试android设备上的Web网站

    网上的帖子很多,但很多都是老版本的,试过了,根本不管用,花了一天时间,终于在本机试验通过了,特记录下来,以备用.有需要的朋友也可以参考.先上一张图,看看PC端chrome上调试的效果: 左边是手机的模 ...

随机推荐

  1. go语言之进阶篇接口的继承

    1.接口的继承 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Persone ...

  2. query多选下拉框插件 jquery-multiselect(修改)

    其实网上关于该控件的使用教程已经很多了,其中 query多选下拉框插件 jquery-multiselect Jquery多选下拉列表插件jquery multiselect功能介绍及使用 这2个的介 ...

  3. Asp.net web Control Enable 属性设置

    最近手上有一个很简单的一个小项目,需要查看编辑的历史记录,先前设计的时候把数据都save 到DB了,现在时间紧迫 就不在画新的UI,而是采用以前的edit页面 来显示数据,这里就需要把页面上所有的co ...

  4. 八一八android与Linux的关系

    Linux与Androld的关系 虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序.下面我们就来分析一 ...

  5. Android -- EventBus使用

    EventBus EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间.组件与后台线程间的通信.比如请求网络,等网络返回时通过Handler ...

  6. BiLSTM-CRF模型中CRF层的解读

    转自: https://createmomo.github.io/ BiLSTM-CRF模型中CRF层的解读: 文章链接: 标题:CRF Layer on the Top of BiLSTM - 1  ...

  7. Linux系统中关于Sqlite3中文乱码问题及解决办法

    新做的一个项目在本地(Win8)测试时没有问题,但传到服务器(Linux)时从Sqlite3数据库查询到的数据中文却是乱码(数据库中是正常的) 将php文件.html文件都设置成统一的utf8还是一样 ...

  8. 转:Eclipse配色方案

    http://www.cnblogs.com/arci/archive/2011/01/23/1942646.html 参考配色方案: http://www.cs.cmu.edu/~maverick/ ...

  9. Overcoming the List View Threshold in SharePoint CAML queries

    From: https://www.codeproject.com/articles/1076854/overcoming-the-list-view-threshold-in-sharepoint- ...

  10. CSS3提交意见输入框样式

    做了个输入框样式,如图: CSS代码例如以下: #button { cursor:pointer; width:30%; margin:5px; padding:8px; border-radius: ...