tcpdump手机抓包

####

这个没有图形界面,可以在Linux服务器上运行,这是比wireshark优秀的地方,

###

首先手机root

####

然后adb要能连接手机

####

下载tcpdump

下载连接如下:
http://www.androidtcpdump.com/android-tcpdump/downloads

 

#####

copy到手机上(root过)

然后将下载到的tcpdump拷贝到手机某个目录下

adb push /Users/liqian/Downloads/tcpdump /storage/sdcard0/tcpdump

 

####

安装到系统目录
进入adb shell,然后再获取su权限.

cp /sdcard/liqian/tcpdump /system/bin/tcpdump 

这一步copy如果报错:adb向手机写入文件,Read-only file system

执行这个命令:mount -o rw,remount /system

 

####

给tcpdump添加执行权限
命令:chmod 755 /system/bin/tcpdump

####

执行tcpdump
1|shell@ja3gduosctc:/system/bin $ su
root@ja3gduosctc:/system/bin # ./tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes

 

####

使用tcpdump抓包

代码如下:

tcpdump -i wlan0 -s 0 -w /sdcard/1.pcap

可以结束时使用Ctrl+c快捷键让tcpdump结束抓包,抓到数据会存到/sdcard/1.pcap文件内

###

tcpdump命令学习

tcpdump支持相当多的不同参数,如:

使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,

使用-c参数指定要监听的数据包数量,

使用-s:"-s 0": capture the entire packet(-s参数用以指定数据包捕获长度,此处指定为0,意为抓取完整的数据包)

使用-w参数指定将监听到的数据包写入文件中保存

####

监视指定主机的数据包

打印所有进入或离开sundown的数据包.

tcpdump host sundown
也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包

tcpdump host 210.27.48.1

####

更复杂的tcpdump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。

使用man tcpdump查看这些过滤规则的具体用法。

从上面tcpdump的输出可以看出,tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。

显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,

然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。

FreeBSD提供的一个有效的解码程序为tcpshow,它可以通过Packages Collection来安装。

 

###

重新打开一个终端(Terminal),执行如下命令
复制代码代码如下:

adb pull /sdcard/1.pcap .

 

 

###

装Wireshark并分析pcap文件

双击 1.pcap文件,1.pcap文件会自动被Wireshark打开。在Wireshark的Filter内输入如下一些过滤条件,可以更加方便地分析数 据来源。
tcp.port == 80 //过滤来自80端口的TCP数据
udp.port == 12345 //过滤来自12345端口的UDP数据
ip.src == 192.168.0.1 //过滤源IP为192.168.0.1的数据
ip.dst == 192.168.0.1 //过目的IP为192.168.0.1的数据

 

###

但是你抓到了你都看不懂,怎么办????

 

 

####

上一篇:linux 抓包tcpdump


下一篇:一文读懂迅为iMX6ULL开发板硬件和资料介绍