基于局域网的数据包的截获与分析30Word文档格式.docx
《基于局域网的数据包的截获与分析30Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于局域网的数据包的截获与分析30Word文档格式.docx(61页珍藏版)》请在冰豆网上搜索。
1.1选题背景1
1.2研究的目的和意义1
1.3系统开发的目标1
1.4系统的开发方法2
1.5发展现状2
2关键技术3
2.1网络通信原理及协议3
2.2WINSOCK2原始套接字技术4
2.3数据库技术5
2.4系统的运行环境6
3系统分析7
3.1可行性分析7
3.2系统操作流程图7
3.3需求分析8
3.4局域网监控系统E-R图9
4总体设计10
4.1总体功能图10
4.2系统流程图11
5详细设计12
5.1数据库的物理结构12
5.2系统界面设计12
5.3数据包截获的设计13
5.4数据分析功能设计13
5.5主机查询功能设计14
6编码与实现15
6.1数据库连接的实现15
6.2系统功能的实现16
6.2.1登陆界面实现16
6.2.2主界面实现19
6.2.3根据截获规则数据包的截获20
6.2.4数据包的分析24
6.2.5数据分析记录和删除33
6.2.6主机查询41
6.2.7清除记录45
结论46
致谢48
附录A英文原文50
附录B中文翻译56
1绪论
1.1选题背景
1.2研究的目的和意义
通过对数据包的分析,我们可以判断通信双方的操作系统、网络信息流量、经过的路由、数据包的大小,以及数据包的内容等等。
多数信息被盗一般都是通过分析数据包被盗的,通过掌握分析数据包的技术我们可以了解数据被盗的原理与技术,以及时的防盗。
通过监听与分析数据包,获得的信息帮助客户设置访问设置,防止中毒,信息被盗等安全性问题。
数据包的监听与分析技术是防火墙与杀毒软件的基本技术,可以有效的解决信息的安全问题,并且对拦截下来的数据包进行分析,所得到的分析结果作为入侵检测系统的源数据,是入侵检测的重要组成部分。
它将成为以后信息安全领域的一项新的技术,有待与发展。
1.3系统开发的目标
数据包的监听与分析的开发的最终目标应体现在以下几个方面:
1、科学的设计理念与设计方法。
2、有效的数据包截获机制。
3、有效的数据包分析机制。
4、有效的数据存储与查询机制。
5、除此之外,人性化的用户界面,通过分析数据包获得的信息也可以用为网络管理,监视局域网内主机。
1.4系统的开发方法
在WINDOWS下有俩种技术用于数据包的截获与分析:
Winsock原始套接字技术和WinPcap技术。
本程序采用Winsock原始套接字技术进行数据包的截获与分析。
网卡有俩种模式:
混乱模式和非混乱模式,非混乱模式下网卡只能接受发送到本机的数据包,在混乱模式下可以接受发往本局域网的任何数据包。
因为本系统是基于局域网的,因此网卡模式为设置为混乱模式。
通过设置监听规则,用户可以方面的对任何端口,IP地址,通信协议进行监听。
采用多线程的方法监听与分析数据包,这样用户可以方便操作系统而且数据包的截获与分析的效率高。
分析获得的数据被存储起来并可以及时的显示在系统界面上,用户可以查询数据以得到相应的信息。
对主机的查询采用枚举技术,但是只能查询和本机在同一网段的主机是否在线,也可以对某一主机根据其IP地址进行查询。
1.5发展现状
国内的这种技术还不太成熟,本技术与系统入侵检测技术有很大联系。
虽然有很多应用这种技术的软件,但是并未把它发挥到极至。
具体表现为数据截获的效率不高,数据分析的效率不高。
特别是对包含汉字数据的分析难度大,不够准确。
也有很多软件只是把这种技术做为一种摆设,虽然对数据包进行分析,但是并未很多的用到实际的生活中。
在国外也是一样的,不然的话病毒的入侵等问题也就不这么的明显了。
但是它的应用潜力大,相信在不久的将来它能够完全应用于实际生活中。
2关键技术
2.1网络通信原理及协议
计算机网络是现代通信技术与计算机技术相结合的产物。
所谓计算机网络,是指把分布在不同地理区域的计算机用通信线路相互连接起来的一个具有强大功能的网络系统。
在计算机网络上众多计算机可以方便的相互通信,共享多种质源。
通俗的说,计算机网络就是通过电缆、电话线或无线通讯设备等互连的计算机的集合。
网络中的每个主机都有地址,它是用于标志主机的一个字节序列。
字节序列越长,可以表示的地址数目就越多,也就是说可以有更多的设备连入网络。
按照计算机连网区域的大小,可以把网络分为局域网(lan)和广域网(wan)。
局域网是指在一个较小地理范围内的各种计算机互联在一起的通信网络,可以包含一个或多个子网,通常局限在几千米的范围内。
广域网连接地理范围较大,常常是一个国家或是一个洲,其目的是为了让分布较远的各局域网互联。
TCP/IP参考模型主要用于广域网,在一些局域网中也有应用。
它分为4个层次:
应用层、传输层、网络互联层和主机-网络层。
在每一层都有相应的协议。
确切的说,TCP/IP协议应该称为TCP/IP协议集,它是TCP/IP参考模型的除了主机-网络层以外的其他3层的协议的集合,而TCP协议和IP协议是协议集中的最核心的俩个协议。
TCP/IP模型各层的主要功能如下:
(1)主机-网络层只是要求第三方实现的主机-网络层能够为上层(网络互联层)提供一个访问接口。
(2)网络互联层是整个模型的核心。
其功能是把IP数据包发送到目标主机。
IP协议一般把原始数据分为多个数据包,然后沿不同的路径同时传递数据包。
(3)传输层的功能是使源主机和目标主机上的进程可以进行会话。
在传输层定义了俩种服务质量不同的协议,即TCP和UDP。
TCP协议是一种面向连接的、可靠的协议,HTTP、FTP和TELNET协议等一般都建立在该协议的基础上。
UDP协议是一个不可靠、无连接协议,主要用于不需要对报文进行排序和流量控制的场合。
(4)应用层针对不同的网络应用,引入了许多协议。
其中基于UDP的主要有:
SNMP、DNS。
IP网络中每个主机都有唯一的IP地址用于标志主机。
IP地址是一个32位的二进制数序列。
为了方便应用,一般把其分为4个单元,每个单元占8位,然后十进制数来表示每个单元。
IP地址由IP网址和IP主机地址组成。
IP网址表示网络的地址,IP主机地址表示网络中主机的主机地址。
网络掩码用来确定IP地址中哪部分是网址,哪部分是主机地址。
TCP协议保证数据包的安全传输,它通过端口来区分进程。
UDP也是通过端口来标志进程,在同一主机中,UDP端口和TCP端口的取值范围是相互独立的,允许存在取值相同的TCP端口和UDP端口。
2.2WINSOCK2原始套接字技术
针对Winsock1.1存在的局限性,Winsock2提供了许多方面的扩展特性以支持功能更大的应用。
WindowsSocket2与WindowsSocket1.1在俩个基础上向后兼容:
源码和二进制代码。
实现了WindowsSocket应用程序和任何版本的WindowsSocket之间的最大互操作性。
与Winsock1.1仅支持TCP/IP协议栈不同,Winsock2通过声明了一个WinsockDLL和底层协议栈间的标准服务提供接口(SPI),使一个WinsockDLL能够同时访问不同软件开发商的多个底层协议站,从而使用户能够同时使用多种传输协议。
加入了许多唯一的地址簇、套接字类型、协议标志符。
Winsock2通过原始套接字来支持多种协议。
通过原始套接字,程序员可以对网络底层的传输机制进行控制。
创建原始套接字时必须自行设定SOCK_RAW标志,这与创建流套接字和数据报套接字是不同的。
混乱模式和非混乱模式。
在非混乱模式下网卡只接受发送到本机的数据包,而的混乱模式下并不对MAC地址进行辨认可以接受本局域网内的任何数据包。
本系统把网卡设置在混乱模式下,以便截获本局域网内的所有数据包。
在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。
为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。
至此,实际就可以开始对网络数据包进行截获了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。
但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有IP头、TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。
通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。
由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。
2.3数据库技术
(1)数据库的选用
目前应用系统开发常用的后台数据库有SQLServer2000、Oracle、Access等。
其中SQLServer2000和Oracle、Access等数据库相比具有以下优点:
①可伸缩性和可用性
同一个数据库引擎可以在不同的平台上使用,从运行MicrosoftWindows®
98的便携式电脑,到运行MicrosoftWindows2000数据中心版的大型多处理器服务器。
②易于安装、部署和使用
SQLServer2000中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用SQLServer的过程。
SQLServer2000还支持基于标准的、与WindowsDNA集成的程序设计模型,使SQLServer数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。
这些功能使您得以快速交付SQLServer应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。
③企业级数据库功能
SQLServer2000关系数据库引擎支持当今苛刻的数据处理环境所需的功能。
数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。
基于以上的分析,我选用VC++6.0作为该系统的开发工具,选用SQLServer2000作为后台数据库。
(2)数据访问接口
系统采用ODBC连接SQLServer。
(3)加载ADO驱动程序
要通过ADO来连接数据库,应用程序必须导入ADO驱动程序,这样才可以建立与数据库的连接。
在stdafx.h文件里加入如下代码:
#import"
C:
\ProgramFiles\CommonFiles\System\ado\msado15.dll"
\
no_namespace\
rename("
EOF"
"
ADOEOF"
)\
BOF"
ADOBOF"
)
(4)建立一个_ConnectionPtr对象
导入ADO后,就可以创建_ConnectionPtr对象,其对象的作用是连接数据库。
如:
_ConnectionPtrm_pConnection;
(5)建立一个_RecordsetPtr对象。
_RecordsetPtr是执行Sql查询语句返回结果保存的对象,含有sq1语句执行后产生的表。
在_RecordsetPtr对象中都含有一个游标,可以用来指向记录集中的任何一个具体的行。
Sql执行完成后,游标指向第一行的前面的一个位置,调用_RecordsetPtr的movenext()方法就可以游标到下一行记录。
当然,_RecordsetPtr对象的游标的移动方式和execsql()方法执行的参数有关。
(6)关闭_RecordsetPtr和_ConnectionPtr对象。
这三类对象都有close()方法,使用完对象后进行关闭是一种好的代码编写习惯,这样对象所占有的资源将立即得到清理和释放。
(7)异常处理
数据库出现错误可能涉及到脏数据的问题,使得数据的正确性不能得到保证。
一般的异常处理。
2.4系统的运行环境
系统对运行的环境的要求:
硬件平台:
CPU:
赛扬2.4GRAM:
512MB,HD:
80GB
软件平台:
操作系统:
WindowsXPProfessional
数据库:
SQLserver2000(个人版)
开发工具:
MICROSOFTVISUALSTUDIOC++6.0
3系统分析
3.1可行性分析
可行性分析(FeasibilityAnalysis)也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
该系统的可行性分析包括以下几个方面的内容。
(1)经济可行性:
主要是对项目的经济效益进行评价,由于系统所使用的服务器是免费的,可以从网上免费下载,本系统开发经费对于作者在经济上是可以接受的,并且有很高的可重用率。
所以本系统在经济上是可行的。
(2)技术上的可行性:
技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。
该系统采用了Winsock2原始套接字进行开发。
Winsock2加入了许多唯一的地址簇、套接字类型、协议标志符等。
数据库服务器选用Microsoft的SQLServer2000(Personal)数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。
它的灵活性、安全性和易用性为数据库编程提供了良好的条件。
因此,系统的软件开发平台已成熟可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
综上所述,此系统开发目标已明确,在技术和经济等方面都可行,并且投入少、见效快。
因此系统的开发是完全可行的。
3.2系统操作流程图
图3.1为系统的操作流图包括登陆系统、数据包截获、数据分析、主机查询、查询数据、删除数据等:
图3.1系统操作流图
3.3需求分析
基于局域网的数据包的截获与分析系统要实现的功能:
系统在功能上强调使用,设计上重在人性化。
(1)系统采用基本对话框,方便用户操作。
(2)设置截获的规则,包括设置端口(指定端口、所有端口)、IP地址(指定IP地址、所有IP地址)和协议类型(TCP、UDP、ICMP)。
(3)网卡设置在混乱模式下无限截获本局域网内的所有数据包
(4)分析所截获的数据包得到源IP地址、目的IP地址、源端口、目的端口、协议类型等,并取出数据保存在数据库中。
(5)查询分析得到的数据,根据查询规则(IP地址、端口)得到相应的数据并显示在对话框中。
(6)查询和本机IP地址在同一网段的所有在线的主机,也可指定IP地址查询相应的主机。
3.4局域网监控系统E-R图
用户
按钮
数据包
图3.2系统E-R图
4总体设计
4.1总体功能图
根据需求分析和E-R图,我们可以得出系统的总体功能图,如图4.1所示。
图4.1系统总体功能图
4.2系统流程图
根据以上分析,可以得到信息在系统中流动情况,从而达到描述系统概貌的目的。
本系统的流程图如图4.2所示。
图4.2系统流程图
5详细设计
5.1数据库的物理结构
在SQLSERVER上创建一个名为ydwdatabase的数据库。
包括以下表:
用户表(Userinfo),数据表(IPData)。
下面将具体介绍数据库中表的结构。
表5.1用户表(Userinfo)
字段名称
大小(精度)
类型
非空
Username
10
char
TRUE
Password
表5.1用户表主要用来存储用户的信息。
数据表主要用来存分析得到的相关信息和数据。
表5.2数据表(IPData)
Ip_data
300
Ip_saddress
16
Ip_daddress
Ip_sport
Ip_dport
Proto
表5.2数据表主要用来存储所截获的数据包分析后的数据等信息。
5.2系统界面设计
系统界面是基于对框模式的。
主界面包括若干个控件,主要的就是按钮控件、Edit控件、ListControl控件、RadioButton控件等。
(1)Button控件主要被主界面用来调用其他子界面和执行相关代码。
子界面的显
示采用非模态,这样可以同时操作主界面和子界面。
(2)Edit控件用来获得用户的输入,提供参数给相应的应用程序。
(3)ListControl控件主要用来显示经分析后数据包的相关信息。
(4)RadioButton控件用来获得用户的输入。
特殊的用法在于用户的选择性输入,并分组,组成一个综合性的选择性输入,提供给相关程序代码。
5.3数据包截获的设计
(1)设置网卡模式:
混乱模式下网卡可以截获本局域网内的所有数据包,非混乱模式下只能截获发送到本机的数据包。
本系统采用混乱模式,以便截获本局域网内的所有数据包,利用多线程技术来实现。
(2)设置截获规则:
截获的规则有三个分组:
端口、IP地址和协议类型。
端口组有俩个选项:
指定和全部;
IP地址组有俩个选项:
协议类型组有四个选项:
全部、TCP、UDP和ICMP。
每组只能并且只有一个选项是有效,他们共同组成了截获的规则,利用MFC的消息机制技术获得规则。
(3)数据包的截获:
创建一个工作者线程,根据截获规则无限循环截获数据包。
5.4数据分析功能设计
(1)初步分析:
对所截获的数