Android网络数据包的抓和分析

来源:互联网 发布:网络协议为什么要分层 编辑:程序博客网 时间:2024/05/29 02:29

1. 手机获得root权限;

2. push tcpdump到 /;

3. chmod 755 tcpdump;

4. 抓包:

adb shell tcpdump -s 0 -w /sdcard/capture.pcap

5. pull数据包到pc,使用wireshark查看数据包 。

tcpdump [-Apn] [ -c count ]  [ -i interface ] [ -s snaplen ] [ -w file ] [ expression ] 

# "-p": disable promiscuous mode

# "-s 0": capture the entire packet,从每个 报文 中 截取 snaplen 字节的数据,默认情况下68 个字节适用于IP, ICMP, TCP和UDP, 但是有可能截掉一些信息,应该把snaplen设的尽量小, 只要能够容纳你需要的协议信息就可以了。.

#"-A": Print each packet (minus its link level header) in ASCII.  Handy for capturing web pages.

#"-n": Don't convert addresses (i.e., host addresses, port numbers, etc.) to names.


expression

第一种是关于类型的关键字,包括host,net,port,分别表示主机地址,网络地址,和端口号。

例如 host 210.27.48.2,指明主机是210.27.48.2,net 202.0.0.0 指明网络地址是202.0.0.0 ,port 80 指明端口是80.

第二种是关于传输方向的关键字,包括src,dst,dst or src,dst and src。

例如 src 210.27.48.2,指明源地址是210.27.48.2,dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。

第三种是协议的关键字,包括ip,tcp,udp等类型。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

三种逻辑运算,取非运算是 'not'  '!',与运算是'and' 或 '&&',或运算符是'or' 或 '││'。


使用范例:

1。截获本机所有收到的和发出的所有的数据包:
tcpdump -i eth0 -s 0 -w nwk-log.pcap


2。截获本机端口80接收或发出的tcp数据包:

#tcpdump  -i eth0 -s 0 -w nwk-log.pcap tcp port 80


2。截获本机和两个服务器的数据包:
tcpdump -i eth0 -s 0 -w nwk-log.pcap host \ (210.27.48.2 or 210.27.48.3 \) 


3。截获本机和两个服务器的HTTP数据包,翻译过来就是:source是两个服务器地址的数据包,或者通过TCP端口80或者8080,且目的地址是服务器地址的数据包:
tcpdump -i eth0 -s 0 -w nwk-log.pcap src host \(119.75.218.77 or 61.135.169.125\) or \(tcp dst port \(80 or 8080\) and dst host \(119.75.218.77 or 61.135.169.125\)\)


原创粉丝点击