Wireshark(前称Ethereal)Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的途径取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是全世界最广泛的网络封包分析软件之一。官网地址:https://www.wireshark.org
抓包过滤器
1:type(类型)限定词
host、net、port、 portrange
2:dir(方向)限定词
src、dst
3:Proto(协议)限定词
ether、arp、icmp、ip、tcp、udp、http、ftp
- 逻辑预算符
1:连接运算符:与(&&),and
2:选择运算符:或(||),or
3:否定运算符:非(!),not
- 比较运算符
- Ethernet过滤器(第二层过滤器)
1:ether host <> :抓取指定的以太网流量(源或目的MAC地址)
如:ether host 1C-6F-65-5D-EB-94
2:ether dst <> :抓取去往指定目的MAC的以太网流量
如:ether dst host 1C-6F-65-5D-EB-94
或:ether dst 1C-6F-65-5D-EB-94
3:ether src<> :抓取来源指定源MAC的以太网流量
如:ether src 1C-6F-65-5D-EB-94
4:ether broadcast :抓取以太网广播流量 ?
5:ether multicast :抓取以太网多播流量 ?
6:ether proto <> :所抓指定的以太网协议类型的流量
如:ether proto 0x0806 ether proto 0x0800 ether proto 0x86dd
7:vlan <>:只抓取指定vlan的流量
如:vlan 2
! vlan 2 not vlan 2
vlan 2 && vlan 3 ? vlan 2 and vlan 3 ?
vlan 2 || vlan 3
vlan 2 or vlan 3
- 主机和网络过滤器(第三层过滤器)
1:ip、ip6:只抓取IPv4或者IPv6的数据包
2:host <>:只抓取来源源于或发往所指定的主机名或IP地址的流量
如:host 192.168.1.1 或 host www.baidu.com 或 host xiaoniupc
3:dst host <>:只抓取发往指定主机名或IP地址的流量
4:src host <>:只抓取来源于指定主机名或IP地址的流量
5:gateway <>:只抓取穿过host的流量 ? 6:net<>:只抓取来源于或发往指定网络号的流量
如:net 192.168.1.0/24 或:net 192.168.1.0 mask 255.255.255.0
7:dst net <>:只抓取发往指定网络号的流量
8:src net <>:只抓取来源于指定网络号的流量
- 主机和网络过滤器(第三层过滤器)
9:ip broadcast :只抓取IP广播包
10:ip multicast :只抓取IP多播包
11:ip proto <>:只抓取IP报头的协议类型字段值等于特定值的数据包
如:常见协议号:1、2、6、17、88、89、47、112等 ?
12:icmp [icmptype]==<>:只抓取特定类型的ICMP数据包
如:icmp [icmptype]==0 或 icmp [icmptype] == icmp-reply
如:icmp [icmptype]==8 或 icmp [icmptype] == icmp-echo
- TCP/UDP过滤器(第四层过滤器)
1:port <>:抓取源或目的端口匹配的数据包
如:port 80 或 port http
2:dst port <>:抓取目的端口匹配的数据包
3:src port <>:抓取源端口匹配的数据包
4:tcp/udp dst/src portrange <>-<>:抓取TCP或UDP的源或目的 端口
在指定范围内的数据包
如:tcp dst portrange 5000-6000
5:tcp[tcpflags] & (tcp-rst)==1:抓取RST标识位为1的TCP数据包
二,关于TCP相关
- TCP故障排除常用过滤器
1:tcp[13] & 0x00 = 0:用来抓取所有标志位都没有置1的TCP流量
2:tcp [13] & 0x01 = 1:用来抓取FIN位是1,但ACK位是0的TCP流量
3:tcp [13] & 0x03 = 3:用来抓取SYN和FIN位同时是1的TCP流量
4:tcp [13] & 0x05 = 5:用来抓取RST和FIN位同时是1的TCP流量
5:tcp [13] & 0x06 = 6:用来抓取SYN和RST位同时是1的TCP流量
6:tcp [13] & 0x08 = 8:用来抓取PSH位是1,但ACK位是0的TCP流量
- 配置字节偏移和净载匹配型过滤器
1:proto [offset:bytes]
proto:要抓取的协议
offset:从协议头部开始所偏移的字节数
bytes:抓包过滤器所要检查的字节数
如:tcp [2:2]>100 and tcp[2:2]<200
端口范围是100-200的TCP数据包
tcp[14:2]<8192
抓取窗口大小字段低于8192的TCP数据包
- 配置字节偏移和净载匹配型过滤器
1:ip[2:2]==800:抓取长度为800的IP数据包
2:ip[8]==64:抓取TTL值为64的IP数据包
3:ip[9]==0x6:抓取协议类型字段为6的IP数据包
数据包长度过滤器
1:less <>:抓取小于等于指定值的数据包
2:greater <>:抓取大于等于指定值的数据包
- 复合型过滤器
1:只抓取单播包
not broadcast and not multicast
2:只抓取主机192.168.1.5的telnet流量
tcp port 23 and host 192.168.1.5
3:只抓取主机除192.168.1.5外发起的telnet流量
tcp port 23 and not src 192.168.1.5
4:只抓取TCP源端口范围为5000-6000之间的telnet流量
tcp dst port 23 and tcp src portrange 5000-6000
三,显示过滤器
- Ethernet过滤器
1:eth.addr==<>:显示具有指定MAC地址的数据帧
2:eth.src ==<>:显示具有指定源MAC地址的数据帧
3:eth.dst==<>:显示具有指定目的MAC地址的数据帧
4:eth.type==<>:显示指定以太网类型的流量
5:eth.dst==ffff.ffff.ffff:显示以太网广播帧
- ARP过滤器
1:arp
2:arp.opcode==1 :显示ARP请求帧
3:arp.opcode==2 :显示ARP应答帧
4:arp.opcode==3 :显示RARP请求帧
5:arp.opcode==4 :显示RARP应答帧
6:arp.src.hw_mac==<> :显示指定MAC地址主机发出的ARP帧
7:arp.dst.hw_mac==<> :显示目的是指定MAC的ARP帧
- IP过滤器
1:ip、ipv6
2:ip.addr==<>:显示发往或源自指定IP地址的数据包 ip.src、ip.dst
192.168.1.1 192.168.1.0/24
3:ip.ttl==<>:显示IP包头TTL字段值为指定值的数据包 < 、>
4:ip.len==<>:显示指定长度的IP数据包 < 、>
5:ip.dst==224.0.0.0/4:显示发往组播地址的所有数ipv4据包
6:ipv6.dst==ff00::/8:显示发往组播地址的所有数ipv6据包
7:ip.version==<>:显示指定IP版本号的IP数据包
8:ipv6.addr=<>:显示发往或源自指定IPv6地址的数据包
- TCP/UDP过滤器
1:tcp、udp
2:tcp.port==<>:显示指定的TCP端口的流量 tcp.dstport 、tcp.srcport
3:tcp.analysis :分析TCP性能有关参数
tcp.analysis.retransmission:显示重传的TCP数据包
tcp.analysis.duplicate_ack:显示确认多次的TCP数据包
tcp.analysis.zero_windows:显示含零窗口通告信息的TCP数据包
4:tcp.flags:检查数据包TCP头部中的标记位
tcp.flags.syn==1:显示syn置1的数据包
tcp.flags.reset==1:显示reset置1的数据包
tcp.flags.fin==1:显示fin置1的数据包
5:tcp.window_size_value < X:显示tcp头部窗口大小字段低于指定值得数据包
6:......
- DNS过滤器
1:dns.flags.response==0:显示dns查询报文
2:dns.flags.response==1:显示dns响应报文
- HTTP过滤器
1:http.host==<>:显示访问指定主机名或域名的HTTP协议数据包
如:http.host==www.baidu.com
2:http.request.uri contains “”:显示HTTP客户端发起的包含某指定字符串的URI请
求的HTTP数据包
如:http.request.uri contains "caoliushequ"
3:http.response.code==404:显示代码为404的HTTP响应数据包
- FTP过滤器
1:ftp:显示从TCP21端口传送的包含FTP命令的FTP数据包
2:ftp-data:显示从TCP20端口或其他端口发出的包含实际FTP数据的
FTP报文
3:ftp.request.command==<> :显示包含特定请求的ftp数据包
如:ftp.request.command=="USER"
如:ftp.request.command=="PASS"
字节偏移型过滤器
1:eth.dst[0:3]==01:00:5e
2:eth.dst[0:2]==33:33
- 复合型显示过滤器案例
1:arp and icmp
2:not arp and not icmp
3:ip.src==10.0.0.0/24 and eth.dst==ffff.ffff.ffff
4:ip.src==192.168.1.1 && tcp.flags.syn==1 &&
tcp.flags.ack==0
四,工作常用过滤器
tcp src port 443只抓取来源端口是443的数据
not arp 不获取arp 数据
port 80 获取端口是80的数据,不指定代表全部都获取
src 192.168.1.121 and port 233,获取来源ip是192.168.1.121端口是233的数据
host 192.168.1.1捕获某个IP地址的流量
tcp host 192.168.1.1捕获某个IP地址的TCP流量
tcp port 443 and host 192.168.1.1 捕获某个IP地址的HTTPS流量
net 192.168.1.0/24捕获特定IP段的流量
ether src host 00:11:22:33:44:55捕获来自特定MAC地址的流量
只显示本地发出去的包
ip.src==192.168.8.60
过滤从某地址发出的请求
ip.src==192.168.8.60
过滤发送到某地址的请求
ip.dst==192.168.8.60
过滤http协议
http过滤某地址
http.request.uri=="/projectname/a.html"
过滤全地址(它与uri的区别是,包含host)
http.request.full_uri=="www.mydomain.com/projectname/a.html"
snmp || dns || icmp 显示SNMP或DNS或ICMP封包。
ip.addr == 10.1.1.1
显示来源或目的IP地址为10.1.1.1的封包。
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6
显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。
换句话说,显示的封包将会为:
来源IP:除了10.1.2.3以外任意;目的IP:任意
以及
来源IP:任意;目的IP:除了10.4.5.6以外任意
ip.src != 10.1.2.3 and ip.dst != 10.4.5.6
显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。
换句话说,显示的封包将会为:
来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意
tcp.port == 25 显示来源或目的TCP端口号为25的封包。
tcp.dstport == 25 显示目的TCP端口号为25的封包。
tcp.flags 显示包含TCP标志的封包。
tcp.flags.syn == 0x02 显示包含TCP SYN标志的封包
显示过滤器
tcp.time_delta >= 0.180
tcp.analysis.initial_rtt >= 0.100
ip.addr eq 192.168.3.137 and ip.addr eq 1.116.131.91
ip.addr eq 192.168.3.137 and ip.addr eq 1.116.131.91
tcp.analysis.ack_rtt >= 0.100
http.time >= 0.100
dns.time >= 0.100
icmp.resptime > 4
frame.number !=2
frame.time_delta > 0.01
eth.addr==ff:ff:ff:ff:ff:ff
ip.src==192.168.30.0/24
ip.addr==192.168.30.102
ip.src==60.173.172.139
ip.dst==60.173.172.139
ip.addr eq 192.168.30.104 and ip.addr eq 60.173.172.139
ip.len>1500
ip.flags.df==1
ip.checksum_bad.expert
tcp.analysis.retransmission
ip.src==60.173.172.139 and tcp.analysis.retransmission
http and !(tcp.analysis.retransmission)
ip.addr == 192.168.0.0 and icmp
ip.addr == 192.168.30.105 and tcp.port ==443
http.response
ip.len>1280 and ip.addr==192.168.10.100
ip.len>1280 and not ip.addr==192.168.20.113
ip.addr == 192.168.30.100 and icmp
ip.addr == 192.168.0.0 and icmp
bootp报文协议
eth.addr == ff:ff:ff:ff:ff:ff or ip.addr==255.255.255.255
http.host == "www.taobao.com" 查找域名
http.host == "www.youtube.com" www.google.com
http.host == "www.google.com" cn.pornhub.com www.netflix.com x.com www.facebook.com
ip.addr==192.168.4.101 or dns.qry.name contains "www.google.com"
ip.addr==192.168.4.100 and bittorrent 过滤BT
1.配置Ethernet 过滤器
基于第二层MAC地址或Ethernet帧的某些属性来进行过滤。
eth.addr == 00:00:5e:00:53:00:只显示具体指定 MAC 地址的数据帧。
eth.src == 00:00:5e:00:53:00:只显示具体指定源 MAC地址的数据帧。
eth.dst == 00:0||0:5e:00:53:00:只显示具体指定目的 MAC地址的数据帧。
eth.type == 0x0806:只显示指定以太网类型的流量。这里0x0806表示ARP协
议。
2.配置主机和网络过滤器
主机和网络过滤器是指基于第三层IP地址或某IP数据包的某些属性来进行过滤。
ip.addr == 192.168.0.104:只显示发往或源自指定IP地址主机的数据包。
ip.src == 192.168.0.104:只显示由指定 IP 地址主机发出的数据包。
ip.dst == 192.168.0.104:只显示发往指定 IP 地址主机的数据包。
ip.ttl == 64:只显示IP 包头中TTL字段值为指定值的数据包。
ip.addr == 192.168.1.0/24:只显示指定网段的所有IP地址的数据包。
3.配置TCP/UDP过滤器
TCP 和UDP是IP协议簇中两种主要协议。根据第四层协议TCP/UDP所涉及的
端口或者参数来实施过滤。
tcp.port == 80:只显示TCP源或目的端口为指定端口的数据包。
tcp.srcport == 80:只显示 TCP 源端口为指定端口的数据包。
tcp.dstport == 80:只显示 TCP 目的端口为指定端口的数据包。
tcp.flags.syn == 1:只显示 SYN 标记位置为1的TCP数据包。
tcp.flags.reset == 1:只显示 RST 标记位置为1的TCP数据包。
28
4.配置协议所独有的过滤器
配置常用应用层协议,如DNS协议、HTTP协议、FTP协议等的显示过滤器。
http:只显示HTTP协议的数据包。
http.host == www.toutiao.com:只显示访问指定主机名的HTTP协议数据包。
http.request.method == GET:只显示 GET 方法的HTTP协议数据包。
dns.flags.response == 0:只显示所有 DNS 查询的数据包。
dns.flags.response == 1:只显示所有 DNS 响应的数据包
Wireshark远程抓包图文教程:https://www.hao0564.com/4372.html
netsh interface ipv4 show interface
ping 192.168.4.1 -l 1472 -n 1 -f