Wireshark使用教程

  1. 简介

Wireshark是非常流行的网络封包分析软件,可以截取各种网络封包,显示网络封包的详细信息

Wireshark是开源软件,可以放心使用。可以运行在Windows上和Mac OS上。对应的,linux下的抓包工具是tcpdump。

  1. Wireshark安装

  1. 从官网下载:https://www.wireshark.org/

Wireshark使用教程_第1张图片

b. 一路next即可

c. 安装完成

Wireshark使用教程_第2张图片

  1. Wireshark抓包原理

  1. wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

  1. 使用的环境大致分为两种:一种是电脑直接连网络的单机环境,另一种是应用比较多的网络环境,连接交换机的情况。在单机环境下,wireshark直接抓取本机网卡的网络流量;在交换机下,wireshark通过端口镜像,ARP欺骗等方式获取局域网中的网络流量。

  1. 端口镜像:利用交换机的接口,将局域网的网络流量转发到指定电脑的网卡上;

  1. ARP欺骗:交换机根据MAC地址转发数据,伪装其他终端的MAC地址,从而获取局域网的网络流量。

  1. Wireshark抓包

  1. 在菜单栏 捕获-选项里,勾选WLAN网卡。

Wireshark使用教程_第3张图片

  1. 点击开始,启动抓包

Wireshark使用教程_第4张图片

  1. 此时wireshark处于抓包状态

Wireshark使用教程_第5张图片

  1. 启动cmd,ping一下www.baidu.com

Wireshark使用教程_第6张图片

  1. 此时已抓取到相关数据包,点击 停止捕获分组 查看

Wireshark使用教程_第7张图片

f.  可以在过滤栏输入 ip.addr==14.215.177.39 and icmp  过滤掉其他无关的数据包。该表达式表示只显示ICMP协议且主机IP为14.215.177.39的数据包。

Wireshark使用教程_第8张图片

  1. Wireshark抓包界面介绍

Wireshark使用教程_第9张图片

数据包列表中会显示捕获到的数据包,每个数据包都有一个编号,时间戳,源地址,目标地址,协议,长度,以及数据包的信息。

Wireshark使用教程_第10张图片

数据包列表区中不同协议使用了不同颜色区分。

Wireshark使用教程_第11张图片

数据包详细信息

在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细面板是最重要的,用来查看协议中的每一个字段。

(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使用教程_第12张图片
  1.  wireshark过滤器

通常情况下,将会得到大量的冗余数据包列表,可以使用过滤器过滤无关数据包。wireshark提供了两种类型的过滤器:抓包过滤器和显示过滤器。

a.抓包过滤器

在菜单栏中 捕获-捕获过滤器。用于在抓取数据包前设置。

Wireshark使用教程_第13张图片

ip:host 14.215.177.39 为自己添加的过滤条件,选中进行设置,接着点击开始。 

Wireshark使用教程_第14张图片

ip:host 14.215.177.38 表示只捕获主机IP为14.215.177.38的数据包。

Wireshark使用教程_第15张图片

b.显示过滤器

显示过滤器用于在抓取数据包后设置过滤条件进行过滤数据包。

在过滤栏输入ip.addr==14.215.177.38进行过滤。

Wireshark使用教程_第16张图片

过滤结果

Wireshark使用教程_第17张图片

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"

你可能感兴趣的:(wireshark,测试工具,网络)