Snort预处理插件HelloWorld程序开发

文章结构

  • 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 添加插件重启时的操作。(不常用,空操作)

运行结果&#x

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值