版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用libnids构建入侵检测系统(1)四川大学软件学院2009-09助教姓名 QQ号 邮箱罗云 814314989 cloudluo99@王亮 354185558 legend115599@王正霞 593910963 xiaxia_588@126.com李雯 908441949win_lee19860830@3主要内容讲解Libnids的数据结构函数,并给出一些具体的例子,同学们在此基础上实现一个简单的协议分析程序或是一个简单的入侵检测系统4什么是libnidsLibnids是一个基于网络入侵检测开发的专业编程接口。我们利用Libnids可以实现:网络数据包的捕获;IP碎片重组、TCP流数据重组;入侵检测。5Libnids的安装
安装Libnids必须要有Libpcap、Libnet库的支持,所以要想是试用Libnids必须按照Libpcap、Libnet与Libnids的顺序安装这三个软件包
安装方法:
1)下载源码包;2)释放归档文件;
3)./configure;make;makeinstall6Libnids编程模型#include“nids.h”main(){applicationprivateprocessing,notrelatedtolibnidsoptionalmodificationoflibnidsparametersif(!nids_init())something'swrong,terminate;registrationofcallbackfunctionsnids_run();
//notreachedinnormalsituation}7Libnids基本数据结构(1)TCP连接参数structtuple4{/*源端口和目的端口*/
unsignedshortsource,dest;/*源地址与目的地址*/
unsignedlongsaddr,daddr;};8Libnids基本数据结构(2)TCP连接单端信息
structhalf_stream{
用23个变量了描述TCP连接信息…….};9Libnids基本数据结构(3)Charstate;表示套接字的状态,如TCP_CLOSE、TCP_ESTABLISHED;charcollect;用来指示本端是否接收数据,>0,将数据存放在data指向的字符缓冲区,<0,忽略进入本端的数据;
charcollect_urg;用于指示本端是否接受紧急数据;
char*data;字符缓冲区,用于存放流向本端的数据
intcount;用于指示连接建立后本端已经接受的字节数;10Libnids基本数据结构(4)intoffset:表示存储在data中数据的第一个字节的偏移量;intcount_new;用于指示是否有新数据到达本端,为0表示没有新数据 charcount_new_urg;用于指示是否有新的紧急数据到达本端,为0表示没有新的数据
11Libnids基本数据结构(5)TCP连接完整信息structtcp_stream{ structtuple4addr; charnids_state; structhalf_streamclient,server;
……};12Libnids基本数据结构(6)addr:用于表示一个TCP连接的四个重要信息;nids_state:表示连接的逻辑状态,共有六种状态: NIDS_JUST_EST NIDS_CLOSE NIDS_RESET NIDS_TIMED_OUT NIDS_EXITINGNIDS_DATA
13Libnids基本数据结构(6)成员client表示客户端信息,成员server表示客户端信息。14Libnids库中常用函数(1)intnids_init(void)
函数成功返回1,失败返回0
函数功能:对libnids进行初始化,包括打开网络接口,打开文件,编译过滤规则、设置过滤规则、判断网络链路层信息15Libnids库中常用函数(2)Voidnids_run(void);
此函数的功能是运行libnids,进入循环捕获数据包的状态,并将捕获的数据包交给注册的回调函数进行处理16Libnids库中常用函数(3)注册函数:针对IP、TCP、UDP协议分为三类注册函数IP注册函数
voidnids_register_ip(void(*))
注册一个可以处理IP数据包的函数,该函数的定义类型如下:
voidip_function(structip*a_packet)其中a_packet表示的是所捕获的IP数据包17Libnids库中常用函数(4)TCP注册函数
voidnids_register_tcp(void(*))
回调函数的形式为:
voidtcp_callback(structtcp_stream*ns,void**param)
其中ns表示一个TCP全连接的所有信息,param表示要传递的参数,18Libnids库中常用函数(5)UDP注册函数
voidnids_register_udp(void(*));
回调函数的形式是
voidudp_callback(structtuple4*addr,char*buf,intlen,structip*iph);addr用于表示接收与发送端的IP地址与端口,buf表示UDP协议负载数据的内容,参数len表示UDP负载数据的长度,IPH表示一个IP数据包,包括IP首部,UDP首部以及UDP负载19Libnids库中常用函数(6)Voidnids_killtcp(structtcp_stream*a_tcp)函数功能:终止TCP连接Voidnids_discard(structtcp_stream*a_tcp,intnum)函数的功能是丢弃num字节的TCP数据,用于存储更多的数据20试验阅读与理解libnids给出的例子程序sniff和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中语文第三单元随笔杂文第10课短文三篇课时作业含解析新人教版必修4
- 通航公司经营合同范例
- 四川工商学院《经济法学》2023-2024学年第一学期期末试卷
- 四川工程职业技术学院《交通工程经济与管理》2023-2024学年第一学期期末试卷
- 四川国际标榜职业学院《家具品牌策划》2023-2024学年第一学期期末试卷
- 钢筋车间劳务合同范例
- 厂房装修包工合同范例
- 四川传媒学院《快速表达设计》2023-2024学年第一学期期末试卷
- 四川财经职业学院《微连接与封装》2023-2024学年第一学期期末试卷
- 餐饮业运营合作合同范例
- 新旧物业公司交接管理流程
- 2024年高考物理江苏卷试卷评析及备考策略(课件)
- 铁路项目施工组织设计实例
- 大学生心理健康与发展(高等院校心理健康教育)全套教学课件
- 广东省佛山市南海区2023-2024学年九年级上学期期末考试模拟卷
- DB43-T 2927-2024 中医护理门诊建设与管理规范
- 理论力学(山东科技大学) 知到智慧树网课答案
- 保险客服正规劳动合同范本
- 中国音乐史与名作赏析智慧树知到期末考试答案章节答案2024年山东师范大学
- MOOC 人工智能导论-浙江工业大学 中国大学慕课答案
- 第1课 《蓼莪》 公开课一等奖创新教案(表格式)《大学语文(第四版)》(高职版)
评论
0/150
提交评论