个人入侵检测系统的实现(有源程序代码)(6)

2020-04-14 01:03

在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。UDP数据报各域的意义与TCP段中相应的域相同。只有校验和有些不同,除UDP数据报本身外,它还覆盖一个附加的“伪头标”。这个伪头标来自于IP报头,包括:源IP地址、信宿IP地址、协议类型、UDP长度及填充域。

数据分析模块

本系统采用异常检测量化分析方法,把检测规则和属性以数值形式表示。在检测中,采用计数方法来描述用户和系统行为某种属性,这些计数值只能在一定范围内变化。例如:系统允许有限的不成功注册次数、一种特定类型的网络连接数、企图访问文件的次数、访问文件或目录次数和访问网络系统次数。这个数值检测以一个相对固定的时间间隔例如1小时来度量用户的行为。在本系统中,分析器对解析的数据包计算每一个包的异常值,一旦发现异常值越限,则认为发生了异常攻击,就将该包信息存入数据库中。异常值由用户的行为的历史情况来决定。基本思想是,一般情况下,同一个用户在一定时间内连接本机的端口数较少,如果这个连接数突然增大,这个地址的异常值就增高。应当说,这并不是网络人侵的严格定义,它只是反映出被检测的数据包的“异常”程度。例如因网络问题而使来自同一个IP地址的数据突然增多时,这种检测方法可能会认为对方有异常行为。

分析结果记录

用数据库记录异常数据包信息,用于以后的分析与检查。 报警处理模块

将数据库中的信息及时响应,确定入侵的类型并进行报警。 个人入侵检测系统的实现 系统的总体结构 PIDS总体设计如图5:

图5 PIDS总体设计

系统捕获网络中的数据包,解码IP、TCP、UDP的头部各字段的信息,然后对解码后的数据进行分析统计,并对其做出判断。

系统将入侵信息记录入数据库,并通过告警窗口显示。 数据包捕获模块实现

PIDS的数据包捕获是通过调用Winpcap中的动态库函数实现的。使用pcap_findalldevs函数获取网络设备链表。获取失败终止程序并打印出错误报告,成功就打印出所有网络设备信息以供选择。在选择好进入的网络设备后,对该网络设备进行相应的配置,然后使用pcap_loop函数捕获数据包。

首先获得网卡信息:

/* 返回网络设备的链表,以供选择 */ ifpcap_findalldevs&alldevs, errbuf -1

fprintfstderr,\ exit1;

/* 选择列表 */

fordalldevs; d; dd-next

printf\ if d-description

printf\

else

printf\ ifi0

printf\interfaces found! Make sure WinPcap is installed.\\n\ return -1;

printf\

scanf\

接下来根据所选择的数据进入该网卡:

fordalldevs, i0; i inum-1 ;dd-next, i++;

对选择的网卡进行属性定义:

adhandle pcap_open_lived-name, // 网卡名字

65536,

// 65536表示对所有数据捕获

0, //网卡为混杂模式 1, // 抓包时间间隔 errbuf

// error buffer

设置过滤规则 packet_filter[] \连接并设置过滤器: pcap_compileadhandle, &fcode, packet_filter, 1, netmask; pcap_setfilteradhandle, &fcode; 最后使用回调函数捕获并解析数据包:

pcap_loopadhandle, 0, packet_handler, NULL;

解码数据包模块实现

Winpcap捕获到数据包后,根据对packet_handler函数的操作可以对IP、TCP、UDP协议各字段的信息进行分析。数据结构如下:

/* IPv4 头 */

typedef struct ip_header

u_char ver_ihl;// 版本 4 bits + 首部长度 4 bits u_char tos;

// 服务类型

u_short tlen; // 16位数据报的长度 (字节) u_short identification; // 16位标识

u_short flags_fo;// 标志 3 bits + 片偏移 13 bits u_char ttl;

// 8位生存时间

u_char proto; // 协议

u_short crc; // 16位首部检验和 ip_address saddr;// 32位源IP地址 ip_address daddr;// 32位目的IP地址 u_int op_pad;// 可选择使用

ip_header; /* UDP 头*/

typedef struct udp_header

u_short sport; u_short dport;

// 16位源端口号 // 16位目的端口号


个人入侵检测系统的实现(有源程序代码)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年《马克思主义基本原理概论》章节练习题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: