当前位置: 首页 > news >正文

Wireshark:自定义类型帧解析

文章目录

  • 1. 前言
  • 2. 背景
  • 3. 开发 Lua 插件

1. 前言

限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。

2. 背景

Wireshark 不认识用 tcpdump 抓取的数据帧,仔细分析相关代码和数据帧后,发现是交换芯片在以太网帧头IP 帧头之间插入了 6 个字节。由于要做对这些数据帧做分析工作,同时又想利用 Wireshark 的便利,于是想到 WiresharkLua 插件功能。

3. 开发 Lua 插件

在应用 Lua 插件解析数据帧前,Wireshark 的解析如下图:

在这里插入图片描述

可见 Wireshark 无法正常解析数据帧。接下来编写 Lua 脚本 edsa.lua 如下:

-- 定义协议
local edsap = Proto("edsa", "EDSA Protocol")-- 添加字段
local f_edsa_field1 = ProtoField.uint8("edsa.field1", "Field 1", base.DEC)
local f_edsa_field2 = ProtoField.uint8("edsa.field2", "Field 2", base.DEC)
local f_edsa_field3 = ProtoField.uint16("edsa.field3", "Index", base.DEC)
local f_edsa_field4 = ProtoField.uint8("edsa.field4", "Field 4", base.DEC)
local f_edsa_field5 = ProtoField.uint8("edsa.field5", "Field 5", base.DEC)edsap.fields = {f_edsa_field1, f_edsa_field2, f_edsa_field3, f_edsa_field4, f_edsa_field5}-- 定义 dissector 函数
-- 注意,这里 tvbuf 的数据,不包含以太网帧头的 14 字节
function edsap.dissector(tvbuf, pinfo, tree)if tvbuf:len() < 6 then return endpinfo.cols.protocol = edsap.namelocal edsa_tree = tree:add(edsap, tvbuf(0,6), "EDSA Protocol")edsa_tree:add(f_edsa_field1, tvbuf(0,1):uint())edsa_tree:add(f_edsa_field2, tvbuf(1,1):uint())edsa_tree:add(f_edsa_field3, tvbuf(2,2):uint())edsa_tree:add(f_edsa_field4, tvbuf(3,1):uint())edsa_tree:add(f_edsa_field5, tvbuf(4,1):uint())-- 处理剩余的数据local new_tvbuf = tvbuf(6+2):tvb()Dissector.get("ip"):call(new_tvbuf, pinfo, tree)
end-- 注册到以太网帧类型 0xdada :
-- 当 wireshark 发现以太网帧的 EtherType 字段为 0xdada 时,
-- 则调用 dsap.dissector()
local edsa_type = DissectorTable.get("ethertype")
edsa_type:add(0xdada, edsap)

然后把 edsa.lua 放到下图 Wireshark 设定的路径中:

在这里插入图片描述

然后重启 Wireshark 加载 tcpdump 抓取的数据包:

在这里插入图片描述

可以看到,已经可以正常解析了。

在开发 Lua 脚本的过程中,可以开启 Wireshark控制台Luaprint() 信息会输出到控制台,帮助定位开发过程中遇到的问题:

在这里插入图片描述

调试完成后,记得关闭它。

相关文章:

Wireshark:自定义类型帧解析

文章目录 1. 前言2. 背景3. 开发 Lua 插件 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 背景 Wireshark 不认识用 tcpdump 抓取的数据帧&#xff0c;仔细分析相关代码和数据帧后&#xff0c…...

Redis7——进阶篇(一)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 基础篇&#xff1a; Redis&#xff08;一&#xff09;Redis&#xff08;二&#xff09;Redis&#xff08;三&#xff09;Redis&#x…...

word转换为pdf后图片失真解决办法、高质量PDF转换方法

1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker &#xff08;1&#xff09;点击word选项卡上的Acrobat插件&#xff0c;&#xff08;2&#xff09;点击“首选项”按钮&#xff0c;&#xff08;3&#xff09;点击“高级配置”按钮&#xff08;4&#xff09;点…...

Kafka零拷贝

Kafka为什么适用零拷贝&#xff0c;其他存储结构不适用&#xff1f; Kafka 采用的是日志存储模型&#xff0c;数据通常是顺序写入、顺序读取&#xff0c;并且它的消费模式是 “读完即走”&#xff08;一次性读取并发送给消费者&#xff09;&#xff0c;这与零拷贝的特性完美匹…...

鸿蒙应用开发入门教程

鸿蒙应用开发入门教程 基础准备与环境搭建 1. 了解鸿蒙系统 1.1 核心理念学习 HarmonyOS&#xff08;鸿蒙系统&#xff09;是华为推出的全场景分布式操作系统&#xff0c;其核心特点如下&#xff1a; 分布式能力 设备协同&#xff1a;手机、平板、智能手表、IoT设备等可无…...

【2022——暴力DP / 优雅背包】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long;const int N 2023;ll f[2][2023][2023];int main() {f[0][0][0] 1;for(int i 1; i < 10; i) //次数{for(int j 0; j< 2022; j)for(int k 0; k < 2022; k)f[i&1][j][k] 0…...

AI智能体与大语言模型:重塑SaaS系统的未来航向

在数字化转型的浪潮中&#xff0c;软件即服务&#xff08;SaaS&#xff09;系统一直是企业提升效率、优化业务流程的重要工具。随着AI智能体和大语言模型&#xff08;LLMs&#xff09;的迅速发展&#xff0c;SaaS系统正迎来前所未有的变革契机。本文将从AI智能体和大语言模型对…...

绕过密码卸载360终端安全管理系统

一不小心在电脑上安装了360终端安全管理系统&#xff0c;就会发现没有密码&#xff0c;就无法退出无法卸载360&#xff0c;很容易成为一个心病&#xff0c;360终端安全管理系统&#xff0c;没有密码&#xff0c;进程无法退出&#xff0c;软件无法卸载&#xff0c;前不久听同事说…...

golang安装(1.23.6)

1&#xff0e;切换到安装目录 cd /usr/local 2&#xff0e;下载安装包 wget https://go.dev/dl/go1.23.6.linux-amd64.tar.gz 3&#xff0e;解压安装包 sudo tar -C /usr/local -xzf go1.23.6.linux-amd64.tar.gz 4&#xff0e;配置环境变量 vi /etc/profile export PATH$…...

星闪开发入门之常见报错整理(一)

系列文章目录 星闪开发入门之常见报错整理&#xff08;一&#xff09; 文章目录 系列文章目录前言一、ComX open fail, please check com is busy or not exist二、‌CMake下载失败三、配置文件出现语法错误四、路径过长导致编译报错五、ninja: build stopped: subcommand fai…...

Node.js与MySQL的深入探讨

Node.js与MySQL的深入探讨 引言 Node.js,一个基于Chrome V8引擎的JavaScript运行时环境,以其非阻塞、事件驱动的方式在服务器端应用中占据了一席之地。MySQL,作为一款广泛使用的开源关系型数据库管理系统,凭借其稳定性和高效性,成为了许多应用的数据库选择。本文将深入探…...

【JAVA】阿里云百炼平台对接DeepSeek-V3大模型使用详解

1、DeepSeek简介 DeepSeek的火热让全世界见证了一场国产AI大模型走向巅峰的盛宴。DeepSeek的横空出世一方面让AI大模型的格局得到重塑&#xff0c;另一方面&#xff0c;对于普通人来说&#xff0c;也有机会零距离的体验到更懂国人的AI大模型。从很多使用过后的小伙伴们的反馈来…...

springboot项目部署脚本

Springboot部署脚本 该脚本可用于jenkins自动执行&#xff0c;具有以下功能 适配所有以内嵌tomcat容器springboot项目jar包可根据参数选择环境&#xff0c;基于profiles可自动识别并关闭已存在进程第一个参数是指定jar包所在绝对路径(该路径下必须有且仅有一个.jar文件) 第二…...

黑马Java面试教程_P5_微服务

系列博客目录 文章目录 系列博客目录1.引言2.Spring Cloud2.1 Spring Cloud 5大组件有哪些?面试文稿 2.2 服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?面试文稿 2.3 我看你之前也用过nacos、你能说下nacos与eureka的区别?面试文稿 2.4 你们项目负载均衡如…...

使用Fuse-DFS挂载文件存储 HDFS-后端存储ceph

1. 编译环境准备 yum install cmake3 ln -s /usr/bin/cmake3 /usr/bin/cmake yum install gcc-c安装挂载依赖 yum -y install fuse fuse-devel fuse-libs执行以下命令&#xff0c;载入FUSE模块 modprobe fuse2. 下载源码包 hadoop-3.3.4-src.tar.gz解压后执行以下命令 打开…...

生成式AI项目的生命周期

总结自视频&#xff08;吴恩达大模型入门课&#xff09;&#xff1a;9_13_generative-ai-project-lifecycle_哔哩哔哩_bilibili 生成周期如下图&#xff0c;包含四部分&#xff1a;任务范围&#xff08;Scope&#xff09;&#xff0c;选择大模型&#xff08;Select&#xff09…...

SOC-ATF 安全启动BL1流程分析(1)

一、ATF 源码下载链接 1. ARM Trusted Firmware (ATF) 官方 GitHub 仓库 GitHub 地址: https://github.com/ARM-software/arm-trusted-firmware 这是 ATF 的官方源码仓库&#xff0c;包含最新的代码、文档和示例。 下载方式&#xff1a; 使用 Git 克隆仓库&#xff1a; git…...

游戏引擎学习第127天

仓库:https://gitee.com/mrxiao_com/2d_game_3 为本周设定阶段 我们目前的渲染器已经实现了令人惊讶的优化&#xff0c;经过过去两周的优化工作后&#xff0c;渲染器在1920x1080分辨率下稳定地运行在60帧每秒。这个结果是意料之外的&#xff0c;因为我们没有预计会达到这样的…...

Grafana使用日志7--开启Sigv4

背景 在Grafana中&#xff0c;有些data source是需要开启sigv4认证的&#xff0c;例如OpenSearch&#xff0c;这个配置项默认是关闭的&#xff0c;这里我们介绍一下怎么开启 步骤 传统方式 如果我们想在Grafana中开启sigv4认证&#xff0c;我们需要在grafana.ini中修改一个…...

UWB人员定位:精准、高效、安全的智能管理解决方案

在现代企业管理、工业生产、安全监测等领域&#xff0c;UWB&#xff08;超宽带&#xff09;人员定位系统正逐步成为高精度定位技术的首选。相较于传统的GPS、Wi-Fi、蓝牙等定位方式&#xff0c;UWB具备厘米级高精度、低延迟、高安全性、抗干扰强等突出优势&#xff0c;能够实现…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...