libnids开发包

tcp_stream:描述了一个TCP连接的完整信息

struct tcp_stream
{
  struct tuple4 addr;//表示了一个TCP连接的四个重要信息:源IP地址、源端口号、目的IP地址和目的端口号
  char nids_state;   /*表示连接的逻辑状态,共有六种状态:
       NIDS_JUST_EST,NIDS_DATA,NIDS_CLOSE,NIDS_RESET,NIDS_TIMED_OUT,NIDS_EXITING。
       这个成员描述了libnids的状态信息。状态信息非常重要,不同的状态代表不同的操作情况,
       下面分别对它们进行详细阐述:
       NIDS_JUST_EST:表示TCP连接建立,在此状态下就可以决定是否对此TCP连接进行数据分析,
       可以决定是否捕获TCP客户端接收的数据、TCP服务器端接收的数据、
       TCP客户端接收的紧急数据或者TCP服务器端接收的紧急数据
       NIDS_CLOSE:表示TCP连接正常关闭
       NIDS_RESET:表示感谢TCP连接被重置关闭
       NIDS_TIMED_OUT:表示由于超时TCP连接被关闭
       NIDS_EXITING:表示libnids正在退出,在这个状态下可以最后一次使用存储在half_stream数据结构中的缓存数据
       NIDS_DATA:表示接收数据的状态,在这个状态可以判断是否有新的数据到达,如果有就可以把数据存储起来,
       可以在这个状态之中来分析TCP传输的数据,此数据就存储在half_stream数据结构的缓存之中*/
  struct lurker_node *listeners;//
  struct half_stream client;//表示客户端的信息
  struct half_stream server;//表示服务端的信息
  struct tcp_stream *next_node;
  struct tcp_stream *prev_node;
  int hash_index;
  struct tcp_stream *next_time;
  struct tcp_stream *prev_time;
  int read;
  struct tcp_stream *next_free;
};

nids_prm描述了libnids的一些全局参数信息

struct nids_prm
{
  int n_tcp_streams;//表示哈西表大小,此哈西表用来存放tcp_stream数据结构,默认值为1040。在同一时刻libnids捕获的TCP数据包的最大个数必须是此参数值的3/4
  int n_hosts;      //表示哈西表大小,此哈西表用来存储IP碎片信息的,默认值为256
  char *device;     //表示网络接口,libnids将在此网络接口上捕获数据,默认值为NULL。这样libnids将使用pcap_lookupdev来查找可用的网络接口。如果其值为all,表示捕获所有网络接口的数据。
  char *filename;   //表示用来存储网络数据的捕获文件。此文件的类型必须与libpcap类型一致。如果设置了文件,与此同时就应该设置成员device为NULL,默认值为NULL
  int sk_buff_size; //sk_buff的大小。此数据结构是linux内核中一个重要的数据结构,是用来进行数据包排队操作的,默认值为168
  int dev_addon;    //表示在数据结构sk_buff中用于网络接口上信息的字节数。如果是-1(默认值),那么libnids会根据不同的网络接口进行修正
  void (*syslog) ();//默认值为nids_syslog()函数。在syslog函数中可以检测入侵攻击,如网络扫描攻击,也可以检测一些异常情况,如无效TCP标记
  int syslog_level; //表示日志等级,默认值为LOG_ALERT
  int scan_num_hosts;//表示一个哈西表的大小,(此哈西表用来存储端口扫描信息)表示LIBNIDS将要检测的同时扫描的端口数据。如果其值为0,LIBNIDS将不提供端口扫描功能。默认值为256
  int scan_delay;   //表示在扫描检测中,两端口扫描的间隔时间,以毫秒来计算,缺省值为3000
  int scan_num_ports;//表示相同源地址必须扫描的TCP端口数目,默认值为10
  void (*no_mem) (char *);//当libnids发生内存溢出时被调用。
  int (*ip_filter) ();/*是一个函数指针,此函数可以用来分析IP数据包,当有IP数据包到达时,此函数就被调用。
                        如果此函数返回非零值,此数据包就被处理;如果返回零,此IP数据包就被丢弃。
      默认值为nids_ip_filter函数,总是返回1。原形:
      static int nids_ip_filter(struct ip *x, int len)
      {
       (void)x;
       (void)len;
       return 1;
      }*/
  char *pcap_filter; //表示过滤规则,即libpcap的过滤规则,默认为NULL,表示捕获所有数据包。可在此设置过滤规则,只捕获感兴趣的开发包。
  int promisc;      //表示网卡的模式,如果是非零,就把此网卡设为混杂模式;否则,设为非混杂模式。默认值为1
  int one_loop_less;
}; 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值