一、概述
无论是开发还是测试,在工作中经常会遇到需要抓包的时候。目前的抓包软件总体可以分为两类,一种是设置代理抓取http包,比如Charles、mitmproxy这些软件。另一种是直接抓取经过网卡的所有协议包,其中最出名就是大名鼎鼎的wireshark以及linux自带的抓包软件tcpdump。下面重点介绍一下wireshark的使用。
二、Wireshark
wireshark想必大多数程序员都不会陌生。wireshark在各个平台都可以安装使用,它可以抓取经过指定网卡的所有协议。wireshark虽然很强大,但是对初学者其实不是很友好。
这也正是由于它太强大,它可以抓取所有包,所以初学者在使用时面对茫茫数据流不知所措。初学者需要认真的去学习怎么过滤得到自己感兴趣的包,但是如果不熟悉wireshark的过滤语法,要过滤数据包将举步维艰。
1、下载
官网:https://www.wireshark.org/download.html
根据部署节点操作系统选择对应版本下载就行
2、安装
安装过程没有特殊的,一直下一步就行
3、启动软件
启动软件时会自动扫描本地节点(个人理解:抓包工具由于是直接绑定网卡,所以需要部署在准备监测数据包的收/发两台节点中的一台,不能部署在不相关的节点,因为其监测原理所限)
wireshark是捕获机器上的某一块网卡的网络数据包,当你的机器上有多块网卡的时候,你需要选择一个网卡:
选择其中一块网卡后双击确认,开始抓包。
Wireshark 窗口介绍,如下图,显示过滤器、封包列表、封包详细信息,是我们经常要看的。
WireShark 主要分为这几个界面
1. Display Filter(显示过滤器), 用于过滤
2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表
3. Packet Details Pane(封包详细信息), 显示封包中的字段
4. Dissector Pane(16进制数据)
5. Miscellanous(地址栏,杂项)
4、过滤语法简单介绍
1、说明
wireshark的过滤语法总结起来其实也很简单,就是以协议开头,后面可以跟着协议的属性,然后加上一些判断符号,比如contains、==、>、<等等。多个表达式用and or 等逻辑运算符进行连接。比如只想展示http的协议内容,则直接在过滤器输入框中输入http即可。如下图:
使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
过滤器有两种,
一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录
一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置
2、保存过滤
在Filter栏上,填好Filter的表达式后,比如【http.request.full_uri contains "hello" and tcp.port==8080】,点击+按钮, 取个名字。比如"Filter 102",填写备注点击OK按钮进行保存。
Filter栏上就多了个"Filter 102" 的按钮:
3、过滤表达式规则简介
表达式规则
1. 协议过滤
比如TCP,只显示TCP协议。
2. IP 过滤
比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,
ip.dst==192.168.1.102, 目标地址为192.168.1.102
3. 端口过滤
tcp.port ==80, 端口为80的
tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
4. Http模式过滤
http.request.method=="GET", 只显示HTTP GET方法的。
5. 逻辑运算符为 AND/ OR
常用的过滤表达式
过滤表达式 | 用途 |
http | 只查看HTTP协议的记录 |
ip.src ==192.168.1.102 or ip.dst==192.168.1.102 | 源地址或者目标地址是192.168.1.102 |
4、封包列表
封包列表(Packet List Pane)
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。
你也可以修改这些显示颜色的规则, View ->Coloring Rules.
封包详细信息 (Packet Details Pane)
这个面板是我们最重要的,用来查看协议中的每一个字段。
各行信息分别为
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
5、Wireshark对应的OSI七层模型
wireshark与对应的OSI七层模型
TCP包的具体内容
从下图可以看到wireshark捕获到的TCP包中的每个字段。
本文参考网址1:https://blog.csdn.net/mingongge/article/details/102848924