seo做多个网站/nba最新消息
前言
Wireshark
提供了lua扩展能力,可以定制一些Listner
和Dissector
,用于一些自定义的使用场景,例如:
lua插件 | 适应场景 |
---|---|
Listener | 报文统计、内容抽取等 |
Dissector | 协议树解析,在wireshark中立等可看 |
已在以前的文档中积累了对于Listener
的使用,见Listener。
本文将继续介绍下Dissector
的扩展使用。
介绍方式上,采用对于官网例子作详细地注释进行解读。
想多说点
这次尝试源于一次对于接口文档的阅读,想避免在后期又一次地翻阅文档,重新查看协议说明和字段描述。
为什么要重新费心费力去做某些重复的事情呢?
那么利用Wireshark Lua
脚本将其固化下来,将是非常好的实践!
解析器基本组件
组件 | 说明 |
---|---|
Proto | 定义协议,包括字段和解析器函数定义;在解析树中体现为一个节点 |
ProtoField | 定义协议字段类型 |
Dissector Chain | 解析器链,某个解析器完成自身协议层解析后,可以在尾部继续调用其它解析器,完成整个报文解析 |
Tvb参数组件特殊说明
- buf(offset[, length])切片操作
tvb 参数 | 说明 |
---|---|
offset | 必须,注意从零开始 |
length | 可选,如果不指定,将获取整个tvb 长度 |
- buf(offset[, length]):转型操作
tvb API | 说明 |
---|---|
buf(…):tvb() | 调用其它解析器需要重新生成新的tvb作为参数 |
buf(…):uint*() | 获取数值,例如,uint*类型系列 |
启用扩展
- 将扩展
lua
脚本文件放入Wireshark
安装目录 - 在
Wireshark
安装目录的init.lua
中增加相应导入脚本
dofile(DATA_DIR.."example.lua")
讲解官网解析器例子
-- 分析器根协议
--- + 第一个参数为协议缩写,将后期用于过滤条件,所以,要求全局唯一
--- + 第二个参数为协议描述,默认用于协议解析树的节点Label,要求全局唯一local p_multi = Proto("multi", "MultiProto")-- 嵌套自定义子协议
local p_multi_priority = Proto("multi.flags", "MultiProto Flags")-- 协议字段值解析映射,对于枚举类型非常适合,将码值解析为更易懂的文本
-- 对于没有定义映射,将显示为'Unknown (value)'样式
local falseortrue = {[0] = "false",[1] = "true"
}-- 协议字段类型声明,常用的字段类型为uint*系列,以及stirng、bytes等类型
--- + 第一个参数将用于过滤条件,最好以根协议的缩写命名开头,但具有唯一性即可
--- + 第二个参数为字段描述,在协议解析树中作为节点名字,在协议内要求描述唯一
p_multi_priority.fields.priority_value = ProtoField.uint8("multi.flags.priority", "Priority Value", base.DEC)
p_multi_priority.fields.prefix_flag = ProtoField.uint8("multi.flags.prefix", "Prefix Flag", base.DEC, falseortrue)
p_multi_priority.fields.suffix_flag = ProtoField.uint8("multi.flags.suffix", "Suffix Flag", base.DEC, falseortrue)-- 解析器函数
--- + 第一个参数为报文数据,可以进行切片操作
--- + 第二个参数为wireshar解析行描述对象,可以操作修改行描述信息
--- + 第三个参数为wireshar当前解析树,可以继续增加新的子树和链接其它协议器
function p_multi_priority.dissector(buf, pkt, tree)-- 协议解析区域,在自身根节点中通过buf的第二个参数指明-- 选中时,Wireshark会高亮的节点对应的码流区域,其它add操作亦然-- 具体此协议,解析一个字节长度local subtree = tree.add(p_multi_priority, buf(0, 1))local u8 = buf(0, 1):uint()subtree:add(p_multi_priority.fields.priority_value, buf(0, 1), bit32.band(u8, 0xF))subtree:add(p_multi_priority.fields.prefix_flag, buf(0, 1), bit32.rshift(bit32.band(u8, 0x10), 4))subtree:add(p_multi_priority.fields.suffix_flag, buf(0, 1), bit32.rshift(bit32.band(u8, 0x20), 5))
end-- 自身解析层
-- 解析映射
local vs_protos = {[2] = "mtp2",[3] = "mtp3",[4] = "alcap",[5] = "h248",[6] = "ranap",[7] = "rnsap",[8] = "nbap"
}p_multi.fields.proto = ProtoField.uint8("multi.protocol", "Protocol", base.DEC, vs_protos)
p_multi.fields.dir = ProtoField.uint8("multi.direction", "Direction", base.DEC, { [1] = "incoming", [0] = "outgoing"})
p_multi.fields.raw = ProtoField.bytes("multi.text", "Text")-- 默认链接解析器,对于不需要深入解析的区域,可以采用裸码流解析器
local data_dis = Dissector.get("data")-- 解析器能够识别的链接解析器
local protos = {[2] = Dissector.get("mtp2"),[3] = Dissector.get("mtp3"),[4] = Dissector.get("alcap"),[5] = Dissector.get("h248"),[6] = Dissector.get("ranap"),[7] = Dissector.get("rnsap"),[8] = Dissector.get("nbap"),[9] = Dissector.get("rrc"),-- 注意,解析器的不同获取方式[10] = DissectorTable.get("sctp.ppi"):get_dissector(3), -- m3ua[11] = DissectorTable.get("ip.proto"):get_dissector(132), -- sctp
}-- 注意,解析器函数链接类其它协议器
function p_multi.dissector(buf, pkt, tree)-- 修改报文行的协议为已识别的协议pkt.cols.protocol:set(p_multi.name)-- local length = buf:len()-- 生成自身解析树local subtree = tree:add(p_multi, buf(0, 3))local offset = 0-- 注: subtree:add_le 可以按照字节序小端来获取报文中的数据subtree:add(p_multi.fields.proto, buf(offset, 1))offset = offset + 1subtree:add(p_multi.fields.dir, buf(offset, 1))offset = offset + 1-- 调用自身解析树的子协议进行解析--- 注意第一个参数需要产生新的tvb--- 注意第三个参数为自身子树节点p_multi_priority.dissector(buf(offset, 1):tvb(), pkt, subtree)offset = offset + 1-- 尾部链接其它解析器,注意树节点参数的不同local proto_id = buf(0,1):uint()local dissector = protos[proto_id]if dissector ~= nil then-- 链接其它可以识别的解析器dissector:call(buf(offset):tvb(), pkt, tree)elseif proto_id < 2 then-- 特殊分支,在自身解析层完成,注意树节点为自身树subtree:add(p_multi.fields.raw, buf(offset))else-- 作为默认链接裸数据解析器data_dis:call(buf(offset):tvb(), pkt, tree)endend-- 增加自动解析配置,按照端口号进行解析
local udp_encap_table = DissectorTable.get("udp.port")
udp_encap_table:add(7555, p_multi)
参考
- Dissector Example
- Proto API
- Tvb API
相关文章:

利用wireshark lua扩展能力增加自定义解析器[注释解读版]
前言 Wireshark提供了lua扩展能力,可以定制一些Listner和Dissector,用于一些自定义的使用场景,例如: lua插件适应场景Listener报文统计、内容抽取等Dissector协议树解析,在wireshark中立等可看 已在以前的文档中积累了对于List…...

GPT-5不叫GPT-5?下一代模型会有哪些新功能?
OpenAI首席执行官奥特曼在上周三达沃斯论坛接受媒体采访时表示,他现在的首要任务就是推出下一代大模型,这款模型不一定会命名GPT-5。虽然GPT-5的商标早已经注册。 如果GPT-4目前解决了人类任务的10%,GPT-5应该是15%或者20%。 OpenAI从去年开…...

2024.1.23(347.前k个高频元素)
2024.1.23(347.前k个高频元素) 思路 这道题目主要涉及到如下三块内容: 1.要统计元素出现频率 2.对频率排序 3.找出前K个高频元素 首先统计元素出现的频率,这一类的问题可以使用map来进行统计。 然后是对频率进行排序,这里我们可以使用一种…...

MySQL对数据库的操作
前腰:本节只是的数据库本身进行增删查改、备份、恢复等操作,而不是对数据库内的数据表做操作,还请您区分好这两点。 1.创建数据库 # 创建数据库的语法形式 CREATE DATABASE [IF NOT EXISTS] database_name [create_specification]# 大写的是…...

解决Unity WebGLInput插件全屏输入的问题
unity webgl的中文输入插件WebglInput在全屏的时候会出现无法输入中文/输入的英文会字母出现在光标后面/什么都输入不了的等无法正常使用的情况。 插件官网作者给出了unity的2017,2018,2019版本的全屏输入解决方法。 最新插件下载地址:http…...

Android14实战:调整A2DP音量曲线(五十三)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…...

vector讲解
在学习玩string后我们开始学习vector,本篇博客将对vector进行简单的介绍,还会对vector一些常用的函数进行讲解 vector的介绍 实际上vector就是一个数组的数据结构,但是vector是由C编写而成的,他和数组也有本质上的区别ÿ…...

nvm 配置淘宝镜像失效,以及安装node后 npm-v 无效
win11 nvm版本 1.1.4 和1.1.7和1.1.12(目前最新版本24年 一月二十三日) 以上nvm版本都会出现一下问题, 从https://github.com/coreybutler/nvm-windows/releases 下载nvm安装包如下图 傻瓜式安装后,不用去配置环境变量&#…...

【Android Gradle 插件】Gradle 基础配置 ④ ( Gradle Wrapper 配置作用 | Gradle 下载的依赖库存放位置 )
一、Gradle Wrapper 配置作用 gradle wrapperdistributionBaseGRADLE_USER_HOME distributionPathwrapper/dists distributionUrlhttps\://services.gradle.org/distributions/gradle-6.7.1-bin.zip zipStoreBaseGRADLE_USER_HOME zipStorePathwrapper/distsGradle Wrapper 配…...

Deepin_Ubuntu_查看树形目录结构(tree)
Linux系统(Deepin、Ubuntu)中,可以使用tree命令来查看树形目录结构,下面是一些示例: 查看当前目录的树形结构: tree查看指定目录的树形结构,例如/etc/X11/fonts目录: tree /etc/X…...

Java Excel分割成许多小文件
最近在处理excel,数据很多,需要将excel拆分成许多小块,并保留原来的格式,于是写了该算法,并能保留原来的样式,使用很简单: Sheet splitSheet ExcelUtil.split(sheet, 0, 20, 5, 8); 传入开始…...

【心得】java从CC1链入门CC链个人笔记
来劲了,感觉离真正的CTF又近了一步。 本文仅从一个萌新的角度去谈,如有纰漏,纯属蒟蒻。 目录 CC链概念 CC链学习前置知识 CC1链 Version1 Version2 Version3 CC链概念 CC链 Commons Collections apache组织发布的开源库 里面主要对…...

Django migration 新增外键的坑
TL;DR 永远不要相信 makemigrations! migrate 之前一定好好看看 migrate 了啥东西,必要时手动修改生成的 migrate 文件。 最好把db的更新与服务代码更新解耦 场景 先描述下场景: 现在有两个表,一个是 question,一…...

相关系数(皮尔逊相关系数和斯皮尔曼相关系数)
本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:5.1 对数据进行描述性统计以及皮尔逊相关系数的计算方法_哔哩哔哩_bilibili 注:直接先看 ( 三、两个相关系数系数的比较 ) 部分&#x…...

了解 Vite 插件
众所周知 Vite 是基于 Rollup 的构建工具,Vite 插件为了优化、扩展项目构建系统功能的工具。 比如 vite-plugin-eslint 为我们提供了代码分析的功能,帮助我们在开发过程中的风格一致性。 简单示例 本文中的示例是基于 Vite Vue3.x TypeScript 来实现…...

算法竞赛基础:C++双向链表的结构和实现(普通链表、List、静态链表)
算法竞赛基础:双向链表 本文将会介绍在算法竞赛中双向链表的几种使用方式,适合有一定基础的人阅读。 双向链表的结构 一般来说,普通的链表结构是这样的: struct node {int num;node *next; }next指针指向下一个链表ÿ…...

openssl3.2/test/certs - 019 - ca-nonca trust variants: +serverAuth, +anyEKU
文章目录 openssl3.2/test/certs - 019 - ca-nonca trust variants: serverAuth, anyEKU概述笔记 ca-nonca.pem from exp 016openssl3.2/test/certs - 019 - ca-nonca trust variants: serverAuth, anyEKUEND openssl3.2/test/certs - 019 - ca-nonca trust variants: serverAu…...

Unity SRP 管线【第五讲:URP烘培光照】
本节,我们将跟随数据流向讲解UEP管线中的烘培光照。 文章目录 一、URP烘培光照1. 搭建场景2. 烘培光照参数设置MixedLight光照设置:直观感受 Lightmapping Settings参数设置: 3. 我们如何记录次表面光源颜色首先我们提取出相关URP代码&#…...

Mysql运维篇(一) 日志类型
一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人,如有侵权请留言,我及时删除。 一、mysql相关日志 首先,我们能接触到的,一般我们排查慢查询时,会去看慢查询日志。如果做过数据备份会恢复的,可能接触或用过BinLog。那还有其他的吗?对MySQL原理…...

【C语言】结构体与内存操作函数 总结
结构体 一、结构体简介 C 语言内置的数据类型,除了最基本的几种原始类型,只有数组属于复合类型,可以同时包含多个值,但是只能包含相同类型的数据,实际使用中并不够用。 实际使用中,主要有下面两种情况&a…...

第12章_集合框架(Collection接口,Iterator接口,List,Set,Map,Collections工具类)
文章目录 第12章_集合框架本章专题与脉络1. 集合框架概述1.1 生活中的容器1.2 数组的特点与弊端1.3 Java集合框架体系1.4 集合的使用场景 2. Collection接口及方法2.1 添加2.2 判断2.3 删除2.4 其它 3. Iterator(迭代器)接口3.1 Iterator接口3.2 迭代器的执行原理3.3 foreach循…...

C语言进阶——数据结构之链表(续)
前言 hello,大家好呀,我是Humble,本篇博客承接之前的C语言进阶——数据结构之链表 的内容(没看过的小伙伴可以从我创建的专栏C语言进阶之数据结构 找到那篇文章并阅读后在回来哦~),上次我们重点说了链表中…...

数据库课程设计-图书管理系统数据库设计
目录 一、实验目的 二、实验内容 三、实验要求 四、实验设计 4.1需求分析 4.1.1系统目标 4.1.2功能需求 4.1.3性能需求 4.14界面需求 4.2概念模型设计 4.2.1 实体及联系 4.2.2 E-R图 4.3 逻辑设计 4.3.1 E-R模型向关系模型的转换 4.3.2 数据库逻辑结构 4.3.3数据库模型函数依赖…...

【超简版,代码可用!】【0基础Python爬虫入门——下载歌曲/视频】
安装第三方模块— requests 完成图片操作后输入:pip install requests 科普: get:公开数据 post:加密 ,个人信息 进入某音乐网页,打开开发者工具F12 选择网络,再选择—>媒体——>获取URL【先完成刷新页面】 科…...

CommunityToolkit.Mvvm支持环境
引言 CommunityToolkit.Mvvm 包(又名 MVVM 工具包,以前称为 Microsoft.Toolkit.Mvvm)是一个现代、快速和模块化的 MVVM 库。 它是 .NET 社区工具包的一部分,其中一条原则是: 独立于平台和运行时 - .NET Standard 2.0…...

探讨品牌设计的本质,为企业形象注入活力!
品牌设计作为一个行业,首先需要明确行业的本质和意义。由于越来越多的咨询公司和营销公司对品牌有不同的理解和解释,因为他们服务的内容和专业水平不同,什么是品牌的定义越来越复杂,逐渐成为一种神秘的知识。例如,特劳…...

【Maven】-- 打包添加时间戳的两种方法
一、需求 在执行 mvn clean package -Dmaven.test.skiptrue 后,生成的 jar 包带有自定义系统时间。 二、实现 方法一:使用自带属性(不推荐) 使用系统时间戳,但有一个问题,就是默认使用 UTC0 的时区。举例…...

图片分类: 多类别
最近需要训练一个有200多类的图片分类网络,搜了一遍,发现居然没有很合适用的开源项目,于是自己简单撸了一个轮子,项目地址: https://github.com/xuduo35/imgcls_pytorch。支持如下backbone: alexnetresnet18,resnet34,resnet50,r…...

python 抓包tcp数据拷贝转发
在Python中,你可以使用scapy库进行抓包,使用shutil或io库进行数据的拷贝,以及使用socket库进行数据转发。下面是一个简单的示例,展示了如何进行这些操作: 首先,你需要安装必要的库。你可以使用pip来安装它…...

ubuntu 各版本图形界面和命令行切换快捷键介绍
文章目录 前言一、ubuntu 图形界面和命令行模式切换的快捷键1. ubuntu 16.042. ubuntu 18.043. ubuntu 20.044. ubuntu 22.04 总结 前言 本文主要介绍如何使用快捷键进行ubuntu 的图形界面和命令行模式切换,涉及如下 几个ubuntu 版本 ubuntu16.04 ubuntu18.04 ubun…...