suricata7 rule加载(三)加载options

news2024/9/21 1:49:12

suricata7.0.5

加载options

(msg:“HTTP Request Example”; flow:established,to_server; http.method; content:“POST”; http.uri; content:“query.php”; bsize:>9; http.protocol; content:“HTTP/1.1”; bsize:8; http.host; content:“360”; bsize:>3; classtype:bad-unknown; sid:25; rev:1;)

SigParseOptions(...)

大致逻辑:

  • 通过;拆分,获取单个的关键字以及值
  • 通过:拆分,获取关键字名称以及值
  • 调用SigTableGet函数,通过关键字名称获取对应的提前注册好的关键字节点
  • 调用节点中设置的Setup回调函数进行处理
    请添加图片描述
    以下按照rule中的顺序依次进行解析

msg

"msg" -> sigmatch_table[DETECT_MSG] -> DetectMsgSetup
请添加图片描述

flow

"flow" -> sigmatch_table[DETECT_FLOW] -> DetectFlowSetup
请添加图片描述

http.method

"http.method" -> sigmatch_table[DETECT_HTTP_METHOD] -> DetectHttpMethodSetupSticky

请添加图片描述

content

"content" -> sigmatch_table[DETECT_CONTENT] -> DetectContentSetup
这里的content是关联前面http.method,通过sig->init_data->list进行关联,SigMatch节点是挂在id=g_http_method_buffer_id的位置,如果后面还有bsize等关键字关联http.method的则会链式的继续挂在后面。如下图
请添加图片描述

http.uri

"http.uri" -> sigmatch_table[DETECT_HTTP_URI] -> DetectHttpUriSetupSticky
请添加图片描述

content

请添加图片描述

bsize

"bsize" -> sigmatch_table[DETECT_BSIZE] -> DetectBsizeSetup
请添加图片描述

http.protocol

"http.protocol" -> sigmatch_table[DETECT_AL_HTTP_PROTOCOL] -> DetectHttpProtocolSetup
请添加图片描述

content

请添加图片描述

bsize

请添加图片描述

http.host

"http.host" -> sigmatch_table[DETECT_HTTP_HOST] -> DetectHttpHostSetup

请添加图片描述

content

请添加图片描述

bsize

请添加图片描述

classtype

"classtype" -> sigmatch_table[DETECT_CLASSTYPE] -> DetectClasstypeSetup

请添加图片描述

sid

实际上代码里,sid是第一个解析的,因为每个rule都必须有sid,如果没有则可以快速的跳过。
"sid" -> sigmatch_table[DETECT_SID] -> DetectSidSetup
请添加图片描述

rev

"rev" -> sigmatch_table[DETECT_REV] -> DetectRevSetup
请添加图片描述

总结

sig->init_data->buffers中的每个节点对应一个关键字,其中的id对应g_buffer_type_hash中的关键字编号
请添加图片描述

到这里,第一步将rule加载到内存中算是完成。
接下来就是最关键的如何将其构建成匹配树。

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

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

相关文章

HI3559AV100四路IMX334非融合拼接8K视频记录

下班无事,写篇博客记录海思hi3559av100四路4K视频采集拼接输出8K视频Demo 一、准备工作: 软件:Win11系统、VMware虚拟机Ubuntu14、Hitool、Xshell等 硬件:HI3559AV100开发板4路imx334摄像头、串口线、电源等 附硬件图&#xff1…

射频硅基氮化镓:两个世界的最佳选择

当世界继续努力追求更高速的连接,并要求低延迟和高可靠性时,信息通信技术的能耗继续飙升。这些市场需求不仅将5G带到许多关键应用上,还对能源效率和性能提出了限制。5G网络性能目标对基础半导体器件提出了一系列新的要求,增加了对…

硕博电子移动控制器在无人驾驶卡车上的应用

传统港口行业一直是一个典型的劳动密集型行业,以前,集装箱的每次起吊操作需要多人配合,包括操作员、指挥手、理货员等至少7名现场工作人员。传统码头设施陈旧,重型设备难以更新换代。而且,港口还经常受到天气状况的影响…

AI自动生成PPT怎么用?5种提升演示效果的方法

随着#7月份我的同事一个个消失了#的话题热议,职场中的效率与变革再次成为焦点。 在忙碌的工作节奏中,AI自动生成PPT的软件悄然兴起,成为不少职场人的新宠。它们不仅简化了繁琐的PPT制作流程,更以高效、专业的姿态,助力…

Msfvenom制作自己的专属Shell

Msfvenom制作自己的专属Shell 如何通过Msfvenom来生成用户自己的专属Shell?有时候我们上传Shell到目标主机后,不仅我们自己可以连接,其他用户也可以连接,有时候会导致我们丢失该Shell,甚至该shell被用户发现并查杀。 实验环境 …

差分+前缀和习题集

&#xff08;luogu题号&#xff09; P6568 [NOI Online #3 提高组] 水壶 思路分析 前缀和优化问题。 其实题意就是让你求有k1个数的区间和最大值&#xff0c;那么直接前缀和优化&#xff0c;就可以通过本题。 代码 #include<bits/stdc.h> using namespace std;const in…

鸿蒙语言基础类库:【@ohos.util.Deque (线性容器Deque)】

线性容器Deque 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 Deque&#xff08;double ended queue&#xff09;根据循环队列的数据结构实现&#xff0c;符合先进先出以及先进后出的特点&…

【电脑应用技巧】如何寻找电脑应用的安装包华为电脑、平板和手机资源交换

电脑的初学者可能会直接用【百度】搜索电脑应用程序的安装包&#xff0c;但是这样找到的电脑应用程序安装包经常会被加入木马或者强制捆绑一些不需要的应用装入电脑。 今天告诉大家一个得到干净电脑应用程序安装包的方法&#xff0c;就是用【联想的应用商店】。联想电脑我是一点…

接口测试(2)

单接口测试 CtrlD 复制 因为单接口的时候主要改变测试用例数据 自动判定响应结果 postman断言 //断言响应状态码为200 pm.test("Status code is 200", function () {pm.response.to.have.status(200); }); //断言返回数据中包括&#xff08;成功&#xff09; //预期结…

深度学习的数学PDF

链接: https://pan.baidu.com/s/1_jScZ7dcyAWGqbrad6bbCQ?pwd9gj9 提取码: 9gj9 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦

探讨3D沉浸式在线会议系统的研发 - Meta演示的元宇宙虚拟化身多人对话场景,Web端现在也可以实现了 !

要实现一个元宇宙多人会议系统&#xff0c;关键技术有&#xff1a; 1. 3D虚拟空间的构建&#xff08;含光影特效、虚拟现实和增强现实&#xff09; 2. 3D虚拟化身的构建&#xff08;含动画、表情、语音&#xff09; 3. 多人角色管理 4. 会话控制和信息同步 5. 语音合成 6…

展开说说:Android服务之实现AIDL跨应用通信

前面几篇总结了Service的使用和源码执行流程&#xff0c;这里再简单分析一下如果需要Service跨进程通信该怎样做。AIDL&#xff08;Android Interface Definition Language&#xff09;Android接口定义语言&#xff0c;用于实现 Android 两个进程之间进行进程间通信&#xff08…

低资源低成本评估大型语言模型(LLMs)

随着新的大型语言模型&#xff08;LLMs&#xff09;的持续发展&#xff0c;从业者发现自己面临着众多选择&#xff0c;需要从数百个可用选项中选择出最适合其特定需求的模型、提示[40]或超参数。例如&#xff0c;Chatbot Arena基准测试平台积极维护着近100个模型&#xff0c;以…

PID控制与模糊PID控制的比较

一、PID控制器的设计 1.PID控制原理图&#xff1a; PID控制其结构框图如下图所示&#xff1a; 图1&#xff1a;PID控制器结构框图 2.PID控制器传递函数的一般表达式 PID控制器传递函数的一般表达形式为&#xff1a; 其中kp为比例增益&#xff1b;ki为积分增益&#xff1b;k…

ESLint: Delete `␍`(prettier/prettier)解决问题补充

如果你是克隆的&#xff0c;参考这位大佬的文章 vue.js - Delete ␍eslint(prettier/prettier) 错误的解决方案 - 个人文章 - SegmentFault 思否 如果你是个人在本地实现&#xff0c;且改为 仍旧报错&#xff0c;我解决的方案&#xff1a; 改为&#xff0c;同时勾选和我配置一…

020-GeoGebra中级篇-几何对象之点与向量

本文概述了在GeoGebra中如何使用笛卡尔或极坐标系输入点和向量。用户可以通过指令栏输入数字和角度&#xff0c;使用工具或指令创建点和向量。在笛卡尔坐标系中&#xff0c;示例如“P(1,0)”&#xff1b;在极坐标系中&#xff0c;示例如“P(1;0)”或“v(5;90)”。文章还介绍了点…

倒计时1天!飞思实验室暑期公益培训,7月10日不见不散

01培训背景 很荣幸地向大家宣布&#xff1a;卓翼飞思实验室将于7月10日正式开启为期两个月的暑期公益培训&#xff01;本次培训为线上直播&#xff0c;由中南大学计算机学院特聘副教授&#xff0c;RflySim平台总研发负责人戴训华副教授主讲。 培训将基于“RflySim—智能无人集…

74HC14使用陶瓷晶振产生振荡成功

之前实验这个ic陶瓷振子&#xff0c;结果是不起振&#xff0c;之前用的是并联模式。可能参数不适合。一直没有起振。 今天又翻阅了很多陶瓷谐振器的电路&#xff0c;看到有串联模式的电路&#xff0c;就来实验了一下。结果成功了。电路如下&#xff1a; 测试结果&#xff1a;陶…

【高校科研前沿】中国农业大学姚晓闯老师等人在农林科学Top期刊发表长篇综述:深度学习在农田识别中的应用

文章简介 论文名称&#xff1a;Deep learning in cropland field identification: A review&#xff08;深度学习在农田识别中的应用&#xff1a;综述&#xff09; 第一作者及单位&#xff1a;Fan Xu&#xff08;中国农业大学土地科学与技术学院&#xff09; 通讯作者及单位&…

退出的微信群怎么恢复?这3个小技巧了解下

在日常使用微信的过程中&#xff0c;我们可能会因为各种原因退出某个微信群。然而&#xff0c;退出后才发现群里有重要的信息或文件需要查看&#xff0c;这时该怎么办呢&#xff1f;许多人都会问&#xff1a;退出的微信群怎么恢复&#xff1f;事实上&#xff0c;微信提供了一些…