工具介绍《WireShark》

Wireshark 过滤命令中符号含义详解

一、比较运算符

Wireshark 支持两种比较运算符语法:英文缩写(如 eq)和 C语言风格符号(如 ==),两者功能等价。

符号(英文缩写)C语言风格符号含义示例
eq==等于ip.src == 192.168.1.1
ne!=不等于tcp.port != 80
gt>大于frame.len > 1000
lt<小于udp.length < 50
ge>=大于等于tcp.window_size >= 8192
le<=小于等于ip.len <= 1500

注意

  • 等于判断ip.addr eq 192.168.1.1ip.addr == 192.168.1.1 完全等价。
  • 不等于判断!=ne 均可,但需注意部分场景需用 not 组合(如 not tcp.port == 80)。

二、逻辑运算符

用于组合多个过滤条件,支持 英文缩写(如 and)和 C语言风格符号(如 &&)。

符号(英文缩写)C语言风格符号含义示例
and&&逻辑与(同时满足)ip.src == 192.168.1.1 && tcp.port == 80
or||逻辑或(满足其一)http.request.method == "GET" || http.request.method == "POST"
not!逻辑非(排除条件)!icmp(排除所有 ICMP 包)

注意

  • 优先级not > and > or,建议用括号明确优先级(如 (a and b) or c)。
  • 组合过滤:可联合使用比较和逻辑运算符,例如 ip.addr == 10.1.1.1 and (tcp.port == 80 or udp.port == 53)

三、特殊符号与高级操作
  1. containsmatches

    • contains:检查字段是否包含指定字符串(大小写敏感)
      http contains "password"  # 过滤 HTTP 报文含 "password" 的包
      
    • matches:支持正则表达式匹配(需用 ~ 符号)
      http.request.uri matches ".*\.php$"  # 匹配 URI 以 .php 结尾的请求
      
  2. [] 偏移量操作
    用于从协议头或载荷中提取特定字节:

    • tcp[20:4]:从 TCP 头的第 20 字节开始截取 4 个字节。
    • udp[8:3]==20:21:22:检查 UDP 载荷第 8 字节开始的 3 个字节是否为 0x20 0x21 0x22
  3. 按位运算符 <<>>
    用于处理协议头中的位移计算(常见于捕获过滤器):

    tcp[((tcp[12] & 0xf0) >> 2):4] == 0x47455420  # 匹配 TCP 载荷中的 "GET " 请求
    
    • >>:右移(除以 2 的幂次),如 (tcp[12] & 0xf0) >> 2 计算 TCP 头长度。
    • <<:左移(乘以 2 的幂次),如 (ip[0] & 0xf) << 2 计算 IPv4 头长度。

四、实际应用示例
  1. 组合逻辑过滤

    ip.addr == 192.168.1.1 and (tcp.port == 80 or udp.port == 53) and !http
    
    • 含义:过滤源或目的 IP 为 192.168.1.1,且端口为 80(TCP)或 53(UDP),但排除 HTTP 协议。
  2. 复杂协议分析

    tcp.flags.syn == 1 and tcp.flags.ack == 0  # 匹配 TCP SYN 包(不含 ACK)
    
    • 用途:检测异常连接请求。
  3. 内容提取与隐写检测

    icmp and icmp[8:1] == 0x66  # 检查 ICMP 数据段第 8 字节是否为 0x66(ASCII 'f')
    
    • 用途:分析 ICMP 协议中的隐写数据。

一、基础操作流程

  1. 数据包筛选与过滤

    • 协议筛选:直接输入协议名称(如httptcpicmp)过滤特定协议流量,排除无关干扰。
    • IP/端口定位
      • 源IP:ip.src == 192.168.1.1
      • 目标端口:tcp.dstport == 80
      • MAC地址:eth.addr == A0:00:00:04:C5:84
    • 内容搜索:按Ctrl+F搜索关键字,支持字符串、十六进制和正则表达式,常用于快速定位flag。
  2. 数据包还原技术

    • 追踪流(Follow Stream):右键数据包选择追踪TCP/UDP/HTTP流,可还原完整的会话内容,常用于提取HTTP上传文件、SQL注入语句等。
    • 文件导出:通过文件 -> 导出对象 -> HTTP批量提取传输的文件(如压缩包、图片),或手动从data层导出字节流。
  3. 协议层级分析

    • 分层解析:逐层展开数据包的物理层、传输层(TCP/UDP)、应用层(HTTP/FTP)信息,分析异常字段(如TCP标志位异常、HTTP请求参数含可疑代码)。

二、CTF常见题型与解法

1. HTTP协议相关
  • 文件上传/下载
    • 通过HTTP过滤器定位POST请求,追踪流查看上传内容;导出对象提取隐藏文件(如flag.rar)。
    • 分段传输:若文件分多包传输,需用dd命令合并并去除冗余头信息。
  • Web渗透痕迹
    • 筛选http.request.uri contains "upload.php",分析SQL注入或命令执行流量,提取攻击载荷。
2. ICMP协议隐写
  • Ping报文隐写:检查ICMP数据段,可能直接包含ASCII字符或通过脚本提取隐藏信息(如每包1字节组合成flag)。
  • 示例脚本
    import pyshark
    cap = pyshark.FileCapture('icmp.pcap')
    for pkt in cap:print(chr(int(pkt.icmp.data, 16)), end='')
    
3. USB流量分析
  • 键盘流量
    1. 使用tshark提取数据:
      tshark -r usb.pcap -T fields -e usb.capdata > usbdata.txt
      
    2. 过滤有效击键(HID Usage ID),通过映射表转换键位(如0x04对应"A")。
  • 鼠标流量:解析移动坐标(X/Y偏移量),绘制轨迹图还原操作。
4. 加密流量解密
  • SSL/TLS解密:需预置服务器私钥或SSLKEYLOGFILE,在Wireshark中配置密钥解密HTTPS流量,查找敏感数据。
  • Webshell流量(如蚁剑):
    • 识别Base64编码的PHP代码,通过URL解码和流量统计定位后门交互。

三、高级技巧与工具联动

  1. 协议统计与排序

    • 使用统计 -> 协议分级快速发现异常协议(如非常见端口HTTP或异常DNS隧道)。
    • I/O图表:分析流量时间分布,定位爆破攻击(如高频SSH登录尝试)。
  2. 联合工具分析

    • Tshark命令行:批量提取字段(如tshark -r file.pcap -Y 'http' -T json导出JSON格式)。
    • Foremost/Binwalk:自动分离流量中的嵌入文件(如图片碎片、PDF)。
  3. 无线流量处理

    • WiFi密码破解:捕获WPA握手包,用Aircrack-ng配合字典破解,需过滤eapol协议。

四、实战案例分析

  • 案例a:键盘流量还原密码
    通过USB协议过滤,提取击键数据并映射,得到6位数字密码flag{720093}
  • 案例b:HTTP文件分片重组
    合并5个分片包,去除364字节头部后合成fly.rar,解压得flag。
  • 案例c:蚁剑后门分析
    追踪info1.php流量,解密Base64载荷获取Webshell密码及下载的恶意文件。

实战案例1:HTTP流量中隐藏的压缩包文件

题目背景

给定一个名为web_traffic.pcap的流量包,分析并找到隐藏的Flag文件。

分析过程
  1. 初步筛选HTTP流量

    • 在Wireshark过滤栏输入 http,筛选所有HTTP协议流量,排除无关数据。
    • 观察HTTP请求方法(GET/POST),重点关注POST请求(可能用于文件上传)。
  2. 追踪TCP流还原完整会话

    • 右键任意HTTP数据包 → 追踪流TCP流,查看完整HTTP会话内容。
    • 发现关键信息:
      POST /upload.php HTTP/1.1
      ...(请求头)...
      Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABCDEFG------WebKitFormBoundaryABCDEFG
      Content-Disposition: form-data; name="file"; filename="secret.zip"
      Content-Type: application/zipPK...(ZIP文件头标志)...
      
      (示例:POST请求上传了名为secret.zip的文件)
  3. 导出隐藏的ZIP文件

    • 点击菜单栏 文件导出对象HTTP,打开导出对话框。
    • 在列表中找到secret.zip的传输记录(文件名和大小匹配),点击Save导出文件。
  4. 解决文件损坏问题

    • 若导出的ZIP无法解压,可能因流量包截断或分片传输导致文件头缺失。
    • 手动修复
      1. 使用十六进制编辑器(如010 Editor)在文件头部添加ZIP文件头标志 50 4B 03 04(对应ASCII为PK..)。
      2. 若文件分片传输,需合并多个数据包的data字段内容(通过tcp.stream eq <流编号>筛选同一流的分片)。
  5. 解压获取Flag

    • 修复后的secret.zip解压得到flag.txt,内容为:
      flag{http_file_upload_928374}

实战案例2:ICMP协议中的Flag隐写

题目背景

icmp.pcapng流量包中,Flag通过ICMP报文的数据段隐写传输。

分析过程
  1. 筛选ICMP流量

    • 输入过滤器 icmp,仅显示ICMP协议报文。
    • 观察Echo request(Ping请求)报文,数据段(Data)可能包含隐写信息。
  2. 提取数据段内容

    • 展开ICMP报文 → Data字段,发现数据段为十六进制值,例如:
      Data: 66 6c 61 67 7b 69 63 6d 70 5f 73 74 65 67 6f 7d
    • 手动转换:将十六进制转换为ASCII:
      bytes = [0x66, 0x6c, 0x61, 0x67, 0x7b, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x65, 0x67, 0x6f, 0x7d]
      print(''.join([chr(b) for b in bytes]))  # 输出:flag{icmp_stego}
      
  3. 自动化提取脚本

    • 若Flag分散在多个ICMP包中(如每包1字节),编写Python脚本批量提取:
      import pysharkcap = pyshark.FileCapture('icmp.pcap', display_filter='icmp')
      flag = ''
      for pkt in cap:if hasattr(pkt.icmp, 'data'):hex_data = pkt.icmp.data.replace(':', '')flag += bytes.fromhex(hex_data).decode('latin-1')
      print(flag)  # 输出:flag{icmp_stego_123}
      

实战案例3:USB键盘流量还原密码

题目背景

流量包usb_keyboard.pcap记录了USB键盘输入,需还原输入的6位数字密码。

分析过程
  1. 筛选USB键盘流量

    • 输入过滤器 usb.transfer_type == 0x01 && usb.dst == "host",筛选键盘输入事件。
  2. 提取击键数据

    • 使用tshark命令行提取usb.capdata字段:
      tshark -r usb_keyboard.pcap -T fields -e usb.capdata > keystrokes.txt
      
    • 输出示例(每行对应一次击键):
      00:00:04:00:00:00:00:00
      00:00:05:00:00:00:00:00
  3. 映射HID Usage ID到字符

    • 提取第三字节(如04对应字母a05对应b)。
    • HID键位表(部分):
      0x04: a, 0x05: b, 0x06: c, ..., 0x1d: 0, 0x1e: 1, ..., 0x27: 9
      
    • 脚本转换
      hid_map = {0x04: 'a', 0x05: 'b', 0x06: 'c', 0x07: 'd', 0x08: 'e',0x09: 'f', 0x0a: 'g', 0x1d: '0', 0x1e: '1', 0x1f: '2', 0x20: '3', 0x21: '4', 0x22: '5', 0x23: '6', 0x24: '7',0x25: '8', 0x26: '9'
      }with open('keystrokes.txt') as f:for line in f:if line.strip() == '00:00:00:00:00:00:00:00':continue  # 跳过无效数据key_code = int(line.split(':')[2], 16)print(hid_map.get(key_code, ''), end='')
      # 输出:flag{720931}
      

总结与技巧

  1. 快速定位关键点
    • HTTP文件传输 → 过滤http并检查POST请求。
    • 隐写数据 → 检查协议数据段的十六进制/ASCII内容。
  2. 工具联动
    • 使用tshark批量提取字段,pyshark自动化分析。
  3. 数据修复
    • 文件头修复、分片重组、字符映射是常见解题关键。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScrip-模版字符串的详解

1.模版字符串的详解 1.1 模版字符串的使用方法 在ES6之前&#xff0c;如果我们想要将字符串和一些动态的变量&#xff08;标识符&#xff09;拼接到一起&#xff0c;是非常丑陋的&#xff08;ugly) ES6允许我们使用模版字符串来嵌入变量或者表达式来进行拼接 首先&#xff0c;…

STM32C011 进入停止模式和待机模式

对于STM32C011J4M3微控制器&#xff0c;你可以使用HAL库来实现进入停止模式&#xff08;Stop Mode&#xff09;和待机模式&#xff08;Standby Mode&#xff09;。下面是进入停止模式和待机模式的示例代码&#xff1a; 进入停止模式代码示例&#xff1a; #include "stm3…

海康设备http监听接收报警事件数据

http监听接收报警事件数据 海康获取设备报警事件数据两种方式&#xff1a; 1、sdk 布防监听报警事件数据&#xff08;前面文章有示例&#xff09; 2、http监听接收报警事件数据 http监听接收报警事件数据&#xff0c;服务端可以使用netty通过端口来监听获取事件数据。 WEB 端…

FastAPI 全面指南:功能解析与应用场景实践

FastAPI 全面指南&#xff1a;功能解析与应用场景实践 FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Python Web 框架&#xff0c;用于构建 API。它基于标准 Python 类型提示&#xff0c;使用 Starlette 和 Pydantic 构建&#xff0c;提供了极高的性能并简化了开…

【STM32】编写程序控制开发板的RGB LED灯

目录 1、原理图2、文件结构3、使用寄存器模式点亮3.1、什么是寄存器3.2、寄存器开发的本质3.3、寄存器开发步骤3.4、主要源码3.4.1、main.c3.4.2、drv_gpio.h3.4.3、drv_gpio.c3.4.4、使用BSRR和BRR影子寄存器优化drv_gpio.c3.4.5、效果演示 4、使用标准库模式点亮4.1、使用标准…

MyBatis-Plus 的加载及初始化

在 Spring Boot 启动过程中&#xff0c;MyBatis-Plus 的加载和初始化涉及多个阶段的工作。这些工作包括 MyBatis-Plus 自身的配置解析、Mapper 接口的扫描与注册、SQL 语句的动态注入以及底层 MyBatis 的初始化等。以下是对整个过程的详细分析&#xff1a; 1. Spring Boot 启动…

SpringBoot中安全的设置阿里云日志SLS的accessKey

众所周知,阿里云的服务都是基于accesskeyId和accesskeySecret来进行身份鉴权的,但唯独日志因为需要写入到.xml文件里对于accesskeyId和accesskeySecret需要进行一定程度的改进,尤其是使用了jasypt进行加密的参数传递进去logback.xml更是会遇到需要对参数进行解密的问题,而官网只…

关于解决Ubuntu终端及系统字体大小的问题

在Ubuntu中调整终端和系统字体大小可以通过以下方法&#xff08;可能不仅仅只是这几种&#xff09;实现&#xff1a; 1. 调整系统字体大小 打开终端并输入以下命令&#xff0c;安装GNOME Tweaks&#xff0c;等待安装完成&#xff1a; sudo apt install gnome-tweaks 接着进行…

Rust vs. Go: 性能测试(2025)

本内容是对知名性能评测博主 Anton Putra Rust vs. Go (Golang): Performance 2025 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 再次对比 Rust 和 Go&#xff0c;但这次我们使用的是最具性能优势的 HTTP 服务器库---Hyper&#xff0c;它基于 Tokio 异步运…

【NLP 48、大语言模型的神秘力量 —— ICL:in context learning】

目录 一、ICL的优势 1.传统做法 2.ICL做法 二、ICL的发展 三、ICL成因的两种看法 1.meta learning 2.Bayesian Inference 四、ICL要点 ① 语言模型的规模 ② 提示词prompt中提供的examples数量和顺序 ③ 提示词prompt的形式&#xff08;format&#xff09; 五、fine-tune VS I…

两数之和解题记录

开始打算用一个数组保存差值&#xff0c;arr[target-nums[i]] i, 只要arr[nums[i]]有内容就能满足target&#xff0c;返回arr[nums[i]]和i。但是会出现复数的情况&#xff0c;所以换成map。 换成map就只用一边遍历&#xff0c;一遍检查和存入对应key就行了&#xff0c;value就…

P1722 矩阵Ⅱ - 洛谷

题源&#xff1a;P1722 矩阵 II - 洛谷 看了题目之后&#xff0c;需要注意的是&#xff1a; ①在1 ~ i 个格子中红色数量 > 黑色数量 ②最后&#xff0c;在2 * n 个格子中&#xff0c;红色数量 黑色数量 根据这两个约束条件&#xff0c;可以知道&#xff0c;第一个格…

数据库——MySQL基础操作

一、表结构与初始数据 假设存在以下两张表&#xff1a; 1. student 表 字段名数据类型描述idINT学生唯一标识符nameVARCHAR(100)学生姓名ageINT学生年龄sexVARCHAR(10)学生性别 初始数据&#xff1a; idnameagesex1张三20男2李四22女3王五21男 2. course 表 字段名数据类…

行业白皮书2025 | 益企研究院:AI时代的存储基石

在当今科技飞速发展的时代&#xff0c;AI技术已成为推动各行业变革的关键力量。日前&#xff0c;益企研究院重磅发布《AI时代的存储基石》白皮书。 下载方式&#xff1a;关注“渡江客涂鸦板”&#xff0c;回复st250326获取免费下载地址 数据需求与技术挑战&#xff1a; AI技术…

音视频新人如何快速上手nginx-rtmp-module

一、整体设计架构 nginx-rtmp-module 是 Nginx 的一个扩展模块&#xff0c;专门为 Nginx 添加了对 RTMP 协议的支持。其核心功能包括&#xff1a; RTMP推流&#xff08;publish&#xff09; RTMP拉流&#xff08;play&#xff09; 流转发&#xff08;relay&#xff09; 流录…

vue 封装 Axios菜鸟教程

1、Axios依赖下载 $ npm install axios 2、以下链接为Axios 的api Axios 实例 | Axios中文文档 | Axios中文网 3、 项目新建request.js&#xff0c;文件名称按照驼峰命名法就可以 4、封装request.js代码如下 import axios from "axios"//创建axios实例&#xff0…

[项目]基于FreeRTOS的STM32四轴飞行器: 十一.MPU6050配置与读取

基于FreeRTOS的STM32四轴飞行器: 十一.MPU6050 一.芯片介绍二.配置I2C三.编写驱动四.读取任务的测试五.MPU6050六轴数据的校准 一.芯片介绍 芯片应该放置在PCB中间&#xff0c;X Y轴原点&#xff0c;敏感度131表示范围越小越灵敏。理想状态放置在地面上X&#xff0c;Y&#xf…

iOS常见网络框架

URLSession、Alamofire 和 Moya 1. URLSession 1.1 核心概念 URLSession 是 Apple 官方提供的网络请求 API&#xff0c;封装在 Foundation 框架中。它支持 HTTP、HTTPS、FTP 等协议&#xff0c;可用于&#xff1a; ​ • 普通网络请求&#xff08;GET/POST&#xff09; ​ …

AOA(到达角度)与TOA(到达时间)两个技术的混合定位,MATLAB例程,自适应基站数量,三维空间下的运动轨迹,滤波使用UKF(无迹卡尔曼滤波)

本文介绍一个MATLAB代码,实现了三维动态目标非线性定位与滤波系统,通过融合 到达角(AOA) 和 到达时间(TOA) 的混合定位方法,结合 无迹卡尔曼滤波(UKF) 处理非线性观测模型,优化轨迹精度。代码支持自适应基站数量配置,适用于复杂非线性场景的定位研究。 文章目录 运行…

Ubuntu 重置密码方法

目录 修改过 root 密码&#xff0c;重置密码的方法没改过 root 密码‌&#xff0c;重置密码的方法 修改过 root 密码&#xff0c;重置密码的方法 Ubuntu 默认禁用root用户&#xff0c;意思就是安装好Ubuntu系统后&#xff0c;root用户默认是没有密码的&#xff0c;普通用户通过…