笔记-网络-抓包-wireshark

笔记-网络-抓包-wireshark

1.      开始

环境:win8笔记本,无线网

1.1.    无线网卡设置

因为需抓捕无线网卡上的数据包,需要进行一项设置,如捕获有线网卡,无需设置。

打开wireshark菜单项“Capture”》 “Capture Options”;

打开混杂模式选项。

原因:如果不进行该设置无法捕获数据包,原因是无线网络不同于有线网络,无线采用CSMA/CA的方式,属于半双工,不能同时发送和接收。而在有线网卡中传输的数据包都可以直接捕获,无须将网卡设置为混杂模式。

大部分无线网卡不支持混杂模式,支持混杂模式的无限网卡价格不菲。

混杂模式:属于网络术语,代表网卡是否仅接收目标是本机的数据包。在混杂模式下,可以监听到局域网中所有数据包。

2.      使用

2.1.    简单的使用及保存

wireshark>>捕获>>开始,就开始捕获数据包了。

文件》保存可以保存捕获数据为文件。

2.2.    过滤器

过滤器有两种:

capturefilters:决定捕捉什么样的数据包,在开始捕捉前设置;

displayfilters:由逻辑表达式决定窗口显示捕捉结果的部分内容,可任意修改而不影响捕获的数据。

2.3.    过滤规则

2.3.1.   过滤ip

ip.src == 192.168.1.107 or ip.dst == 192.168.1.107

ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP

2.3.2.   过滤端口

tcp.port eq 80 // 不管端口是来源的还是目标的都显示

tcp.port == 80

tcp.port eq 2722

tcp.port eq 80 or udp.port eq 80

tcp.dstport == 80 // 只显tcp协议的目标端口80

tcp.srcport == 80 // 只显tcp协议的来源端口80

udp.port eq 15000

过滤端口范围

tcp.port >= 1 and tcp.port <= 80

2.3.3.   过滤协议

tcp udp arp icmp http等等

排除arp包,如!arp   或者 not arp

2.3.4.   过滤MAC

eth.dst == A0:00:00:04:C5:84 // 过滤目标mac

eth.src eq A0:00:00:04:C5:84 // 过滤来源mac

eth.dst==A0:00:00:04:C5:84

eth.dst==A0-00-00-04-C5-84

eth.addr eq A0:00:00:04:C5:84 // 过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的

less than 小于 < lt

小于等于 le

等于 eq

大于 gt

大于等于 ge

不等 ne

2.3.5.   包长度过滤

udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和

tcp.len >= 7   指的是ip数据包(tcp下面那块数据),不包括tcp本身

ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后

frame.len == 119 整个数据包长度,从eth开始到最后

eth —> ip or arp —> tcp or udp —> data

2.3.6.   http协议过滤

http.request.method == “GET”

http.request.method == “POST”

http.request.uri == “/img/logo-edu.gif”

http contains “GET”

http contains “HTTP/1.”

// GET包

http.request.method == “GET” && http contains “Host: “

http.request.method == “GET” && http contains “User-Agent: “

// POST包

http.request.method == “POST” && http contains “Host: “

http.request.method == “POST” && http contains “User-Agent: “

// 响应包

http contains “HTTP/1.1 200 OK” && http contains “Content-Type: “

http contains “HTTP/1.0 200 OK” && http contains “Content-Type: “

一定包含如下

Content-Type:

2.3.7.   TCP参数过滤

tcp.flags 显示包含TCP标志的封包。

tcp.flags.syn == 0x02     显示包含TCP SYN标志的封包。

tcp.window_size == 0 && tcp.flags.reset != 1

2.3.8.   包内容过滤

-----------------------------------------------

tcp[20]表示从20开始,取1个字符

tcp[20:]表示从20开始,取1个字符以上

注: 些两虚线中的内容在我的wireshark(linux)上测试未通过。

--------------------------------------------------

tcp[20:8]表示从20开始,取8个字符

tcp[offset,n]

udp[8:3]==81:60:03 // 偏移8个bytes,再取3个数,是否与==后面的数据相等?

udp[8:1]==32   如果我猜的没有错的话,应该是udp[offset:截取个数]=nValue

eth.addr[0:3]==00:06:5B

例子:

判断upd下面那块数据包前三个是否等于0x20 0x21 0x22

我们都知道udp固定长度为8

udp[8:3]==20:21:22

判断tcp那块数据包前三个是否等于0x20 0x21 0x22

tcp一般情况下,长度为20,但也有不是20的时候

tcp[8:3]==20:21:22

如果想得到最准确的,应该先知道tcp长度

matches(匹配)和contains(包含某字符串)语法

ip.src==192.168.1.107 and udp[8:5] matches “\\x02\\x12\\x21\\x00\\x22″        ------???--------

ip.src==192.168.1.107 and udp contains 02:12:21:00:22

ip.src==192.168.1.107 and tcp contains “GET”

udp contains 7c:7c:7d:7d 匹配payload中含有0x7c7c7d7d的UDP数据包,不一定是从第一字节匹配。

2.3.9.   DHCP过滤

注意:DHCP协议的检索规则不是dhcp/DHCP, 而是bootp

以寻找伪造DHCP服务器为例,介绍Wireshark的用法。在显示过滤器中加入过滤规则,

显示所有非来自DHCP服务器并且bootp.type==0x02(Offer/Ack/NAK)的信息:

bootp.type==0x02 and not ip.src==192.168.1.1

上一篇:python标准库基础之mmap:内存映射文件


下一篇:Directive间的通信