在安卓系统会议大屏上使用tcpdump抓包的流程

61 阅读4分钟

前提条件 (必须满足)

  1. 获取ROOT权限: tcpdump 需要访问网络底层,这在安卓系统上必须有ROOT权限才能运行。大部分零售的电视盒子、安卓大屏默认是没有ROOT的,您可能需要通过刷机或者专门的ROOT工具来获取。

  2. 开启ADB调试: 您需要在安卓大屏的“开发者选项”中,开启“USB调试”或“网络ADB调试”功能。这样您才能从电脑上通过adb命令连接到大屏的shell环境。

  3. 准备tcpdump可执行文件: 大部分安卓系统默认不包含tcpdump命令。您需要一个适用于您安卓大屏CPU架构(大概率是ARM或ARM64)的tcpdump可执行文件。

操作步骤

第一步:连接到安卓大屏的Shell环境

  1. 获取大屏IP地址:在安卓大屏的网络设置中,找到它的IP地址(例如,我们假设是192.168.137.95)。

  2. 电脑上打开命令行/终端

  3. 通过ADB连接: 输入以下命令连接到您的安卓大屏。

    Bash

    adb connect 192.168.137.95
    

    如果连接成功,会提示 connected to 192.168.137.95:5555

  4. 进入Shell: 输入以下命令,您将进入安卓大屏的命令行环境。

    Bash

    adb shell
    

    您会看到命令提示符变成了类似 great_device:/ $ 的样子。

  5. 切换到ROOT用户: 在shell中,输入 su 命令切换到超级用户。

    Bash

    su
    

    命令提示符可能会变成 #,表示您现在是ROOT用户了。

第二步:将tcpdump推送到设备上并赋予权限

  1. 退出当前shell: 在刚才的shell窗口输入 exit,先退回到电脑的普通命令行。

  2. 推送文件: 将您下载好的tcpdump文件推送到安卓大屏的一个可写目录下,比如 /data/local/tmp

    Bash

    adb push path/to/your/tcpdump /data/local/tmp/
    

    (请将 path/to/your/tcpdump 替换为您电脑上tcpdump文件的实际路径)

  3. 重新进入Shell并授权:

    Bash

    adb shell
    su
    cd /data/local/tmp
    chmod 755 tcpdump
    

    chmod 755 命令是给tcpdump文件添加可执行权限。

第三步:开始抓包

现在,万事俱备,您可以开始抓包了。

  1. 确定网卡名称: 在安卓shell中,输入 netcfgifconfig 命令,查看网络接口列表。您的Wi-Fi网卡名称通常是 wlan0

    Bash

    # netcfg
    lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
    wlan0    UP    192.168.137.95/24  0x00001043 aa:bb:cc:dd:ee:ff
    
  2. 执行抓包命令:

    • 手机IP地址: 192.168.137.48
    • 大屏IP地址: 192.168.137.95
    • 网卡名: wlan0

    在shell中执行以下命令,开始抓包并将结果保存到文件中:

    Bash

    # cd /data/local/tmp
    # ./tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap host 192.168.137.48
    

    命令参数解释:

    • ./tcpdump: 运行当前目录下的tcpdump。
    • -i wlan0: 指定监听的网卡是wlan0
    • -s 0: (snapshot length) 抓取完整的数据包,而不是只抓头部。
    • -w /sdcard/capture.pcap: 将抓包结果写入到设备内置存储(sdcard)下的 capture.pcap 文件中。这个文件可以被Wireshark直接打开。
    • host 192.168.137.48: 这是过滤器,表示只抓取源IP或目标IP是手机 (192.168.137.48) 的数据包。因为您是在大屏上抓包,所有与手机的通信自然就是您需要的数据。
  3. 复现问题:

    • 命令行会显示 tcpdump: listening on wlan0, ...,表示抓包已经开始。
    • 现在,拿起您的iOS手机,进行投屏操作。
    • 等待问题复现(视频播放,但进度条为0)。
    • 等待10-15秒。
  4. 停止抓包:

    • 在电脑的shell窗口,按 Ctrl + Ctcpdump会停止监听,并显示抓了多少个包。

第四步:将抓包文件取回电脑进行分析

  1. 退出shell: 输入 exit 两次,回到电脑的命令行。

  2. 拉取文件: 使用 adb pull 命令将抓包文件从大屏上复制到您的电脑。

    Bash

    adb pull /sdcard/capture.pcap C:\Users\YourName\Desktop\
    

    (请将 C:\Users\YourName\Desktop 替换为您想保存文件的电脑路径)

  3. 用Wireshark分析:

    • 现在,您电脑上就有了一个 capture.pcap 文件。
    • 用Wireshark打开它,您就可以看到手机和大屏之间最直接的通信数据了,没有任何中间环节的干扰。

这个方法虽然前期准备工作稍多,但一旦环境搭好,后续抓包会非常方便和准确。