李佳薇

有座巨大的停了的时钟
倾倒在赶路的途中 挡我 向前走
有只黑色的老鹰在俯冲
叼走了你送的承诺 回头 冷冷看我
有阵将眼泪扫落的狂风
掀起了隐藏的疼痛 把我 变赤裸
我为蔓延的回忆除草了
心中却长出盛开的 寂寞 原来是梦

有些伤痕像场大火 把心烧焦难以复活
不碰了好像忘了 恐惧却在脑海住着
重复卡在一个 重要的时刻 不自觉就会退缩
连幸福也克制着 觉得什麽都会变的
防备着平静到最後 连爱也透着冷漠[……]

Read more

nids_run调用了pcap_loop,无止境地循环抓包,抓到的包传给回调函数nids_pcap_handle来处理,而回调函数最终都会调用gen_ip_proc来根据不同类型协议的包进行处理重组,process_tcp,process_udp等等

首先是IP和TCP的结构体,可能不同的linux操作系统定义不同,下面头文件CentOS6.4里的定义

IP结构体:/usr/include/net[……]

Read more

一般的表,如果需要查找某个关键字的记录,就得从表头开始,挨个地比较记录a[i]和key的值是否相等,如果相等就算成功找到了,返回i;假如是有序表来查找,可以通过a[i]和key来二分查找,直到找到相应的i;最终为了找到那个i,其实也就是相对的下标,再通过顺序存储的存储位置来计算,也就是第一个元素内存存储位置加上i-1个单元位置LOC(ai)=LOC(a1)+(i-1)*c,得到最后内存地址

由此可[……]

Read more

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

Read more

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

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

依赖的版本有[……]

Read more

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

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

1:libnids初始化

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

Read more

1:基本函数

int nids_init(void);

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

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

部分源码包含的函数调用

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

Read more

数据结构的定义,源代码来自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