当前位置:首页 > 行业动态 > 正文

关于Android网络数据包获取的疑问与探索

Android网络数据包获取方法

在Android设备上获取网络数据包,主要有以下几种方法:

一、使用tcpdump工具(需root权限)

1、前提条件:手机需具备root权限,因为普通用户无法正常执行tcpdump来获取网络上的信息。

2、下载与传输:将下载好的tcpdump工具通过adb命令推送到手机中,如adb push D:/tcpdump /data/local,即将下载到D盘的tcpdump工具拷贝到手机的/data/local目录下。

3、修改权限:通过命令adb shell chmod 777 /data/local/tcpdump修改文件权限,使任何人都可读、写、执行该文件;也可通过RE文件管理器进行修改。

4、抓包操作:执行命令/data/local/tcpdump -p -vv -s 0 -w /sdcard/mycapture.pcap进行抓包,其中-p使网络地址和广播地址转变成名字,-vv输出详细报文信息,-s 0从每个分组中读取最开始的字节数,-w指定将捕获的数据包写入的文件路径。

5、停止抓包:当需要停止抓包时,可通过执行相关命令或操作来终止tcpdump进程。

关于Android网络数据包获取的疑问与探索

6、查看数据包:将生成的mycapture.pcap文件拷贝到电脑中,用Wireshark等工具打开查看。

步骤 命令 说明
下载与传输 adb push D:/tcpdump /data/local 将tcpdump工具拷贝到手机指定目录
修改权限 adb shell chmod 777 /data/local/tcpdump 修改tcpdump文件权限
抓包操作 /data/local/tcpdump -p -vv -s 0 -w /sdcard/mycapture.pcap 执行抓包并保存数据包到指定文件
停止抓包 无特定命令,可通过中断相关进程等方式停止 停止tcpdump抓包进程

二、使用PCAPdroid应用(无需root权限)

1、下载安装:直接在[项目地址](https://gitcode.com/gh_mirrors/pc/PCAPdroid)下载最新的apk文件,并安装到Android设备上。

2、获取权限:确保设备已获得root权限,因为数据包捕获通常需要这样的权限。

3、使用功能:打开应用后,可利用其友好的图形用户界面执行数据包捕获任务,还能实时显示捕获到的数据包,通过标准tcpdump过滤语句筛选要显示的数据包,提高数据分析效率。

关于Android网络数据包获取的疑问与探索

三、使用Fiddler工具(无需root权限)

1、安装配置Fiddler:在电脑上下载并安装Fiddler,安装完成后打开软件,选择Tools->Fiddler Options,选中“Decrpt HTTPS traffic”以截获HTTPS请求,选中“Allow remote computers to connect”允许别的机器把HTTP/HTTPS请求发送到Fiddler上来,记住端口号8888,配置完后重启Fiddler。

2、设置Android手机:获取PC的ip地址,如通过命令行输入ipconfig获取;确定手机和PC连接在同一个局域网中,进入手机的设置->点击进入WLAN设置->选择连接到的无线网,长按弹出选项框,选择修改网络配置,选择显示高级选项,将代理设置成手动,填入PC的ip地址和端口号8888,点击保存。

3、下载证书:使用Android手机的浏览器打开http://10.2.145.187:8888,点“FiddlerRoot certificate”然后安装证书。

4、抓包操作:打开Android手机中的应用,即可进行Fiddler抓包,PC端将完整显示出抓包结果。

关于Android网络数据包获取的疑问与探索

相关问题与解答

1、问题:使用tcpdump抓包时,如何只抓取特定端口的数据包?

2、解答:可以在tcpdump命令中使用-i参数指定监听的网络接口,再加上port参数来指定要抓取的端口号,要抓取端口为8080的数据包,命令可以是/data/local/tcpdump -p -vv -s 0 -w /sdcard/mycapture.pcap port 8080,这样就会只抓取目的端口或源端口为8080的数据包。

3、问题:为什么使用PCAPdroid应用时需要root权限?

2、解答:虽然PCAPdroid本身是基于Ethereal和Tcpdump原理开发的,理论上可以在一定程度上绕过root权限限制进行数据包捕获,但在实际的Android系统中,由于系统安全机制的限制,要实现完整的数据包捕获功能,包括对一些低层网络数据的访问,仍然需要root权限,拥有root权限可以确保应用能够充分访问网络接口和相关系统资源,从而准确地捕获和分析网络数据包。