BM字符串搜索算法

BM(Boyer-Moore)字符串搜索算法是一种非常高效的字符串搜索算法。它由Bob Boyer和J Strother Moore设计于1977年。算法对将要搜索的字符串(模式)进行预处理,对文本不进行预处理操作。这个算法适用于模式远短于文本的场景,以及模式会被多次搜索的场景。BM算法在搜索时使用预处理阶段生成的信息以快速跳过文本中不匹配的部分,相比其他很多字符串搜索算法更快。

阅读全文

suricata 4.0.3 应用层协议检测

suricata中应用层协议检测包含了两种方法,pattern match和probing parser,这里对协议检测的初始化和查找做整理记录。

阅读全文

AC自动机多模式匹配

Aho–Corasick算法是由Alfred V. Aho和Margaret J.Corasick 发明的字符串搜索算法,用于在输入的一串字符串中匹配有限组“字典”中的子串。它与普通字符串匹配的不同点在于同时与所有字典串进行匹配。

阅读全文

suricata 4.0.3 tcp reassembly

tcp协议上的应用层协议检测时,需要做数据重组,这里简单介绍reassembly逻辑。

阅读全文

suricata 4.0.3 flow

FlowWorker线程模块的处理函数为FlowWorker,主要包括五部分功能,分别是Flow处理、应用层协议识别、特征检测、输出、tcp segment清理。这里简单记录flow的处理。

阅读全文

suricata 4.0.3 收包解码

suricata中receive和decode两个模块总是在一个线程中,而且每种receive模块都对应一个自己的decode模块,因此这里记录在一起。这两个模块的主要目标是根据收取的数据包填充合适的Packet结构,交由flowworker进行后续处理。decode阶段同时做了分片数据包重组、隧道数据包解封装等处理。

阅读全文

获取网卡列表的几种方式

记录三种可以列举网卡设备的方式,ioctl、getifaddrs、rtnetlink。

阅读全文

suricata 4.0.3 线程模型

几个线程模型不同点及工作流程介绍,涉及的结构体的含义及关系介绍。

阅读全文

suricata 4.0.3 runmode

runmode的含义,如何确定运行时runmode,程序中结构体及其组织方式。

阅读全文

suricata 4.0.3 配置模块

程序对命令行参数和配置文件的处理与组织方式。

阅读全文