安卓上使用tcpdump抓包的几种方式

tcpdump是Linux上强大的网络数据采集工具,可以将网络中传送的数据包完全截获下来,在安卓手机上,也可以使用它来进行抓包,后续可以用Wireshark来进行数据包的分析。

分享一下在安卓使用tcpdump抓包的几种方式

1.通过GT的tcpdump插件

这个是最简单粗暴的好方法~

GT是腾讯出品的APP性能测试工具,已经在Github开源。

  • 进入GT的插件页面,点击抓包,调整tcpdump参数(一般默认即可),点击开始
  • 切换到要抓包的应用,操作完成后,切换回GT,停止抓包即可。
  • 抓包后生成pcap文件,用adb pull导出。

2.adb调用tcpdump

  • 在tcpdump官网下载最新版本,点击进入
  • 手机需要提前root
  • 在cmd命令行下,依次执行
1
2
3
adb shell
su
chmod 777 /data/local
  • 退出shell模式,把下载的tcpdump文件push到手机
1
adb push E:/tcpdump /data/local
  • 在cmd下,依次执行
1
2
3
4
5
6
7
8
9
adb shell
su
chmod 6755 /data/local/tcpdump
/data/local/tcpdump -p -s 0 -w /sdcard/001.pcap 开始抓包
参数含义:
-p 表示不使用混杂模式
-s 参数用以指定数据包捕获长度,此处指定为0,指抓取完整的数据包
-w 将结果写入一个pcap文件
  • 按Ctrl+C停止抓包,把pcap文件pull回本地
    1
    adb pull /sdcard/001.pcap E:/

3.手机上使用终端模拟器

  • 下载tcpdump,push到手机,这个和上边是一样的
  • 手机上安装终端模拟器
  • 运行终端模拟器,输入抓包命令
1
/data/local/tcpdump -p -s 0 -w /sdcard/001.pcap
  • 直接退出终端模拟器可以停止抓包,然后用adb pull导出