源码分析
文章平均质量分 61
种菜的
这个作者很懒,什么都没留下…
展开
-
Suricata6.0流表管理源码注释九:补充:流新建过程中对于超时流的处理
流新建过程中对于超时流的处理原创 2022-01-09 11:39:43 · 6392 阅读 · 0 评论 -
Suricata6.0流表管理源码注释八:流的回收01
流的回收原创 2022-01-09 11:06:07 · 7383 阅读 · 0 评论 -
Suricata6.0流表管理源码注释七:流的老化03
函数FlowTimeoutHashInChunks原创 2022-01-09 10:35:06 · 522 阅读 · 0 评论 -
Suricata6.0流表管理源码注释六:流的老化02
FlowTimeoutHash 函数老化处理原创 2022-01-08 22:53:44 · 674 阅读 · 0 评论 -
Suricata6.0流表管理源码注释六:流的老化01
流的老化原创 2022-01-08 21:49:21 · 3163 阅读 · 0 评论 -
Suricata6.0流表管理源码注释五:流的建立03:全局flow内存池与线程自己的flow队列
全局flow内存池与线程自己的flow队列原创 2022-01-08 20:00:12 · 475 阅读 · 0 评论 -
Suricata6.0流表管理源码注释四:流的建立02
流的建立02,FlowGetNew原创 2022-01-08 18:58:29 · 643 阅读 · 0 评论 -
Suricata6.0流表管理源码注释三:流的建立01
流表建立原创 2022-01-08 16:58:12 · 2924 阅读 · 0 评论 -
Suricata6.0流表管理源码注释二:流表初始化
这篇文章主要对流表初始化用到的主要函数进行注释。原创 2022-01-08 15:11:51 · 3958 阅读 · 0 评论 -
Suricata6.0流表管理源码注释一:流表管理简介
流管理包括流表的初始化,流的新建、查找、更新、检查老化、流的回收、空闲流数量的动态维护原创 2022-01-07 16:20:44 · 2954 阅读 · 0 评论 -
suricata 3.0,日志模块初始化流程
typedef struct RunModeOutput_ { const char *name; TmModule *tm_module; OutputCtx *output_ctx; TAILQ_ENTRY(RunModeOutput_) entries;} RunModeOutput;TAILQ_HEAD(, RunModeOutput_) RunModeOutputs = TAILQ_HEAD_INITIALIZER(RunModeOutputs);...原创 2022-01-06 16:08:15 · 1663 阅读 · 0 评论 -
suricata 结构体struct Pool_说明
suricata 内存池结构体struct Pool_结构体底层存储数据的是void*指针,所以可以存储任意类型的数据,我目前看到的tcp的分段和会话都使用该内存池进行存储,结构体分别是TcpSegment,TcpSession,在初始化函数PoolThreadInit->PoolInit中调用各自的内存分配函数进行内存分配。/* pool structure */typedef struct Pool_ { uint32_t max_buckets; pool的最大bucket原创 2022-01-06 15:30:20 · 863 阅读 · 0 评论 -
suricata smtp协议解析源码注释七-完结篇
一。ProcessBodyLineSMTPParse-> SMTPProcessRequest-> SMTPProcessCommandDATA-> MimeDecParseLine-> ProcessMimeEntity-> ProcessMimeBody->ProcessBodyLine该函数处理body数据,根据头部字段设置编码标志对数据进行解码,base64,quote-prntable。如果数据未编码则不需要解码,解码后将数据存储到mime_sta..原创 2021-09-13 10:09:11 · 844 阅读 · 0 评论 -
suricata smtp协议解析源码注释六
一。解析函数ProcessMimeBody:解析data命令的body数据 这个函数比较简单,主要查询boundary分界线,然后根据查找结果调用bounddary处理函数ProcessMimeBoundary,或者调用body数据处理函数static int ProcessMimeBody(const uint8_t *buf, uint32_t len, MimeDecParseState *state){ int ret = MIME_DEC_OK; ui.原创 2021-09-13 09:51:56 · 960 阅读 · 0 评论 -
suricata smtp协议解析源码注释五
一。MIME头部字段解析函数ProcessMimeHeaders主要完成以下几个工作:1。调研函数FindMimeHeader根据冒号查找头部字段name和value,如content-type等等,并对其进行存储。2。解析完头部字段后,分析头部字段的重要内容,如文本格式,编码类型,是否包含附件,是否有boundary,是否嵌套格式等,并根据这些信息设置相应的标志位,在解析body数据时使用。参数:buf 行数据,len:行数据长度 static int ProcessMimeHe原创 2021-09-12 17:48:35 · 3884 阅读 · 0 评论 -
suricata smtp协议解析源码注释四
一。data命令的数据处理函数SMTPProcessCommandDATA对data命令后的数据解析工作,先判断命令是否是点“.”,如果是说明数据接收完毕,客户端不再发送数据,则设置解析状态,和解析标志tx->done=1。如果不是“.”,则调用MimeDecParseLine函数,完成数据行的解析。static int SMTPProcessCommandDATA(SMTPState *state, Flow *f, Ap原创 2021-09-12 16:13:14 · 624 阅读 · 0 评论 -
suricata smtp协议解析源码注释-零--smtp协议格式简介
本篇文章为smtp协议解析源码注释的第一篇,简单介绍一下smtp协议格式,大部分格式内容是从网上复制过来的。一。smtp的客户端与服务器交互过程常用客户端命令:HELO/EHLO 发出请求AUTH LOGIN 身份认证MAIL FROM:发件人email地址RCPT TO:收件人email地址,可以写多个地址,发送给多人,这是一个列表DATA...原创 2021-09-12 14:19:57 · 1834 阅读 · 0 评论 -
suricata smtp协议解析源码注释三
本篇文章开始对主要函数的代码做注释,有的部分语句尚未理解,没有做注释。1 客户端到服务器请求的入口函数SMTPProcessRequeststatic int SMTPProcessRequest(SMTPState *state, Flow *f, AppLayerParserState *pstate){ SCEnter(); //state->curr_tx始终指向当前的tmtp事务结构体指针 SMT原创 2021-09-12 15:44:02 · 924 阅读 · 0 评论 -
suricata smtp协议解析源码注释二
一。MIME信件实体分界线Boundary分界线:在原boundary前加两个横线“--”结尾boundary:在原boundary前和后各加两个横线“--”二。Smtp解析模块使用变量state->stack->top->data指向当前信件实体,新到的数据包括头部和数据都会保存到该结构体,该变量始终指向正在解析的数据要保存到的信件实体结构体指针,state->stack以堆栈的形式组织所有信件实体: state->stack->top->data原创 2021-09-11 11:57:09 · 1265 阅读 · 0 评论 -
suricata smtp协议解析源码注释一
一。Suricata解析smtp协议整体思路Smtp协议解析模块根据客户端与邮件服务器之间的每一个smtp交互命令,设置了多个状态即当前的smtp命令和解析阶段。Smtp协议解析模块将smtp的交互过程视为一次事务,该事务记录了状态变化和解析阶段的过程,每次状态变化时,根据数据传输方向(客户到服务器,服务器到客户),根据当前方向对当前状态进行相应的处理。例如:当客户端发送HELO命令后,事务的状态变为HELO,此时,服务器的操作就是处理HELO后反馈数据给客户端,客户端的操作就是解析服务器对HE原创 2021-09-10 16:35:16 · 1841 阅读 · 0 评论 -
IP分片笔记
1。ip分片的结构体组织形式先记录以下特殊的字段:(1)skb_buff的cb字段 char cb[48],是一个自定义字段,在协议各层处理时,可以存储各协议的私有数据,就是随便自己定义,在ip层分片时存储的是struct inet_skb_parm *,该结构体嵌套两个数据:ip选项 struct ip_options opt; 和 标识字段flags。(2)skb_buff结构...原创 2019-12-21 18:23:07 · 516 阅读 · 0 评论 -
IP重组笔记
看过ip协议源码后,将分片与重组注意事项记录下来,以免忘记。1。ip重组结构体组织形式理解任何代码,首先需要理解其数据结构,以及凌驾于数据结构之上的操作。整体而言,所有分片都存储在全局变量ip4_frags中:#define INETFRAGS_HASHSZ 64static struct inet_frags ip4_frags->hashstruct...原创 2019-12-18 19:43:48 · 1139 阅读 · 0 评论 -
netfilter学习总结一:规则结构表示及其内存布局
最近对netfilter进行了研究,已经搞明白了其框架结构、运行流程、以及与iptables的交互流程包括规则设置,慢慢总结一下理解的知识,记录下来,加深理解,以防忘记。另外,虽然我只是记录我的学习过程,以免忘记,而且不成体系,但是字段说明增加了结构体的重要字段在程序里的关键点的使用时机,这个是网上资料所没有的,网上资料只说明字段含义,从不说什么时候用,什么时候赋值,在哪里...原创 2019-12-07 16:48:10 · 810 阅读 · 0 评论