suricata7 rule加载(三)加载options

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.rhkb.cn/news/373487.html

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

相关文章

LabVIEW自动测控与故障识别系统

使用LabVIEW 2019在Win10 64位系统上开发自动测控软件,通过与基恩士NR-X100数据采集仪通讯,实时采集和分析数据,自动识别判断产品是否合格,并增加数据记录和仿真功能。 具体解决方案: 1. 系统架构设计 硬件接口&#…

IP 地址:优化网络游戏

IP地址和网络游戏 在现代网络游戏中,IP地址不仅用于服务器分配,还能针对性进行玩家匹配与优化网络延迟。本文将探讨IP地址在网络游戏中的具体应用。 *服务器分配* 全球服务器分布: 网络游戏需要在全球范围内提供快速、稳定的连接&#xff…

网络安全合规建设

网络安全合规建设 一、法律安全需求基本合规(1)《网络安全法》重要节点等级保护政策核心变化 二、安全需求 业务刚需(1)内忧(2)外患 三、解决方法(1)总安全战略目标图(2&…

springboot文献检索系统-计算机毕业设计源码48521

摘要 文献检索系统主要功能模块包括用户管理、公告信息、新闻资讯、文献信息等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的…

!vue3中defineEmits接收父组件向子组件传递方法,以及方法所需传的参数及类型定义,避免踩坑!

使用说明 1、在子组件中调用defineEmits并定义要发射给父组件的方法 const emits defineEmits([‘foldchange’]) 2、使用defineEmits会返回一个方法,使用一个变量emits(变量名随意)去接收 3、在子组件要触发的方法中,调用emits并传入发射给父组件的方法…

封装了一个仿照抖音效果的iOS评论弹窗

需求背景 开发一个类似抖音评论弹窗交互效果的弹窗,支持滑动消失, 滑动查看评论 效果如下图 思路 创建一个视图,该视图上面放置一个tableView, 该视图上添加一个滑动手势,同时设置代理,实现代理方法 (BOOL)gestur…

挑战杯 opencv 图像识别 指纹识别 - python

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器视觉的指纹识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖,适…

基于swagger插件的方式推送接口文档至torna

目录 一、前言二、登录torna三、创建/选择空间四、创建/选择项目五、创建/选择应用六、获取应用的token七、服务推送7.1 引入maven依赖7.2 test下面按照如下方式新建文件 一、前言 Torna作为一款企业级文档管理系统,支持了很多种接口文档的推送方式。官方比较推荐的…

蓝牙人员定位精准吗?是否会对人体有伤害?

不知道大家现在使用的蓝牙人员定位系统都是什么样的呢?其实就出行而言,使用GPS定位也就是足够了的,而且目前的定位相对也比较精准了,效果还是很不错的。但是如果说是室内定位,很显然常规的定位系统是无法满足使用需求的…

[数据结构] 基于插入的排序 插入排序希尔排序

标题:[数据结构] 排序#插入排序&希尔排序 水墨不写bug 目录 (一)插入排序 实现思路: 插入排序实现: (二)希尔排序 希尔排序的基本思想: 希尔排序的实现: 正…

PHP同城多商户多行业系统小程序源码

同城新生态,解锁多商户多行业系统的无限魅力🌆🚀 🌈 开篇:同城新纪元,多商户多行业系统引领潮流! 想象一下,在同一个城市内,无论是美食探索、购物狂欢,还是…

Python在量化交易中的应用

量化交易近年来越来越受到投资者的青睐。Python因其简洁的语法和丰富的库,成为量化交易的首选编程语言。本文将从Python量化交易的基础知识、主要技术及其在实际交易中的应用三个方面进行介绍。 一、Python量化交易的基础知识 1. 量化交易的概念 量化交易是指利用…

东方通Tongweb发布vue前端

一、前端包中添加文件 1、解压vue打包文件 以dist.zip为例,解压之后得到dist文件夹,进入dist文件夹,新建WEB-INF文件夹,进入WEB-INF文件夹,新建web.xml文件, 打开web.xml文件,输入以下内容 …

sdwan是硬件还是网络协议?

SD-WAN(Software-Defined Wide Area Network,软件定义广域网)并不是一个硬件产品或单一的网络协议,而是结合了软件、硬件和网络技术的一种解决方案。SD-WAN的核心在于其软件定义的特性,它通过软件来控制和管理广域网的…

【BUG】RestTemplate发送Post请求后,响应中编码为gzip而导致的报错

BUG描述 20240613-09:59:59.062|INFO|null|810184|xxx|xxx||8|http-nio-xxx-exec-1|com.xxx.jim.xxx.XXXController.?.?|MSG接收到来自xxx的文件请求 headers:[host:"xxx", accept:"text/html,application/json,application/xhtmlxml,application/xml;q0.9,*…

Apache Seata分布式事务原理解析探秘

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 前言 fescar发布已有时日,分布式事务一直是业界备受关注的领域,fesca…

如何探索高效知识管理:FlowUs知识库体验很好

在当今信息爆炸的时代,有效的知识管理对于个人和团队的发展至关重要。FlowUs 知识库作为一款创新的知识管理工具,正逐渐成为众多用户的首选,为他们带来了高效、便捷和有条理的知识管理体验。 FlowUs 知识库的一大特色在于其简洁直观的界面设计…

雷池WAF动态防护功能初体验

一、 介绍 大名鼎鼎的雷池WAF最近新上了个名为 动态防护 的功能 所谓动态防护,是在用户浏览到的网页内容不变的情况下,将网页赋予动态特性,即使是静态页面,也会具有动态的随机性。 说白了就是给你网站的 html 和 js 代码加上加密…

前端与嵌入式开发通信之QWebChannel(Qt)

前端与嵌入式开发通信之QWebChannel 最近开发中需要用到和c开发的操作台进行通信的的需求,就找到了这个技术,记录一下 首先需要安装导入 qwebchannel npm i qwebchannel import { QWebChannel } from "qwebchannel"; 初始化qwebchannel并封…

哈喽GPT-4o,程序员如何通过GPT-4o提高办公效率

目录 一、编写工作汇报Prompt:我是一名Java开发工程师,请写一份工作总结,工作内容是一个SpringBootVue实现的图书管理系统,按下面的结构来撰写:1. 工作背景;2. 工作内容;3. 工作建议&#xff1b…