libnids-1.24关于libglib错误引发对执行流程的思考

最近在自己PC上安装的虚拟机VMware里安装的CentOS7.0操作系统,在编译和使用libnids-1.24的时候,一直会出现奇怪的警告,最开始仅仅是编译的时候报警,库文件还是能正常生成,但是在使用用例的时候,调用库的时候还是会报错,也就是这问题不解决没法继续了;可服务器上CentOS6.4编译运行都无异常(可参考上篇),但是刚刚在疑惑中,仔细调试了一把,就更奇怪了,关于一个disable的选[……]

Read more

libnids安装和用例

原始的libnids是基于libpcap和libnet的,因此在安装的时候,必须要安装这两个模块才行,当然假如你是基于libnids来开发,不需要libnet,可以看下文档写的,disabled掉libnet,或者直接将libnids里的需要的源文件拔出来,供自己用

下面是原始官方的版本,libnids-1.24,libnet-1.19,libpcap-1.3.0,安装顺序和过程如下

依赖的版本有[……]

Read more

libnids处理流程

通常用的最多的是process_tcp,tcp_callback之类的,但是调用流程是啥样的,也许有人要说用source insight寻找函数call即可,但是估计会让人失望,不出意外只能查看到init过程中才包含有process_tcp,花点时间研究下整个过程

下面的源码全部基于libnids-1.24版本

1:libnids初始化

假如你程序基于libnids来实现的,首先要进行初始化,调用[……]

Read more

libnids常见函数

1:基本函数

int nids_init(void);

函数调用成功返回1,失败返回0;无参数

这个函数功能是对libnids进行初始化,也就是所有基于libnids的程序最开始调用的函数;包含的内容有打开网络接口,打开文件,编译设置过滤规则,判断链路层类型以及其它初始化

部分源码包含的函数调用

665     init_procs();
666     tcp_init(nids_params.n[......]

Read more

libnids常用数据结构

数据结构的定义,源代码来自libnids-1.24版本,虽然libnids貌似更新的不频繁,但是基本是跟Linux内核的TCP/IP协议栈实现类似的,所以十分有用

1:报警类型

对IP,TCP,UDP数据包异常以及扫描的检测,不同的方式提供不同的报警类型

 23 enum
 24 {
 25   NIDS_WARN_IP = 1,         //表示IP数据包异常
 26   NIDS_WAR[......]

Read more