简介
Wireshark是非常流行的网络封包分析软件,可以截取各种网络封包,显示网络封包的详细信息
Wireshark是开源软件,可以放心使用。可以运行在Windows上和Mac OS上。对应的,linux下的抓包工具是tcpdump。
Wireshark安装
从官网下载:https://www.wireshark.org/
b. 一路next即可
c. 安装完成
Wireshark抓包原理
wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
使用的环境大致分为两种:一种是电脑直接连网络的单机环境,另一种是应用比较多的网络环境,连接交换机的情况。在单机环境下,wireshark直接抓取本机网卡的网络流量;在交换机下,wireshark通过端口镜像,ARP欺骗等方式获取局域网中的网络流量。
端口镜像:利用交换机的接口,将局域网的网络流量转发到指定电脑的网卡上;
ARP欺骗:交换机根据MAC地址转发数据,伪装其他终端的MAC地址,从而获取局域网的网络流量。
Wireshark抓包
在菜单栏 捕获-选项里,勾选WLAN网卡。
点击开始,启动抓包
此时wireshark处于抓包状态
启动cmd,ping一下www.baidu.com
此时已抓取到相关数据包,点击 停止捕获分组 查看
f. 可以在过滤栏输入 ip.addr==14.215.177.39 and icmp 过滤掉其他无关的数据包。该表达式表示只显示ICMP协议且主机IP为14.215.177.39的数据包。
Wireshark抓包界面介绍
数据包列表中会显示捕获到的数据包,每个数据包都有一个编号,时间戳,源地址,目标地址,协议,长度,以及数据包的信息。
数据包列表区中不同协议使用了不同颜色区分。
数据包详细信息
在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细面板是最重要的,用来查看协议中的每一个字段。
(1)Frame:物理层数据帧概况
(2)Ethernet II:数据链路层以太网帧头部信息
(3)Internet Protocol Version 4:互联网层IP包头部信息
(4)Transmission Control Protocol:传输层的数据段头部信息
(5)Hypertext Transfer Protocol:应用层的信息
(6)User Datagram Protocol:用户数据包协议头部字段
(7)Domain Name System:域名解析协议字段
可以点击相关报文协议,查看详细信息
wireshark过滤器
通常情况下,将会得到大量的冗余数据包列表,可以使用过滤器过滤无关数据包。wireshark提供了两种类型的过滤器:抓包过滤器和显示过滤器。
a.抓包过滤器
在菜单栏中 捕获-捕获过滤器。用于在抓取数据包前设置。
ip:host 14.215.177.39 为自己添加的过滤条件,选中进行设置,接着点击开始。
ip:host 14.215.177.38 表示只捕获主机IP为14.215.177.38的数据包。
b.显示过滤器
显示过滤器用于在抓取数据包后设置过滤条件进行过滤数据包。
在过滤栏输入ip.addr==14.215.177.38进行过滤。
过滤结果
7. wireshark过滤器表达式规则
a.抓包过滤器语法和实例
抓包过滤器类型Type(host、net、port)
方向Dir(src、dst)
协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)
逻辑运算符(&&与、|| 或、!非)
(1)协议过滤
tcp,只显示TCP协议的数据包列表
http,只查看HTTP协议的数据包列表
icmp,只显示ICMP协议的数据包列表
(2)IP过滤
host 192.168.1.104
src host 192.168.1.104
dst host 192.168.1.104
(3)端口过滤
port 80
src port 80
dst port 80
(4)逻辑运算符&&与、|| 或、!非
src host 192.168.1.104 &&dst port 80 抓取主机地址为192.168.1.80、目的端口为80的数据包
host 192.168.1.104 || host 192.168.1.102 抓取主机为192.168.1.104或者192.168.1.102的数据包
!broadcast 不抓取广播数据包
b.显示过滤器语法和实例
(1)比较操作符
比较操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于
(2)协议过滤
比较简单,直接在Filter框中直接输入协议名即可。注意:协议名称需要输入小写。
tcp,只显示TCP协议的数据包列表
http,只查看HTTP协议的数据包列表
icmp,只显示ICMP协议的数据包列表
(3) ip过滤
ip.src ==112.53.42.42 显示源地址为112.53.42.42的数据包列表
ip.dst==112.53.42.42, 显示目标地址为112.53.42.42的数据包列表
ip.addr == 112.53.42.42 显示源IP地址或目标IP地址为112.53.42.42的数据包列表
(4)端口过滤
tcp.port ==80, 显示源主机或者目的主机端口为80的数据包列表。
tcp.srcport == 80, 只显示TCP协议的源主机端口为80的数据包列表。
tcp.dstport == 80,只显示TCP协议的目的主机端口为80的数据包列表。
(5) http模式过滤
http.request.method=="GET", 只显示HTTP GET方法的。
(6)逻辑运算符为 and/or/not
过滤多个条件组合时,使用and/or。比如获取IP地址为192.168.0.104的ICMP数据包表达式为ip.addr == 192.168.0.104 and icmp
(7)按照数据包内容过滤
假设我要以ICMP层中的内容进行过滤,可以单击选中界面中的码流,在下方进行选中数据。
后面条件表达式就需要自己填写。如下我想过滤出data数据包中包含"abcd"内容的数据流。关键词是contains,完整条件表达式为data contains "abcd"
常见用显示过滤需求及其对应表达式
数据链路层:
筛选mac地址为04:f9:38:ad:13:26的数据包
eth.src == 04:f9:38:ad:13:26
筛选源mac地址为04:f9:38:ad:13:26的数据包----
eth.src == 04:f9:38:ad:13:26
网络层:
筛选ip地址为192.168.1.1的数据包
ip.addr == 192.168.1.1
筛选192.168.1.0网段的数据
ip contains "192.168.1"
传输层:
筛选端口为80的数据包
tcp.port == 80
筛选12345端口和80端口之间的数据包
tcp.port == 12345 &&tcp.port == 80
筛选从12345端口到80端口的数据包
tcp.srcport == 12345 &&tcp.dstport == 80
应用层:
特别说明: http中http.request表示请求头中的第一行(如GET index.jsp HTTP/1.1)
http.response表示响应头中的第一行(如HTTP/1.1 200 OK)
其他头部都用http.header_name形式。
筛选url中包含.php的http数据包
http.request.uri contains ".php"
筛选内容包含username的http数据包
http contains "username"