青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

jeromewen

努力中
隨筆 - 9, 文章 - 0, 評論 - 22, 引用 - 0
數據加載中……

Nids.h詳細注釋

#ifndef _NIDS_NIDS_H

#define _NIDS_NIDS_H

#define NIDS_MAJOR 1???? /* 主版本號 */

#define NIDS_MINOR 20??? /* 次版本號 */

#include <sys/types.h>

enum

{

? NIDS_WARN_IP = 1,????? /* 表示 IP 數據包異常 */

? NIDS_WARN_TCP,???????? /* 表示 TCP 數據包異常 */

? NIDS_WARN_UDP,??????? /* 表示 UDP 數據包異常 */

? NIDS_WARN_SCAN ?????? /* 表示有掃描攻擊發生 */

};

?

enum

{

? NIDS_WARN_UNDEFINED = 0,???? /* 表示未定義 */

? NIDS_WARN_IP_OVERSIZED,?????? /* 表示 IP 數據包超長 */

? NIDS_WARN_IP_INVLIST,????????????? /* 表示無效的碎片隊列 */

? NIDS_WARN_IP_OVERLAP,?????????? /* 表示發生重疊 */

? NIDS_WARN_IP_HDR,?????????? /* 表示無效 IP 首部 ,IP 數據包發生異常 */

? NIDS_WARN_IP_SRR,???????????? /* 表示源路由 IP 數據包 */

? NIDS_WARN_TCP_TOOMUCH,??? /* 表示 TCP 數據個數太多 , 因為在 Libnids 中在同一時刻捕獲的 TCP 個數最大值為 TCP 連接參數的哈西表長度的 3/4*/

? NIDS_WARN_TCP_HDR,???????????????? /* 表示無效 TCP 首部 ,TCP 數據包發生異常 */

? NIDS_WARN_TCP_BIGQUEUE,???? /* 表示 TCP 接受的隊列數據過多 */

? NIDS_WARN_TCP_BADFLAGS ???? /* 表示錯誤標記 */

};

?

/*Libnids 狀態描述的是連接的邏輯狀態 , 真正的 TCP 連接狀態有 11 .

?*TCP_ESTABLISHED?????? TCP 連接建立 , 開始傳輸數據

?*TCP_SYN_SEND???????????? 主動打開

?*TCP_SYN_RECV???????????? 接受 SYN

?*TCP_FIN_WAIT1

?*TCP_FIN_WAIT2

?*TCP_TIME_WAIT

?*TCP_CLOSE

?*TCP_CLOSE_WAIT

?*TCP_LAST_ACK

?*TCP_LISTEN

?*TCP_CLOSING

?*/

#define NIDS_JUST_EST 1?????????? /* 表示 TCP 連接建立 , 在此狀態下就可以決定是否對此 TCP 連接進行數據分析 , 可以決定是否捕獲 TCP 客戶端接收的數據 ,TCP 服務端接收的數據 ,TCP 客戶端接收的緊急數據或者 TCP 客戶端接收的緊急數據 */

#define NIDS_DATA 2????????????????? /* 表示接收數據的狀態 , 在這個狀態可以判斷是否有新的數據到達 , 如果有就可以把數據存儲起來 , 可以在這個狀態之中來分析 TCP 傳輸的數據 , 此數據就存儲在 half_stream 數據接口的緩存之中 */

#define NIDS_CLOSE 3???????????????? /* 表示 TCP 連接正常關閉 */

#define NIDS_RESET 4???????????????? /* 表是 TCP 連接被重置關閉 */

#define NIDS_TIMED_OUT 5???? /* 表示由于超時 TCP 連接被關閉 */

#define NIDS_EXITING?? 6?????? /* 表示 Libnids 正在退出 , 在這個狀態下可以最后一次使用存儲在 half_stream 數據結構中的緩存數據 */

?

/* 校驗和 */

#define NIDS_DO_CHKSUM? 0????????? /* 表示告訴 Libnids 要計算校驗和 */

#define NIDS_DONT_CHKSUM 1?????? /* 表示告訴 Libnids 不要計算校驗和 */

?

struct tuple4???????????????? /* 描述一個地址端口對 , 它表示發送發 IP 和端口以及接收方 IP 和端口 , 適用 TCP,UDP*/

{

? u_short source;???????? /* IP 地址的端口號 */

? u_short dest;??????????? /* 目的 IP 地址的端口號 */

? u_int saddr;????????????? /* IP 地址 */

? u_int daddr;????????????? /* 目的 IP 地址 */

};

?

struct half_stream??????? /* 描述在 TCP 連接中一端的所有信息 , 可以是客戶端 , 也可以是服務端 */

{

? char state;???????????????? /* 表示套接字的狀態 , 也就是 TCP 的狀態 */

? char collect;????????????? /* 可以表示有數據到達 , 此數據存放在 data 成員中 , 也可以表示不存儲此數據到 data , 此數據忽略 . 如果大于 0 就存儲 , 否則就忽略 */

? char collect_urg;?????? /* 可以表示有緊急數據到達 , 此數據就存放在 urgdata , 也可以表示不存儲此數據到 urgdata , 此速數據忽略 . 如果大于 0 就存儲 , 否則就忽略 */

?

? char *data;??????????????? /* 用戶存儲正常接受到的數據 */

? int offset;????????????????? /* 表示存儲在 data 中數據的第一個字節的偏移量 */

? int count;????????????????? /* 表示從 TCP 連接開始已經存儲到 data 中的數據的字節數 */

? int count_new;???????? /* 有多少新的數據存儲到 data , 如果為 0, 則表示沒有新的數據到達 */

? int bufsize;

? int rmem_alloc;

?

? int urg_count;? /* 用來存儲緊急數據 */

? u_int acked;????

? u_int seq;

? u_int ack_seq;

? u_int first_data_seq;

? u_char urgdata;

? u_char count_new_urg;???? /* 表示有新的緊急數據到達 , 如果為 0 表示沒有新的緊急數據 */

? u_char urg_seen;??????

? u_int urg_ptr;

? u_short window;?????

? u_char ts_on;

? u_char wscale_on;

? u_int curr_ts;

? u_int wscale;

? struct skbuff *list;

? struct skbuff *listtail;

};

?

struct tcp_stream???????? /* 描述一個 TCP 連接的所有信息 */

{

? struct tuple4 addr;

? char nids_state;

? 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;

};

?

struct nids_prm??????????? /* 描述了 Libnids 的一些全局參數信息 */

{

? 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 的大小 .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.*/

? char *pcap_filter;???? /* 表示過濾規則 , Libpcap 的過濾規則 , 默認值為 NULL, 表示捕獲所有數據包 . 可以在此設置過濾規則 , 只捕獲感興趣的開發包 */

? int promisc;????????????? /* 表示網卡模式 , 如果是非零 , 就把此網卡設置為混雜模式 ; 否則 , 設為非混雜模式 . 默認值為 1*/

? int one_loop_less;??? /* 初始值為 0*/

? int pcap_timeout;???? /* 表示捕獲數據返回的時間 , 以毫秒計算 . 實際上它表示的就是 Libpcap 函數中的 pcap_open_live 函數的 timeout 參數 , 默認值 1024*/

};

?

/*

?* 返回值 : 調用成功返回 1, 失敗返回 0

?* ? :

?* ? : Libnids 初始化 , 這是所有設計基于 Libnids 的程序最開始調用的函數 . 它的主要內容包括打開網絡接口 , 打開文件 , 編譯過濾規則 ,

?*???? 判斷網絡鏈路層類型 , 進行必要的初始化工作

?*/

int nids_init (void);

/*

?* 返回值 :

?* ? : 回調函數名字

?* ? : 注冊一個能夠檢測所有 IP 數據包的回調函數 , 包括 IP 碎片 .e.g

? ?????? nids_register_ip_frag(ip_frag_function);

? ?????? void ip_frag_function(struct ip * a_packet,int len)

? ?????? a_packet 表示接收的 IP 數據包 len 表示接收的數據包長度

? ?????? 此回調函數可以檢測所有的 IP 數據包 , 包括 IP 碎片

?*/

void nids_register_ip_frag (void (*));????? /**/

/*

?* 返回值 :

?* ? : 回調函數名字

?* ? : 注冊一個回調函數 , 此回調函數可以接收正常的 IP 數據包 .e.g

? ?????? nids_register_ip_frag(ip_frag_function);

? ?????? void ip_frag_function(struct ip * a_packet)

? ?????? a_packet 表示接收的 IP 數據包

? ?????? 此回調函數可以接收正常的 IP 數據包 , 并在此函數中對捕獲數到的 IP 數據包進行分析 .

?*/

void nids_register_ip (void (*));???? /**/

/*

?* 返回值 :

?* ? : 回調函數

?* ? : 注冊一個 TCP 連接的回調函數 . 回調函數的類型定義如下 :

? ?????? ?void tcp_callback(struct tcp_stream * ns,void ** param)

? ?????? ?ns 表示一個 TCP 連接的所有信息 , param 表示要傳遞的參數信息 , 可以指向一個 TCP 連接的私有數據

? ?????? ? 此回調函數接收的 TCP 數據存放在 half_stream 的緩存中 , 應該馬上取出來 , 一旦此回調函數返回 , 此數據緩存中存儲的數據就不存在

? ?????? ? .half_stream 成員 offset 描述了被丟棄的數據字節數 . 如果不想馬上取出來 , 而是等到存儲一定數量的數據之后再取出來 , 那么可

? ?????? ? 以使用函數 nids_discard(struct tcp_stream * ns, int num_bytes) 來處理 . 這樣回調函數返回時 ,Libnids 將丟棄緩存數據之前

? ?????? ? num_bytes 字節的數據 . 如果不調用 nids_discard() 函數 , 那么緩存數據的字節應該為 count_new 字節 . 一般情況下 , 緩存中的數據

? ?????? ? 應該是 count-offset 字節

?*/

void nids_register_tcp (void (*));

/*

?* 返回值 :

?* ? : 回調函數

?* ? : 注冊一個分析 UDP 協議的回調函數 , 回調函數的類型定義如下 :

? ?????? ?void udp_callback(struct tuple4 * addr,char *buf,int len,struct ip *iph)

? ?????? ?addr 表示地址端口信息 buf 表示 UDP 協議負載的數據內容 len 表是 UDP 負載數據的長度 iph 表示一個 IP 數據包 , 包括 IP 首部 ,UDP 首部以及 UDP 負載內容

?*/

void nids_register_udp (void (*));

/*

?* 返回值 :

?* ? : 表示一個 TCP 連接

?* ? : 終止 TCP 連接 . 它實際上是調用 Libnet 的函數進行構造數據包 , 然后發送出去

?*/

void nids_killtcp (struct tcp_stream *);

/*

?* 返回值 :

?* ? : 參數 1 一個 TCP 連接 參數 2 個數

?* ? : 丟棄參數 2 字節 TCP 數據 , 用于存儲更多的數據

?*/

void nids_discard (struct tcp_stream *, int);

/*

?* 返回值 :

?* ? :

?* ? : 運行 Libnids, 進入循環捕獲數據包狀態 . 它實際上是調用 Libpcap 函數 pcap_loop() 來循環捕獲數據包

?*/

void nids_run (void);

/*

?* 返回值 : 調用成功返回文件描述符 , 失敗返回 -1

?* ? :

?* ? : 獲得文件描述符號

?*/

int nids_getfd (void);

/*

?* 返回值 : 調用成功返回個數 , 失敗返回負數

?* ? : 表示捕獲數據包的個數

?* ? : 調用 Libpcap 中的捕獲數據包函數 pcap_dispatch()

?*/

int nids_dispatch (int);

/*

?* 返回值 : 調用成功返回 1, 失敗返回 0

?* ? :

?* ? : 調用 Libpcap 中的捕獲數據包函數 pcap_next()

?*/

int nids_next (void);

?

extern struct nids_prm nids_params;?????? /*libnids.c 定以了一個全部變量 , 其定義和初始值在 nids_params*/

extern char *nids_warnings[];????????

extern char nids_errbuf[];

extern struct pcap_pkthdr *nids_last_pcap_header;

?

struct nids_chksum_ctl {????? /* 描述的是計算校驗和 , 用于決定是否計算校驗和 */

???????? u_int netaddr;?????????????? /* 表示地址 */

???????? u_int mask;?????????????????? /* 表示掩碼 */

???????? u_int action;???????????????? /* 表示動作 , 如果是 NIDS_DO_CHKSUM, 表示計算校驗和 ; 如果是 NIDS_DONT_CHKSUM, 表示不計算校驗和 */

???????? u_int reserved;????????????? /* 保留未用 */

};

/*

?* 返回值 :

?* ? : 參數 1 表示 nids_chksum_ctl 列表 參數 2 表示列表中的個數

?* ? : 決定是否計算校驗和 . 它是根據數據結構 nids_chksum_ctl 中的 action 進行決定的 , 如果所要計算的對象不在列表中 , 則必須都要計算校驗和

?*/

extern void nids_register_chksum_ctl(struct nids_chksum_ctl *, int);

?

#endif /* _NIDS_NIDS_H */

posted on 2006-09-29 12:31 JeromeWen 閱讀(3409) 評論(4)  編輯 收藏 引用 所屬分類: C++

評論

# re: Nids.h詳細注釋   回復  更多評論   

不錯,存下先。謝了~~
2006-10-05 16:04 | Jerin

# re: Nids.h詳細注釋   回復  更多評論   

下載lib源碼后編譯會有dll,lib文件生成
2007-03-07 02:33 | JeromeWen

# re: Nids.h詳細注釋 [未登錄]  回復  更多評論   

好! 不錯!
2008-01-06 12:36 | 我的家

# re: Nids.h詳細注釋   回復  更多評論   

不錯啊!
2011-12-16 16:46 | 等等
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美成人午夜激情在线| 久久福利一区| 一本色道**综合亚洲精品蜜桃冫| 亚洲欧美日韩久久精品 | 欧美 日韩 国产精品免费观看| 99日韩精品| 国产日韩欧美亚洲| 久久久久一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 亚洲免费福利视频| 日韩视频一区二区三区在线播放免费观看| 午夜欧美电影在线观看| 久久人人97超碰国产公开结果| 欧美激情精品久久久久久免费印度 | 午夜精品短视频| 中日韩男男gay无套| 欧美日韩一区二区三区免费看 | 久久一日本道色综合久久| 午夜精品免费在线| 国产日韩欧美中文| 久久黄色级2电影| 欧美一级夜夜爽| 黄色成人av网站| 欧美大片91| 欧美国产日韩一二三区| 亚洲午夜精品福利| 亚洲自拍另类| 伊人久久男人天堂| 亚洲国产日韩欧美在线图片| 欧美日韩国产综合视频在线观看中文| 亚洲美女毛片| 一区二区三区高清视频在线观看| 国产精品久久久久久五月尺| 久久av一区二区| 久久久一区二区| 一区二区欧美国产| 亚洲欧美成人网| 亚洲国产成人久久综合一区| 亚洲黄页视频免费观看| 欧美视频手机在线| 久久久久久一区二区| 欧美国产日韩xxxxx| 午夜久久久久久| 欧美四级剧情无删版影片| 欧美丝袜一区二区三区| 久久免费黄色| 欧美精品少妇一区二区三区| 午夜精品久久久久久久99樱桃 | 亚洲一二三区在线| 欧美一区二区三区在线观看| 91久久久久久国产精品| 在线综合亚洲| 在线观看91精品国产麻豆| 亚洲毛片一区二区| 激情文学一区| 国产精品99久久不卡二区| 激情久久一区| 久久影院午夜论| 欧美视频免费在线| 久久夜色精品国产欧美乱| 欧美日韩视频在线观看一区二区三区 | 午夜电影亚洲| 亚洲激情一区| 亚洲欧美一区二区三区久久| 亚洲精品美女在线观看播放| 亚洲欧美日韩成人| 日韩视频在线你懂得| 久久国产夜色精品鲁鲁99| 亚洲婷婷国产精品电影人久久| 久久成人18免费观看| 亚洲永久免费av| 欧美另类变人与禽xxxxx| 欧美顶级少妇做爰| 美女图片一区二区| 久久高清国产| 欧美视频日韩视频在线观看| 亚洲国产电影| 亚洲成色最大综合在线| 欧美在线关看| 欧美一区二区免费观在线| 欧美久久久久久| 亚洲高清自拍| 亚洲成人自拍视频| 欧美一区三区三区高中清蜜桃| 亚洲欧美成人网| 欧美午夜片在线观看| 一区二区日韩欧美| 午夜久久99| 国产精品一二一区| 亚洲男女自偷自拍图片另类| 亚洲欧美日韩视频一区| 国产精品久久久久77777| 一本一本久久a久久精品综合麻豆| 亚洲人成网站在线观看播放| 欧美va天堂| 亚洲精品一区在线观看| 一区二区电影免费在线观看| 欧美日韩一区二区在线观看| 一本色道久久综合亚洲精品按摩| 在线一区二区三区四区五区| 欧美性生交xxxxx久久久| 一区二区三区鲁丝不卡| 午夜久久久久| 国产一区二区毛片| 久久久久综合网| 亚洲观看高清完整版在线观看| 亚洲精品网站在线播放gif| 欧美日韩高清在线| 亚洲午夜未删减在线观看| 欧美一区二区三区视频免费| 国产视频在线观看一区二区| 久久久久久久尹人综合网亚洲| 欧美高清视频在线| 亚洲视频精品在线| 国产毛片一区二区| 久久午夜影视| 亚洲理伦电影| 欧美一区二区三区在线视频 | 欧美影视一区| 韩国av一区二区| 亚洲欧美日韩视频二区| 亚洲成人自拍视频| 一区二区三区产品免费精品久久75| 欧美激情视频一区二区三区不卡| 亚洲日本无吗高清不卡| 亚洲一区二三| 国产原创一区二区| 欧美国产综合视频| 亚洲综合精品四区| 免费视频最近日韩| 亚洲五月婷婷| 狠狠色综合色区| 欧美日韩第一区| 久久精品伊人| 亚洲精品中文字| 久久美女艺术照精彩视频福利播放| 亚洲人成久久| 国产麻豆精品久久一二三| 欧美www在线| 欧美亚洲色图校园春色| 亚洲国产91| 久久久久88色偷偷免费| 99国产精品视频免费观看| 国产日韩精品在线| 欧美乱大交xxxxx| 欧美在线一区二区| 一片黄亚洲嫩模| 欧美国产在线电影| 久久久久久久久综合| 亚洲一区二区在线免费观看视频| 亚洲国产精品视频| 国产一区二区在线免费观看| 欧美视频中文在线看| 免费国产一区二区| 欧美尤物巨大精品爽| 亚洲一级在线| 99精品热视频| 亚洲日本成人网| 欧美国产视频在线观看| 久久久国产精品一区| 午夜精品久久久久久久99黑人| 99国产精品99久久久久久粉嫩| 尤物视频一区二区| 狠狠88综合久久久久综合网| 国产一区二区三区不卡在线观看| 国产精品v日韩精品| 欧美大片在线影院| 毛片av中文字幕一区二区| 久久精品视频在线播放| 亚洲欧美国产另类| 亚洲专区一二三| 亚洲永久免费精品| 亚洲午夜一二三区视频| 亚洲天堂男人| 亚洲在线一区二区三区| 亚洲欧美日韩国产一区| 亚洲综合丁香| 亚欧成人精品| 先锋影音一区二区三区| 午夜亚洲视频| 久久成人免费电影| 久久久国产一区二区| 久久欧美肥婆一二区| 美玉足脚交一区二区三区图片| 久久综合九色综合网站| 久久综合一区二区| 欧美精品123区| 欧美四级伦理在线| 国产欧美日韩视频一区二区| 国产午夜亚洲精品不卡| 国内免费精品永久在线视频| 在线观看视频免费一区二区三区| 亚洲第一免费播放区| 亚洲美女诱惑| 亚洲综合三区| 久久天天综合| 亚洲第一精品福利| 一本色道久久综合一区| 亚洲欧美日韩一区在线| aa亚洲婷婷|