文章目录
背景
这篇文章我其实没打算写的,可能是懒吧!
不过有个测试小妹妹测试我目前负责的一个项目,她大多数时候是需要进行网络抓包来分析相关问题的。但是因为她抓的网络包有的时候不准确,故我本人也远程连接过她的电脑抓了几次,使用的是 tcpdump 抓的网络包。
最后决定写这篇文章记录一下抓包的过程,有些简单的东西文章里不会再详细说了,这部分请同学们自行学习。
郝可爱!好好看,好好学!
步骤
连接上 Android 设备
adb 命令如下:
adb connect [device ip address]
连接成功后输入命令 adb devices
可以查看已经连接的设备,我这里因为盒子有限,故使用 Android 创建的虚拟机(自带 root 权限)给同学们演示,两种效果完全一样。
上图表示连接设备成功了。
将 tcpdump 文件 push 进 Android 设备某个目录中
Android 设备目录,下面我统称为设备目录,因为 Android 设备是 linux 内核系统,故相关 linux 命令也不会去细说,同学们自己学习,都是比较简单的命令。
- 将本机的 tcpdump 文件 push 进设备目录中
adb push [本机的tcpdump文件绝对路径] [设备目录的某个目录下]
如下图示:
上图表示 push 文件 tcpdump 到设备目录 /sdcard/ 下成功了。
我们进入 linux 系统的 sdcard 目录下查看一下,如下图示:
上图就表示已经成功将本机的 tcpdump 文件 push 到了设备的 sdcard 目录下。
使用 tcpdump 抓包
有时候需要修改 tcpdump 文件的为可执行文件,我们可以使用如下命令:
chmod 755 [设备目录下的tcpdump文件]
如果tcpdump文件刚开时就是可执行的,那么就不用再改了,直接执行命令抓包即可。
那怎么看是否是可执行的,可以执行一下抓包命令就能看出来,如果是可执行的,那么命令执行不会报错,如果是不可执行的,那么会有错误提示的。
我们直接执行:
tcpdump -i any -p -s 0 -w capture.pcap
相关参数说明如下:
- “-i any”: listen on any network interface
- “-p”: disable promiscuous mode (doesn’t work anyway)
- “-s 0”: capture the entire packet
- “-w”: write packets to a file (rather than printing to stdout)
… do whatever you want to capture, then ^C to stop it …
如下图示:
如上图示表示正在抓包了,也间接说明了当前 linux 下的这个用户是对这个文件具有可执行权限的。
使用 ctrl + c
组合键可以关闭当前抓包。上述命令抓的包会生成到设备目录的 sdcard 下(因为我的抓包命令中,生成的 capture.pcap 网络包文件就指定在了当前的 sdcard 目录下,故抓的包会在 sdcard 目录下。同学们自己可以指定生成文件的目录,这里就不细说了),如下图示:
注意:有的同学可能会 chmod 失败,可能是因为当前的 linux 系统下的用户没有权限修改文件的属性,所以建议 root 一下,权限所有。
将 capture.pcap 网络包文件 pull 到本机
上面操作做完后,网络包文件已经抓完且生成了,所以我们可以使用 adb 命令将设备目录 sdcard 下的 capture.pcap 文件拉取到本地计算机的某个目录下。
我们使用命令:
adb pull [设备目录下的网络包绝对路径]
如下图示:
如上图示,表示把网络包文件成功的拉取到了本地的 D 盘根目录下,这里你是在哪个目录下执行的拉取文件命令,那么文件就会被拉取到哪个目录下。
到这里就完成了所有的抓包操作了。
如果还有抓包失败的或者是中间某个步骤失败的,大概率是未 root 的原因。可以评论说明问题或者是私信我,我尽力解答。
PS:郝可爱,还学不会的话,那就傻瓜!懂?
技术永不眠!我们下期见!