VC422 局域网抓包软件的设计与实现VC+ACCDSS
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
随着网络技术的不断发展,社会进入了一个信息爆炸的时代,世界也由于网络而变小,人们通过各种技术和工具使交流突破了空间的限制。在网络技术发展与普及的同时,网络安全问题引起了人们的广泛关注。因此,研究并开发出一种能够有效地实时捕获网络信息的系统具有极其重要的意义。基于这一情况,本论文针对网络数据的捕获与数据包信息分析等问题进行了深入的探讨和研究。本论文逐一介绍了信息捕获中的相关技术及需求分析,在系统设计中对数据包捕获模块、解码数据包模块和数据库信息模块的实现进行了详细讲述。通过运用WinPcap开发包实现网络数据包的捕获,利用TCP/IP 协议的封装理论和自下而上的分析实现了数据包信息的分析,并且将分析出来的信息存入数据库。另外,还能实现一些功能,如对指定的IP地址进行数据包的捕获,对捕获结果进行显示等。 内容来自think58
随着信息化程度的提高,使我们从一个封闭的环境进入到一个开放的世界,但我们所担心和关心的问题便是网络安全问题,也就是内部网络安全和外部网络安全的问题。本课题正是针对这种情况和需求,对实时数据捕获与网络信息监控提出系统设计方案,并对信息过滤和跟踪的方法和技术进行研究,这便是我的论文研究的意义与目的。
1.2 本课题研究的相关〖本文来自:计算机毕业网 〗 技术及方法
网络数据捕获技术是获取信息的关键技术,它通过监听技术,过滤技术获取原始数据,根据TCP/IP分层理论进行层层拆解,提取相关协议中的信息。本毕业设计主要通过使用Winpcap开发包,在VC++环境下编写出了一款简单的软件对数据包信息按TCP协议类型、UDP协议类型和特定IP地址进行分类捕获,捕获出所需要的敏感信息,并且将捕获出来的信息写入数据库。
1.3 Visual C++ 6.0
Visual C++6.0是微软公司推出的开发Win32应用程序(Windows 95/98/2000/XP/NT)的、面向对象的可视化集成工具。它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构,其中封装了大量的类 copyright think58
[来源:http://think58.com]
IP各域的含义如下:
版本:当前IP协议的版本号,本论文采用的版本号为4;
首部长度:以32bit为单位的包头长度;
服务类型:规定对本数据报的处理方式,比如优先权等;
总长:以Byte为单位的整个IP数据报长度;
标识:信源主机赋予每个IP数据报的唯一标识符号,用于控制分片及其重组;
标志和片偏移:同样用于控制分片及其重组;
生存时间:设置本数据报的最大生存时间,以秒为单位;
协议:表示创建本IP数据报数据区数据的高层协议的类型,如TCP,UDP等;
头标校验和:用于保证头标数据的完整性;
源IP地址和目的IP地址:分别指发送本数据报的主机IP地址和接受本数据报的主机的IP地址;
选项:用于控制和测试,是IP数据报中可选的部分,包含“源路径”、“路径记录”、“时间戳”等几种类型。
TCP协议是网络中应用最为广泛的协议,许多的应用层协议都是在建立在TCP协议之上的。TCP首部的各字段如图8所示:
数据分析模块实现时,本系统提取的数据包中主要的一些信息,如IP数据包中的IP地址,端口信息等。具体代码下:
//数据包分析和保存
ipheader * ih;
tcp* tcph;
udp* udph;
CString temp;
int chang;
//时间
struct tm *ltime;
ltime=localtime(&header->ts.tv_sec);
strftime(timestr,sizeof(timestr),"%H:%M:%S",ltime);
//IP
ih=(ipheader*)(pkt_data+14);//ip头
int iplen=(ih->ver_ihl & 0xf)*4;
itoa(iplen,IPLength,10);
sprintf(IPDateLength,"%d",header->len);//IP数据包长度
sprintf(TTL,"%d",ih->ttl);//生存时间
sprintf(SIP,"%d.%d.%d.%d",ih->saddr.byte1,ih->saddr.byte2,ih->saddr.byte3,ih->saddr.byte4);
sprintf(DIP,"%d.%d.%d.%d",ih->daddr.byte1,ih->daddr.byte2,ih->daddr.byte3,ih->daddr.byte4);
u_short u_sport,u_dport;
if(ih->proto == 6 ) //这里是TCP数据包
{
strcpy(proto,"TCP"); //协议类型
tcph=(tcp*)((u_char*)ih + iplen);
copyright think58 [资料来源:http://THINK58.com]
u_sport = ntohs(tcph->sport); //源端口
u_dport = ntohs(tcph->dport); //目的端口
// sprintf(Sport,"%d",tcph->sport); //源端口
// sprintf(Dport,"%d",tcph->dport); //目的端口
chang = (tcph->other ^ 0x0fff) / 1024;
sprintf(tcp_hLength,"%d",chang); //TCP首部长度
sprintf(date,"%X",tcph->content); //TCP数据
}
else if(ih->proto == 17) //这里是UDP数据包
{
strcpy(proto,"UDP");
udph=(udp*)((u_char*)ih + iplen);
u_sport = ntohs(udph->sport); //源端口
u_dport = ntohs(udph->dport); //目的端口
// sprintf(Sport,"%d",udph->sport); //源端口
// sprintf(Dport,"%d",udph->dport); //目的端口
sprintf(udplength,"%d",udph->len); //TCP首部长度
sprint〖本文来自:计算机毕业网 〗 f(date,"%X",udph->content); //TCP数据
}
sprintf(Sport,"%d",u_sport); //源端口 think58
sprintf(Dport,"%d",u_dport); //目的端口
AccessWrite(ih->proto);
参考文献
[1]Andrew S.Tanenbaum[美国].计算机网络[M].北京:清华大学出版社,1998。
[2]W.Richard Stevens[美国].TCP/IP详解 卷1:协议[M].北京:机械工业出版社,2000。
[3]Douglas E.Comer[美国].TCP/IP网络互连技术[M].北京:清华大学出版社,1998。
[4]陈坚,陈伟.Visual c++ 网络高级编程[M].北京:人民邮电出版社,2001。
[5]李光明.Visual c++6.0经典实例大制作[M].北京:中国人事出版社,2000。
[6]郑莉,董渊.C++语言程序设计(第二版)[M].北京:清华大学出版社,2001。
[7]张仕斌. 网络安全技术[M]. 北京:清华大学出版社,2004年。
think58.com [资料来源:THINK58.com]
[资料来源:www.THINK58.com]