返回介绍

最佳实践 74:在 Android 系统上抓包的最佳方法

发布于 2025-04-20 17:44:49 字数 4398 浏览 0 评论 0 收藏

随着移动应用的增加,移动设备访问系统应用的情况越来越多,我们经常会遇到有用户抱怨说使用移动设备访问网站等业务慢的问题。在这种情况下,如果能够同时在移动设备和服务器上同时抓包,那么对于分析问题将会有很大的帮助。

幸运的是,Linux 环境中强大的抓包工具在 Android 系统里面也有移植的版本。

注意

在 Android 系统抓包时,需要 root 权限,不同型号手机的 root 过程不同,在此不再赘述。

Android 版本的 tcpdump 下载地址是 http://www.androidtcpdump.com/android-tcpdump/downloads

另外,在 Android 系统抓包时,需要使用 adb 这个工具,下载地址是 http://developer.android.com

把下载后的 tcpdump 和 adb 工具及其依赖的 dll 放在 c:\adb 目录下,如下所示:

c:\adb>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 FCAD-A4A7

 c:\adb 的目录

2016/02/02  15:21    <DIR>          .
2016/02/02  15:21    <DIR>          ..
2013/12/16  10:27           815,104 adb.exe
2013/12/16  10:27            96,256 AdbWinApi.dll
2013/12/16  10:27            60,928 AdbWinUsbApi.dll
2016/02/02  15:21         1,893,728 tcpdump
               4 个文件      2,866,016 字节
               2 个目录  5,564,440,576 可用字节

使用 tcpdump 在 Android 系统抓包的步骤如下。

步骤 1 创建 tcpdump 存储目录并修改权限。

c:\adb>adb shell
shell@Coolpad8720L:/ $ id #检查当前用户的权限,在设置目录权限时用到该信息
id
uid=2000(shell) gid=2000(shell)
groups=1003(graphics),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r), 3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)
shell@Coolpad8720L:/ $ su #切换成 root
su
root@Coolpad8720L:/ # mkdir /data/local/tmp #创建目录
mkdir /data/local/tmp
root@Coolpad8720L:/ # chown shell.shell /data/local/tmp #修改权限,否则无法使用 adb push 传输 tcpdump 文件到该目录中
chown shell.shell /data/local/tmp
root@Coolpad8720L:/ # exit #退出 root 权限
exit
shell@Coolpad8720L:/ $ exit #退出 adb shell
exit

步骤 2 把 tcpdump 传到 Android 系统中。

c:\adb>adb push tcpdump /data/local/tmp/
2379 KB/s (1893728 bytes in 0.777s)

步骤 3 确认 Android 系统的基本网络环境。

确认网卡名称。

root@Coolpad8720L:/ # netcfg
netcfg
ip6tnl0  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
ccinet6  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
ccinet7  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
ccinet3  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
ccinet4  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
ccinet5  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
ccinet0  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
ccinet1  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
ccinet2  DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
lo       UP                        127.0.0.1/8   0x00000049 00:00:00:00:00:00
sit0     DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00
p2p0     UP                        0.0.0.0/0   0x00001003 12:dc:56:7c:35:7d
wlan0    UP                        192.168.74.27/21  0x00001043 18:dc:56:7c:35:7d #该网卡为此时上网用到的网线网卡
tunl0    DOWN                      0.0.0.0/0   0x00000080 00:00:00:00:00:00

检查路由表。

root@Coolpad8720L:/ # ip route show
ip route show
default via 192.168.72.1 dev wlan0
default via 192.168.72.1 dev wlan0  metric 318
192.168.72.0/21 dev wlan0  scope link
192.168.72.0/21 dev wlan0  proto kernel  scope link  src 192.168.74.27  metric 318
192.168.72.1 dev wlan0  scope link

检查 DNS 配置。

root@Coolpad8720L:/ # getprop net.dns1
getprop net.dns1
202.96.209.5 #本手机使用的 DNS 服务器

步骤 4 使用 tcpdump 抓包。

root@Coolpad8720L:/ # cd /data/local/tmp
cd /data/local/tmp
root@Coolpad8720L:/data/local/tmp # chown root.root tcpdump #修改用户
chown root.root tcpdump
root@Coolpad8720L:/data/local/tmp # chmod 755 tcpdump #修改权限
chmod 755 tcpdump
root@Coolpad8720L:/data/local/tmp # ./tcpdump -i wlan0 tcp -s 0 -nnn -w Coolpad8720L.pcap -c 1000
p -s 0 -nnn -w Coolpad8720L.pcap -c 1000                                      <
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
1000 packets captured
1129 packets received by filter
0 packets dropped by kernel
root@Coolpad8720L:/data/local/tmp # chown shell.shell Coolpad8720L.pcap

步骤 5 把抓包文件传到本地。

c:\adb>adb pull /data/local/tmp/Coolpad8720L.pcap .
2557 KB/s (659948 bytes in 0.252s)

经过以上 5 个步骤的操作后,即可使用 Wireshark 打开 Coolpad8720L.pcap 进行网络通信协议的分析了。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。