文章目录
- Wirshark使用记录
-
- 基本语法规则
- 搜索条件符号速查表
- 捕获过滤器组合指令速查表
- 筛选过滤器组合命令速查表
- [Wireshark Frame 协议字段解析](#Wireshark Frame 协议字段解析)
Wirshark使用记录
官网地址:https://www.wireshark.org/
基本语法规则
字段 | 描述 | 示例 | 说明 |
---|---|---|---|
type |
用于指定数据包的类型,常用于链路层协议类型。 | eth.type == 0x0800 |
查找所有以太网帧,类型为 0x0800 (IPv4)。 |
dir |
用于指定数据包的流向。 | http.request.method == "GET" && dir == "->" |
查找 HTTP 请求方法为 GET 且方向为发送的数据包。 |
proto |
用于指定协议类型。 | ip.proto == 6 |
查找所有协议为 TCP(协议号 6)的数据包。 |
ip |
用于过滤 IP 地址相关的包。 | ip.addr == 192.168.1.1 |
查找源或目标地址为 192.168.1.1 的数据包。 |
tcp |
用于过滤 TCP 协议相关的数据包。 | tcp.port == 80 |
查找所有目标 TCP 端口为 80 的数据包(HTTP)。 |
udp |
用于过滤 UDP 协议相关的数据包。 | udp.port == 53 |
查找所有目标 UDP 端口为 53 的数据包(DNS)。 |
http |
用于过滤 HTTP 请求和响应数据包。 | http.request.uri contains "example" |
查找所有 URI 中包含 example 的 HTTP 请求数据包。 |
frame |
用于过滤帧相关信息,如帧的大小或时间戳。 | frame.len > 500 |
查找数据包长度大于 500 字节的所有帧。 |
tcp.seq |
用于过滤 TCP 序列号相关的数据包。 | tcp.seq == 123456 |
查找 TCP 序列号为 123456 的数据包。 |
tcp.ack |
用于过滤 TCP 确认号相关的数据包。 | tcp.ack == 654321 |
查找 TCP 确认号为 654321 的数据包。 |
eth.addr |
用于过滤以太网 MAC 地址相关的数据包。 | eth.addr == 00:1A:2B:3C:4D:5E |
查找源或目标 MAC 地址为 00:1A:2B:3C:4D:5E 的数据包。 |
wlan.addr |
用于过滤无线局域网地址相关的数据包。 | wlan.addr == 00:1A:2B:3C:4D:5E |
查找源或目标无线局域网地址为 00:1A:2B:3C:4D:5E 的数据包。 |
搜索条件符号速查表
搜索条件符号用于帮助用户更精确地定义筛选规则,以便定位特定的数据包或分析流量
符号类型 | 符号 | 说明 | 示例 |
---|---|---|---|
逻辑运算符 | && |
逻辑与(AND) | tcp && ip.src==192.168.1.1 |
` | ` | ||
! |
逻辑非(NOT) | !arp |
|
比较运算符 | == |
等于 | ip.src==8.8.8.8 |
!= |
不等于 | tcp.port!=22 |
|
> < >= <= |
数值比较(长度、端口号等) | frame.len > 100 |
|
通配符/匹配 | contains |
包含某字符串(大小写敏感) | http.host contains "google" |
matches |
正则表达式匹配 | dns.qry.name matches ".*\.com$" |
|
协议字段 | . |
字段层级分隔符(协议.字段) | tcp.flags.syn |
eq |
等于(用于流追踪) | tcp.stream eq 3 |
|
IP和端口 | ip.addr |
源或目标IP(等效于`ip.src | |
tcp.port |
TCP源或目标端口(等效于`tcp.srcport | ||
位运算 | & |
按位与(用于标志位检查) | tcp.flags & 0x02 (检查SYN标志) |
括号分组 | () |
明确运算优先级 | `(tcp.port==80 && ip.src==X) |
特殊条件 | in |
检查字段是否在某个范围内 | tcp.port in {80 443 8080} |
== |
字符串完全匹配(需引号) | http.request.method=="GET" |
捕获过滤器组合指令速查表
捕捉过滤器用于在数据包捕获阶段过滤流量。它决定了哪些数据包会被捕获并传递给 Wireshark 进行进一步分析。捕捉过滤器的设置是在 Wireshark 开始捕获数据包之前进行的,这样可以避免捕获不必要的流量,从而节省存储空间和提高效率。
应用场景 | 指令组合 | 说明 |
---|---|---|
抓取特定主机的流量 | host 192.168.1.100 | 捕获所有进出该IP的流量(含IPv4和IPv6) |
src host 10.0.0.1 && dst host 8.8.8.8 | 仅抓取从 10.0.0.1 到 8.8.8.8 的流量 | |
排除内网噪声 | not net 192.168.0.0/16 | 过滤掉所有 192.168.x.x 的内网流量 |
抓取特定协议 | tcp port 80 | 捕获所有TCP 80端口(HTTP)流量 |
udp port 53 | 捕获所有UDP 53端口(DNS)查询 | |
抓取ICMP诊断包 | icmp | 捕获所有ICMP包(如Ping、Traceroute) |
icmp[0] == 8 / icmp[0] == 0 |
仅抓取ICMP Echo请求(8)和回复(0) | |
抓取VLAN流量 | vlan 100 | 捕获VLAN ID为100的流量 |
抓取无线网络管理帧 | wlan.fc.type == 0 | 捕获Wi-Fi管理帧(如信标帧、探测请求) |
抓取ARP广播 | arp | 捕获所有ARP请求/响应(常用于排查IP冲突) |
抓取特定MAC地址 | ether host 00:11:22:33:44:55 | 捕获指定MAC设备的流量 |
抓取大文件传输 | greater 1024 | 捕获大于1024字节的数据包(用于分析大流量传输) |
抓取SYN扫描流量 | tcp[13] & 2 == 2 | 捕获所有TCP SYN标志置位的包(用于检测端口扫描) |
抓取HTTP用户代理 | port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 | 捕获GET请求(匹配TCP负载中的"GET "字符串) |
抓取VoIP流量 | udp portrange 16384-32768 | 捕获RTP语音流(常见端口范围) |
抓取非标准HTTP端口 | tcp port 8080 or tcp port 8000 | 捕获8080或8000端口的HTTP流量 |
排除SSH流量 | not tcp port 22 | 过滤掉SSH连接(减少干扰) |
抓取IPv6流量 | ip6 | 捕获所有IPv6流量 |
抓取广播/多播 | broadcast / multicast | 捕获所有广播和多播包 |
抓取特定TCP会话 | tcp and host 192.168.1.1 and host 192.168.1.2 and port 443 | 捕获两主机间的HTTPS会话 |
筛选过滤器组合命令速查表
筛选过滤器用于捕获之后对已捕获的数据进行筛选和分析。与捕捉过滤器不同,筛选过滤器是实时应用于捕获的数据包的,它并不会影响数据包的捕获,而是通过指定的条件来查看或隐藏符合某些标准的数据包。
类型 | 搜索组合(过滤表达式) | 示例说明 |
---|---|---|
协议过滤 | 协议名称 | tcp:只显示TCP协议包 |
http:显示HTTP请求/响应 | ||
IP地址 | ip.src == X 或 ip.dst == Y | ip.src == 192.168.1.1:源IP为192.168.1.1 |
ip.dst==8.8.8.8:目标为DNS服务器 | ||
端口号 | tcp.port == XX 或 udp.port == XX | tcp.port == 443:HTTPS流量 |
udp.port == 53:DNS查询 | ||
MAC地址 | eth.src == AA:BB:CC:DD:EE:FF | eth.src==00:1a:2b:3c:4d:5e:过滤特定设备的MAC |
HTTP请求 | http.request.method == GET | 过滤所有HTTP GET请求 |
DNS查询 | dns.qry.name contains "example.com" | 查找域名包含example.com的DNS查询 |
TCP标志位 | tcp.flags.syn == 1 | 过滤TCP SYN包(三次握手) |
tcp.flags.fin == 1 | TCP结束包(四次挥手) | |
数据包长度 | frame.len > 100 | 显示长度大于100字节的数据包 |
逻辑组合 | 条件1 && 条件2 或 条件1 | |
排除过滤 | !协议 或 !条件 | !arp:排除ARP广播包 |
!tcp.port==22:排除SSH流量 | ||
内容匹配 | frame contains "password" | 搜索数据包内容包含password的包(明文敏感信息检测) |
时间范围 | frame.time >= "2023-01-01 12:00:00" | 显示指定时间后的数据包 |
重传包 | tcp.analysis.retransmission | 查找TCP重传包(网络延迟或丢包) |
流追踪 | tcp.stream eq X | tcp.stream eq 5:追踪第5个TCP流的全部数据 |
HTTP状态码 | http.response.code == 404 | 过滤HTTP 404响应(页面不存在) |
SSL/TLS | ssl.handshake.type == 1 | 过滤TLS Client Hello包(加密握手) |
IP源/目标组合 | ip.src == X && ip.dst == Y | ip.src == 192.168.1.1 && ip.dst == 8.8.8.8:追踪本地到DNS的流量 |
双向IP过滤 | ip.addr == X | ip.addr == 192.168.1.100:包含该IP作为源或目标的全部流量 |
MAC+IP组合 | eth.src == MAC && ip.dst == X | eth.src == 00:1a:2b:3c:4d:5e && ip.dst == 8.8.8.8:某设备发往Google的流量 |
端口方向过滤 | tcp.srcport == X && tcp.dstport == Y | tcp.srcport == 5000 && tcp.dstport == 80:从5000端口到HTTP端口的流量 |
协议+端口组合 | 协议 && (tcp.port == X | |
HTTP高级过滤 | http.host == "域名" && http.request.method == "方法" | http.host == "example.com" && http.request.method == "GET":特定域名GET请求 |
TCP流追踪 | tcp.stream eq X && ip.addr == Y | tcp.stream eq 3 && ip.addr == 192.168.1.1:追踪某IP的完整TCP会话 |
排除干扰流量 | !协议 或 !(ip.src == X && ip.dst == Y) | !arp:排除ARP广播 !(ip.src == 192.168.1.1 && tcp.port == 22):排除某IP的SSH流量 |
内容关键词匹配 | frame contains "关键词" | frame contains "password":抓取含密码明文的数据包(安全审计) |
时间范围过滤 | frame.time >= "YYYY-MM-DD HH:MM:SS" | frame.time >= "2023-10-01 09:00:00":分析指定时间后的流量 |
高级协议分析 | 协议.字段 == 值 | tcp.flags.syn == 1:TCP握手包 dns.qry.name contains "google":DNS查询含google |
Wireshark Frame 协议字段解析

层级 | 字段名 | 字段说明 | 示例值 |
---|---|---|---|
Frame (物理层) | Arrival Time | 数据包到达时间(本地时间戳) | May 5, 2023 14:30:45.123456 |
Frame Number | 数据包序号(捕获顺序) | 1234 | |
Frame Length | 数据包总长度(字节) | 54 bytes | |
Capture Length | 实际捕获的数据长度(若截断则小于Frame Length) | 54 bytes | |
Ethernet II (数据链路层) | Destination MAC | 目标设备的物理地址 | 00:50:56:f2:95:e0 |
Source MAC | 发送设备的物理地址 | 00:0c:29:28:46:e0 | |
Type | 上层协议类型(IPv4/IPv6等) | 0x0800 (IPv4) | |
Internet Protocol Version 4 (网络层) | Source IP | 数据包源IP地址 | 10.0.0.201 |
Destination IP | 数据包目标IP地址 | 183.240.99.169 | |
Protocol | 传输层协议类型(TCP/UDP等) | 6 (TCP) | |
TTL | 生存时间(每经过路由器减1,防止环路) | 64 | |
Transmission Control Protocol (传输层) | Source Port | 发送方端口号 | 53828 (临时端口) |
Destination Port | 接收方端口号 | 80 (HTTP) | |
Sequence Number | 数据包的序列号(保证有序传输) | 1 | |
Acknowledgment Number | 期望收到的下一个字节序列号(确认机制) | 1 | |
Flags | TCP控制标志(SYN/ACK/FIN等) | ACK (确认包) | |
Window Size | 接收窗口大小(流量控制) | 8192 | |
Hypertext Transfer Protocol (应用层) | Request Method | HTTP请求方法(GET/POST等) | GET |
Request URI | 请求的资源路径 | /index.html | |
Host | 目标主机名(HTTP/1.1必需字段) | example.com | |
User-Agent | 客户端软件标识(浏览器/爬虫等) | Mozilla/5.0 | |
Response Code | HTTP响应状态码(仅响应包) | 200 OK |