抓取时过滤
捕获——>捕获过滤器,这是wireshark默认的一些捕获过滤器,我们可以参照他的语法,自己在左下角自己添加或者删除捕获过滤器
然后如果我们想抓取时对数据包过滤,捕获——>选择,然后选择我们要抓取数据包的网卡,在下面选择我们的过滤器。绿色的话表示语法没有问题,设置好了之后点击开始就可以抓取数据包了
抓取后的过滤
我们一般都是抓取完数据包后进行过滤的,在上方输入我们的过滤语法
过滤地址 ip.addr==192.168.10.10 或 ip.addr eq 192.168.10.10 #过滤地址 ip.src==192.168.10.10 #过滤源地址 ip.dst==192.168.10.10 #过滤目的地址 过滤协议,直接输入协议名 icmp http 过滤协议和端口 tcp.port==80 tcp.srcport==80 tcp.dstport==80 过滤http协议的请求方式 http.request.method=="GET" http.request.method=="POST" http.request.uri contains admin #url中包含admin的 http.request.code==404 #http请求状态码的 连接符 && || and or 通过连接符可以把上面的命令连接在一起,比如: ip.src==192.168.10.10 and http.request.method=="POST"
Frame:物理层的数据帧概况。 Ethernet II:数据链路层以太网帧头部信息。 Internet Protocol Version 4:互联网层IP包头部信息。 Transmission Control Protocol:传输层的数据段头部信息,此处是TCP协议。 Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议。
下面分别介绍下在图1.48中,帧、包和段内展开的内容。如下所示:
(1)物理层的数据帧概况
Frame 5: 268 bytes on wire (2144 bits), 268 bytes captured (2144 bits) on interface 0 #5号帧,线路268字节,实际捕获268字节 Interface id: 0 #接口id Encapsulation type: Ethernet (1) #封装类型 Arrival Time: Jun 11, 2015 05:12:18.469086000 中国标准时间 #捕获日期和时间 [Time shift for this packet: 0.000000000 seconds] Epoch Time: 1402449138.469086000 seconds [Time delta from previous captured frame: 0.025257000 seconds] #此包与前一包的时间间隔 [Time since reference or first frame: 0.537138000 seconds] #此包与第一帧的时间间隔 Frame Number: 5 #帧序号 Frame Length: 268 bytes (2144 bits) #帧长度 Capture Length: 268 bytes (2144 bits) #捕获长度 [Frame is marked: False] #此帧是否做了标记:否 [Frame is ignored: False] #此帧是否被忽略:否 [Protocols in frame: eth:ip:tcp:http] #帧内封装的协议层次结构 [Number of per-protocol-data: 2] # [Hypertext Transfer Protocol, key 0] [Transmission Control Protocol, key 0] [Coloring Rule Name: HTTP] #着色标记的协议名称 [Coloring Rule String: http || tcp.port == 80] #着色规则显示的字符串
(2)数据链路层以太网帧头部信息
Ethernet II, Src: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89), Dst: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0) Destination: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0) #目标MAC地址 Source: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89) #源MAC地址 Type: IP (0x0800)
(3)互联网层IP包头部信息
Internet Protocol Version 4, Src: 192.168.0.104 (192.168.0.104), Dst: 61.182.140.146 (61.182.140.146) Version: 4 #互联网协议IPv4 Header length: 20 bytes #IP包头部长度 Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) #差分服务字段 Total Length: 254 #IP包的总长度 Identification: 0x5bb5 (23477) #标志字段 Flags: 0x02 (Don't Fragment) #标记字段 Fragment offset: 0 #分的偏移量 Time to live: 64 #生存期TTL Protocol: TCP (6) #此包内封装的上层协议为TCP Header checksum: 0x52ec [validation disabled] #头部数据的校验和 Source: 192.168.0.104 (192.168.0.104) #源IP地址 Destination: 61.182.140.146 (61.182.140.146) #目标IP地址
(4)传输层TCP数据段头部信息
Transmission Control Protocol, Src Port: 51833 (51833), Dst Port: http (80), Seq: 1, Ack: 1, Len: 214 Source port: 51833 (51833) #源端口号 Destination port: http (80) #目标端口号 Sequence number: 1 (relative sequence number) #序列号(相对序列号) [Next sequence number: 215 (relative sequence number)] #下一个序列号 Acknowledgment number: 1 (relative ack number) #确认序列号 Header length: 20 bytes #头部长度 Flags: 0x018 (PSH, ACK) #TCP标记字段 Window size value: 64800 #流量控制的窗口大小 Checksum: 0x677e [validation disabled] #TCP数据段的校验和
Wireshark分析数据包
本节以访问Web浏览器为例将介绍分析网络数据的方法。
通常在访问Web服务器过程中,会涉及到DNS、TCP、HTTP三种协议。
【实例1-3】分析访问Web浏览数据。具体操作步骤如下所示:
(1)捕获访问www.qq.com网站的数据包,并保存该文件名为http-wireshar.pcapng。本例中捕获的文件如图1.49所示。
图1.49 http-wireshar.pcapng捕获文件
(2)接下来通过该捕获文件中的数据,分析访问Web的整个过程。在该捕获过程中,将包含DNS请求、响应、TCP三次握手等数据。如图1.50所示,在该界面显示了在访问网站之间DNS解析过程。
图1.50 DNS解析
(3)在该界面31帧,是DNS将www.qq.com解析为一个IP地址的数据包(被称为一个“A”记录)。32帧表示返回一个与主机名相关的IP地址的DNS响应包。如果客户端支持IPv4和IPv6,在该界面将会看到查找一个IPv6地址(被称为“AAAA”记录)。此时,DNS服务器将响应一个IPv6地址或混杂的信息。
说明:31帧是客户端请求百度,通过DNS服务器解析IP地址的过程。标识为“A”记录。
- 32帧是DNS服务器回应客户端请求的过程。标识为response.
(4)如图1.51所示,在该界面看客户端和服务器之间TCP三次握手(33、34、35帧)和客户端请求的GET主页面(36帧)。然后服务器收到请求(37帧)并发送响应包(38帧)。
说明:33帧是客户端向服务器发送TCP请求建立连接。标识为SYN。
- 34帧是服务器得到请求后向客户端回应确认包的过程。标识为SYN,ACK。
- 35帧是客户端回应服务器发送确认包的过程,将于服务器建立连接。标识为ACK。
- 36帧是客户端向服务器发送HTTP请求内容的过程。标识为GET。
- 37帧是服务器相应客户端请求的过程,收到请求。标识为ACK。
- 38帧是服务器向客户端回应内容的过程。
图1.51 TCP三次握手
(5)当客户端从相同的服务器上再次请求访问另一个链接时,将会再次看到一个GET数据包(1909帧),如图1.52所示。
图1.52 请求另一个元素
此外,如果链接另一个Web站点时,客户端将再次对下一个站点进行DNS查询(156、157帧),TCP三次握手(158、159、160帧)。如图1.53所示。
图1.53 请求下一个站点
Wireshark捕获别人的数据包
如果都在一个局域网内,而且知道别人的IP地址的话,也可以利用Wireshark捕获到别人的数据包。具体方法如下:
1.端口映射
局域网内,在同一交换机下工作的PC机,如图1.29所示。PC机A和PC机B在同一交换机下工作,PC机A安装Wireshark后,把交换机上任意一个PC机的数据端口做镜像,设置交换机来复制所有数据到用户交换端口下的Wireshark端口,这时PC机A就可以抓取到其他PC机的数据了,如抓取PC机B的数据。
2.使用集线器
我们可以把图1.29中的交换机换成集线器,这样的话所有的数据包都是通发的。也就是说,不管是谁的数据包都会发到这个集线器上的每一个计算机。只要将网卡设置为混杂模式就能抓到别人的包。
3.利用ARP欺骗
我们都知道,发送、接受数据都要经过路由器,如图1.30所示。该图中PC机A安装Wireshark后,可以利用ARP欺骗,来抓取PC机B、PC机C或PC机B与PC机C之间的数据包了。PC机A在局域网内发送ARP包,使其他计算机都误以为它是网关。这样的话,其他计算机都会将它们的数据包发送到PC机A那里,因此PC机A就可以抓到它们的包了。
图1.29 捕获PC机B数据包 图1.30 捕获数据包
-
⑤Packet List面板——显示每个数据帧的摘要。
-
⑥Packet Details面板——分析封包的详细信息。
-
⑦Packet Bytes面板——以十六进制和ASCII格式显示数据包的细节。
-
⑧状态栏——分组、已显示、已标记帧的数量,配置文件。
1.Packet List面板
该面板用表格的形式显示了当前捕获文件中的所有数据包。从图1.38中,可以看到该面板中共有七列,每列内容如下所示:
-
q No(Number)列:包的编号。该编号不会发生改变,即使使用了过滤也同样如此。
-
q Time列:包的时间戳。时间格式可以自己设置。
-
q Source和Destination列:显示包的源地址和目标地址。
-
q Protocol列:显示包的协议类型。
-
q Length列:显示包的长度。
-
q Info列:显示包的附加信息。
在该面板中,可以对面板中的列进行排序、调整列位置、隐藏列、显示列、重命名或删除列等操作。下面以例子的形式将分别介绍在该面板中可操作的功能。
【实例1-4】演示Packet List面板中可实现的功能。如下所示:
(1)列排序
打开一个捕获文件http.pcapng,如图1.39所示。
图1.39 http.pcapng捕获文件 图1.40 排序Protocol列
2.Packet Details面板
该面板分层次地显示了一个数据包中的内容,并且可以通过展开或收缩来显示这个数据包中所捕获到的全部内容。
在Packet Details面板中,默认显示的数据的详细信息都是合并的。如果要查看,可以单击每行前面的小三角展开帧的会话。用户也可以选择其中一行并右键单击,弹出菜单栏。如图1.46所示。
在菜单栏中选择展开子树(单个会话)或展开全部会话。
3.Packet Bytes面板
该面板中的内容可能是最令人困惑的。因为它显示了一个数据包未经处理的原始样子,也就是其在链路上传播时的样子。
在该面板中的数据是以十六进制和ASCII格式显示了帧的内容。当在Packet Details面板中选择任意一个字段后,在Packet Bytes面板中包含该字段的字节也高亮显示。如果不想看到Packet Bytes面板的话,可以在菜单栏中依次选择“视图”|“分组字节流(B)”命令将其关闭。当查看的时候,使用同样的方法将其打开。
Wireshark状态栏介绍
状态栏是由两个按钮和三列组成的。其中,这三列的大小在必要时可以调整。状态栏中每部分含义如图1.47所示。
图1.47 状态栏
下面分别详细介绍下状态栏中每部分的作用。如下所示:
-
q :该按钮是专家信息按钮。该按钮的颜色是为了显示包含在专家信息窗口中最高水平的信息。专家信息窗口可以提醒用户,在捕获文件中的网络问题和数据包的注释
-
q :该按钮是捕获文件注释按钮。单击该按钮,可以添加、编辑或查看一个捕获文件的注释。该功能只可以在以.pcapng格式保存的捕获文件使用。
-
q 第一列(获取字段、捕获或捕获文件信息):当在捕获文件中选择某个字段时,在状态栏中将可以看到文件名和列大小。如果点击Packet Bytes面板中的一个字段,将在状态栏中会显示其字段名,并且Packet Details面板也在发生着变化。
-
q 第二列(包数):当打开一个捕获文件时,在状态栏中的第二列将显示该文件的总包数。在图1.47中,显示了捕获的数据包数量、显示包数和加载时间。如果当前捕获文件中有包被标记,则状态栏中将会出现标记包数。
-
q 第三列(配置文件):表示当前使用的文件。在图1.47中,表示正在使用Default 文件。文件可以创建,这样就可以自己定制Wireshark的环境。