Wireshark是一个功能非常强大的网络封包分析软件,可以截取各种网络封包,显示网络封包的详细信息。(可完美运行于Windows与Mac OS)
出于安全问题,Wireshark只能查看封包,不能修改封包和发送封包。
Wireshark与Fiddler相对比
Fiddler是在Windows上运行的的专门用来捕获HTTP与HTTPS的
Wireshark能获取HTTP,HTTPS,但是不能解密HTTPS,所以Wireshark是看不懂HTTPS内容的
Fiddler可以修改封包,发送封包,Wireshark只能查看
总结:如果是HTTP,HTTPS就用Fiddler,如果是其他协议,比如TCP,UDP,QICQJ就要用Wireshark
Wireshark开始抓包工作:
选择网卡,自己用的什么网络就选择什么,我用的WiFi,所以我选择WLAN
Wireshark主要分为几个界面功能:
1.Display Fitter(显示过滤器),用于过滤
2.Packet List Pane(封包列表),显示捕获到的封包,其中源地址,目标地址,端口号
3.Packet Details Pane(封包详细信息),显示封包中的字段
4.Dissector Pane(16进制数据)
5.Miscellanous(地址栏,杂项)主界面上的
Wireshark显示过滤
过滤的使用很重要,初学者刚开始接触Wireshark时,会看到很多冗余的信息,很难在其中找到自己想要的数据,所以过滤的使用便很重要了
过滤器分为两种:
1.显示过滤器:主界面上的那个,用来在捕获的记录中找到所需要的记录
2.捕获过滤器:用来过滤捕获的封包,避免捕获过多的内容,Capture>Capture Filters中设置
保存过滤:
在Filter栏上,填好Filter表达式后>点击右上角“+”号,取个名字,比如“Filter 1"
此时Filter栏就多了"Filter 1"的按钮
过滤表达式的规则:
Wireshark针对IP地址的过滤:
1.对源地址为192.168.3.16的包的过滤,即抓取源地址满足要求的包。
表达式为:ip.src == 192.168.3.16
2.对目的地址为192.168.3.16的包的过滤,即抓取目的地址满足要求的包。
表达式为:ip.dst == 192.168.3.16
3.对源或者目的地址为192.168.3.16的包的过滤,即抓取满足源或者目的地址的ip地址是192.168.3.16的包。
表达式为:ip.addr == 192.168.3.16,或者 ip.src == 192.168.3.16 or ip.dst == 192.168.3.16
4.要排除以上的数据包,我们只需要将其用括号囊括,然后使用 "!" 即可。
表达式为:!(表达式)
例如!(ip.addr == 192.168.3.16)
Wireshark针对协议的过滤
1.仅仅需要捕获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可。
表达式为:http
2.需要捕获多种协议的数据包,也只需对协议进行逻辑组合即可。
表达式为:http or telnet (多种协议加上逻辑符号的组合即可)
3.排除某种协议的数据包
表达式为:not arp !tcp
Wireshark针对端口的过滤(视协议而定)
1.捕获某一端口的数据包协议
表达式为:tcp.port == 80
3.捕获多端口的数据包,可以使用and来连接,下面是捕获高端口的表达式
表达式为:udp.port >= 2048
Wireshark针对长度和内容的过滤
1.对长度的过虑(这里的长度指定的是数据段的长度)
表达式为:udp.length < 30 http.content_length <=20
2.对数据包内容的过滤
表达式为:http.request.uri matches "vipscu" (匹配http请求中含有vipscu字段的请求信息)
封包列表(Packet List Pane)
封包列表的面板中显示,编号,时间戮,源地址。目标地址,协议,长度,封包信息。
不同的协议,使用不同的颜色
亦可自行修改颜色规则:View>Coloring Rules
封包详细信息(Packet Details Pane)
这个信息界面为重中之重,用来查看协议的每一字段
分别为:
1.Frame:物理层和数据帧概况
2.Ethernet II:数据链路层以太网帧头部信息
3.Internet Protocol Version 4:互联网层IP包头部信息
4.Transmission Control Protocol:传输层的数据头部信息,为TCP协议
5:Hypertext Transfer Protocol:应用层的信息,为HTTP协议
Wireshark与对应的OSI七层模型(HTTP)
TCP包的具体内容:
初步分析TCP三次握手过程
下面我们实际操作下
打开目标网址:www.html99.cn
然后在Wireshark中输入http过滤,然后选中GET /favicon.ico HTTP/1.1这条记录
展开这条数据
可以看到
第一次握手数据包,客户端发送了一个TCP,标志位位SYN,序列号为0,代表客户端请求建立连接
第二次握手数据包,服务器发回确认包,标志位为SYN,ACK,将确认序号设置为客户的I S N加1,即0+1=1
第三次握手数据包,客户端再次发送确认包(ACK)SYN标志位为0,ACK标志位为1,并把服务器发送来的ACK字段+1,放在确定字段中发送给对方
就这样TCP通过三次握手,建立了链接