Snort预处理插件HelloWorld程序开发

本文档详细介绍了Snort预处理插件的开发步骤,包括修改spp_template.c和.h文件,注册SetupHello函数,调整Makefile及snort.conf配置。通过实例展示了如何创建一个简单的打印语句的预处理器,并提到了DPX作为动态预处理器的起点。在开发过程中可能遇到的问题,如预处理器主函数不工作,需要启用session_api->enable_preproc_all_ports。同时,提供了Snort预处理器的相关学习资源和下载链接。
摘要由CSDN通过智能技术生成

文章结构

  • 1,预处理插件开发注意
  • 2,开发步骤
  • 3,DPX介绍
  • 4,附录:代码
  • 5,参考文献

预处理器开发注意

Preprocessors perform some function once for each packet. This is different from detection plugins, which are accessed depending on the standard rules. When adding a plugin to the system, be sure to add the “Setup” function to the InitPreprocessors() function call in plugbase.c!

注意:本文的Snort版本是2.9.13。

预处理器对每一个数据包只执行一次,它不同于检测插件(检测插件的获取依赖于基本规则 rules).当我们给Snort添加预处理插件的时候,请务必将"Setup"函数添加到plugbase.c源文件中的**InitPreprocessors()**函数中去。

注意:上面是Snort源文件中spp_template.c (预处理器模板)中的注释,这个注释的版本没有及时更新,原文中的InitPreprocessors( ) 函数已经被替换成了 RegistPreprocessors( )

开发步骤

编写过程简述:
  1. 根据spp_template.c里面的内容修改spp_template.cspp_template.h
    (1) 将这两个文件名称修改为spp_hello.cspp_hello.h
  2. 修改spp_hello.c函数
    (1) SetupHello
    (2) HelloFunction
  3. 修改spp_hello.h函数
    (1) 声明SetupHello
  4. 修改plugbase.c函数
    (1) #include preprocessors/spp_hello.h
    (2) RegistProcesser函数中调用SetupHello
  5. 修改preprocids.h
    (1) #define PP_MAX 38
    (2) #define PP_HELLO 37
    对新增的解码类型自己定义的标志
  6. 修改Makefile.am,并在根目录运行automake命令
  7. make, make install 直接覆盖已安装的snort
  8. 修改/etc/snort/snort.conf
  9. 测试:snort -dev -c /etc/snort/snort.conf

过程中出现的问题:
1- aumake版本的确定
a) 查看源代码目录下的文件Makefile
Makefile.in generated by automake 1.16.1 from Makefile.am
b) 版本为automake1.16.1

2- 预处理插件被加载而且初始化完成,但是预处理插件主函数不工作
a) 原因是新版本的Snort新增加了session_api->enable_preproc_all_ports
加入这一行代码后,预处理器运行正常

3-安装完之后需要配置Snort
每个预处理器都在snort.conf中进行单独配置,如果不配置就不能使用

preprocessor Hello

4-关于Snort的安装
请参考Snort官网给出的学习文档(很好用哦)或者网上的一些参考资料
( p.s.这里就是懒一下,或许我以后会补上来)

5-关于spp_template文件的一些说明

详情请参考spp_template.c中的注释。

由于这里只是实现了比较简单地在控制台打印语句的HelloWolrd程序,所以像参数鸡西函数ParseTemplateArgs等等就没有使用。
改名:

原名 新名 修改
spp_tempalte.h spp_hello.h 添加SetupHello函数的声明
spp_tempalte.c spp_hello.c
TemplateInit HelloInit 添加初始化操作,通过调用AddFuncToPreprocList 将PreprocHello、PreprocCleanExitHello、PreprocRestartHello注册给系统
SetupTemplate SetupHello 调用RegisterPreprocessor 将此插件的初始化函数HelloInit注册给系统
ParseTemplateArgs xxxx 添加对参数的处理操作
PreprocFunciton HelloFunction 加入预处理逻辑代码
PreproCleanExitFunction xxxx 添加插件退出时的清理操作
PreproRestartFunction xxxx 添加插件重启时的操作。(不常用,空操作)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值