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 -i wlan0 -s 0 -c 2 -X icmp
使用十六进制输出
当我们想要检查包的内容是否有问题的时候,十六进制的输出很有帮助:
-X 是十六进制输出
-c 是输出多少个,2就是输出两个,不加就是输出全部,
###
基于包大小进行筛选
如果你正在查看特定大小的包,你可以使用这个参数。使用 less、greater 或者对应的数学符号进行过滤:
tcpdump less 32 tcpdump greater 64 tcpdump <= 128
###
-A:以ASCII形式打印每个包,对抓取web page很方便(最小化链路层报头)。
-r 读取我们输出的文件,
-X 就是16进制查看,
这个地方就可以加很多的参数进行过滤了
####
更复杂的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的数据
###
但是你抓到了你都看不懂,怎么办????
####