信息安全课程设计论文网络嗅探器的设计与实现.doc

上传人:sccc 文档编号:4847457 上传时间:2023-05-19 格式:DOC 页数:26 大小:755.29KB
返回 下载 相关 举报
信息安全课程设计论文网络嗅探器的设计与实现.doc_第1页
第1页 / 共26页
信息安全课程设计论文网络嗅探器的设计与实现.doc_第2页
第2页 / 共26页
信息安全课程设计论文网络嗅探器的设计与实现.doc_第3页
第3页 / 共26页
信息安全课程设计论文网络嗅探器的设计与实现.doc_第4页
第4页 / 共26页
信息安全课程设计论文网络嗅探器的设计与实现.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《信息安全课程设计论文网络嗅探器的设计与实现.doc》由会员分享,可在线阅读,更多相关《信息安全课程设计论文网络嗅探器的设计与实现.doc(26页珍藏版)》请在三一办公上搜索。

1、桂林电子科技大学综合设计说明书用纸 信息安全课程设计(论文)说明书题 目: 网络嗅探器的设计与实现 学 院: 专 业: 姓 名: 学 号: 指导教师: 2011年 月 日摘 要随着网络技术的飞速发展,以及越来越多的信息资源放在了网上,网络安全问题越来越被人们所重视,其安全性和可靠性也越发重要。嗅探技术作为网络安全攻防中最基础的技术,它既可以用于获取网络中传输的大量的敏感信息,又可以用来进行网络管理。但同时它又有另一方面的影响,即攻击者可以利用它来监听网络中的数据,达到非法获得信息的目的。因此对网络嗅探器的研究具有重要意义,分析其通过获取网络包得流向和内容等信息,从而进行网络安全分析和网络威胁应

2、对。本课程设计是关于网络嗅探器的简单设计与实现,同时对网络嗅探技术进行了简要分析,研究了网络数据包的捕获机制,以VS2010为开发平台,使用Windows环境下的网络数据包捕获开发库WinPcap认真学习和掌握网络嗅探器工作原理,设计出一个嗅探器程序,使其实现网络层抓包,并对获得包的源和目的地址、端口、协议等进行分析及显示,实现简单的包嗅探器功能。 关键字:网络嗅探 数据包捕获 数据包分析 网络协议 WinPcap VS2010目 录1、引言.11.1 开发背景11.2 开发意义11.3 正文安排12、系统分析.22.1 需求分析2 2.1.1 功能需求.2 2.1.2 适用范围.2 2.1.

3、3 基本思路.2 2.1.4 使用环境.2 2.1.5 可行性分析.22.2 技术分析2 2.2.1 嗅探原理.2 2.2.2 捕获机制.3 2.2.3 WinPcap 技术.33、程序设计与实现.43.1 主要流程43.2 总体规划43.3 函数说明43.4 分块设计6 3.4.1 获得网卡列表信息.6 3.4.2 数据包捕获.7 3.4.2 数据包过滤.7 3.4.2 数据包分析.84、问题分析及测试.94.1 问题分析94.2 测试105、结论.115.1 设计心得115.1 谢辞11参考文献.12附录(源程序).131、引 言1.1 开发背景随着网络技术的迅速发展,加速了全球信息化进程

4、,各种重要数据在网上的传播日益普遍,使得网络安全问题越来越为人们所关注。网络嗅探器作为一种网络数据监听程序,在网络安全攻防方面扮演了很重要的角色,多数黑客入侵成功并植入后门后的第一件事就是选择一个合适当前网络的嗅探器,以获得更多的受侵者的信息。嗅探器是一种常用的收集有用数据的方法,可以作为网络数据包的设备,如果把网络嗅探器放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。1.2 开发意义

5、本次课程设计是基于VS的网络嗅探器的设计与实现,由于本人编程能力有限,只是对抓取到的本机在网络中的通信数据,比如说协议类型,源、目的地址和端口、数据包的大小等加以分析,而无法做到像Sniffer那种成熟的嗅探器所拥有的强大功能。作为网络技术人员来说,要想有效地利用它、防范它,就得深入地学习、分析网络嗅探技术。最为重要的是,对于网络嗅探器的设计与实现,使我对网络通信,数据传输和网络信息安全等有了切身的体会与融入,同时也是对大学三年来内容的学以致用,不断提高自我的一种有效途径。1.3 正文安排 作为论文的主要部分,本文正文的安排如下: 第一部分是系统分析,包括程序需求分析和技术分析。讨论用户需求,

6、功能需求,性能需求,运行环境等因素,对嗅探工具开发的思想和过程作初步的分析和论证。并介绍出现网络嗅探器工具的原理和方法,以及本次设计中用到的Winpcap技术; 第二部分是功能设计,包括系统的设计与实现。详细介绍使用Winpcap开发程序的一般流程及相关功能函数,以及数据包捕获,分析,过滤等各个模块的具体实现。 第三部分是问题分析及解决,同时介绍测试环境及过程,作为课程设计的最后一部分,将严格地对网络嗅探器进行测试。第四部分总结这次课程设计的心得、谢辞以及列出参考文献。2、 系统分析2.1 需求分析l 2.1.1 功能需求本程序主要实现了对流经网络的数据包进行捕获及分析,通过对网卡的选择,设置

7、过滤规则,来制定对特定的协议进行解析,主要运用到套接字编程,WinPcap编程等技术,在程序上每一步都有详细的解释,很容易了解本嗅探程序的功能。 l 2.1.2 适用范围这个程序是面向用户的,简单易行,是对网络协议进行分析,只要电脑上有流经网络的数据包,通过本程序的执行,均可捕获该数据报,并对其内容进行分析,操作步骤简单,每一过程均有明显的提示信息。l 2.1.3基本思路该嗅探程序的总体架构划分为5部分,分别是监听网络适配器,选择网卡设备,设置过滤规则,捕获数据包,数据的分析及显示。良好的实现了嗅探器的一般功能。l 2.1.4使用环境 (1)、一台主机 (2)、操作系统(Windows XP)

8、(3)、开发工具(VS2010,WinPcap)l 2.1.5可行性分析在日异月新的网络时代中,网络信息与安全一是其中重要的一环,网络嗅探更是网络攻防重基础的技术,用来监听网络数据,保障信息安全,这项技术有着广大的发展空间,其类的嗅探工具更是层出不穷,有着良好的发展前景及经济利益,而且操作运行时所需人员不是很多,这种工具的开发节省了大量的人力及物力,在广大市场中是被需求的,并且无论是生活中还是企业里都得到了广泛的应用,它所带来的经济效益是无可厚非的。2.2 技术分析l 2.2.1嗅探原理 嗅探器是一种常用的收集有用数据的方法,嗅探器是利用计算机的网络接口截获目的地为其它计算机的数据报文的一种工

9、具。由于组网方式不同,嗅探器的工作原理也有所不同,总共可以分为三类:(1) 基于网卡混杂模式的嗅探原理;(2) 基于ARP欺骗的网络嗅探原理;(3) 基于中间人攻击的嗅探原理。本次课程设计就是利用第一种方式来实现嗅探器的功能,从网卡原理上来说,在一个实际的系统中,网卡的主要功能就是接收和发送网络数据包,它根据网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。而本次设计嗅探工具正是利用了这个特点,把网卡设置为“混杂模式”。网卡的混

10、杂模式可以接受所有的网络数据包,无论其目的地址是否等于自己的地址,都一并接受。l 2.2.2捕获机制很多网络安全系统最首要的任务就是捕获网络上的数据信息,而网络数据包捕获技术就解决了这个问题。不同的网络有不同的捕获技术,不同的操作系统其捕获机理也有所不同。以太网采用了CSMA/CD技术,它使用了广播机制,所有与网络连接的机器都可以看到网络上传播的数据,操作系统提供的捕获机制主要有以下三种:(1) SOCK_PACKET类型套接口;(2) 数据链路提供者接口(Data Link Provider Interface,DLPI);(3) 伯克利数据包过滤器(Berkeley Packet Filt

11、er,BPF)。BPF主要由两部分组成:网络转发部分和数据包过滤部分。网络转发部分是从链路层中捕获数据包并把它们转发给数据包过滤部分,数据包过滤部分是从接收到的数据包中接受过滤规则决定的网络数据包,其他数据包就抛弃。捕获数据包和过滤数据包都是在操作系统内核中完成的,而且使用了数据缓存机制。从效率上来讲,BPF在三种机制中是性能最高的,而SOCK_PACKET是最弱的。在实际应用中,实现网络数据包捕获技术的代表是Libpcap。它是一个专业的跨平台的网络数据包捕获开发包。使用Libpcap可以很轻松地实现网络数据包的捕获功能,它的捕获机制就是BPF捕获机制。在Windows平台下有与Libpca

12、p兼容的WinPcap开发包,它是专门针对Windows平台而开发的,本次程序的开发就是利用WinPcap库函数实现的。l 2.2.3 WinPcap 技术WinPcap(Windows Packet Capture)是Windows平台下的一个免费、公平的专业网络数据包捕获开发包。WinPcap的功能为:捕获数据包(主要功能)、流量统计功能、数据包发送功能。它包括三部分,即数据包捕获和过滤块NPF、较低层的网络编程接口packer.dll、较高层的编程接口wpcap.dll。使用该开发包可以提高应用效率,WinPcap充分考虑了各种性能和效率的优化,在内核层实现了数据包的捕获和过滤,这是由N

13、PF来实现的,NPF是WinPcap的核心部分,它实现了内核的统计功能,对于设计网络流量的程序很有好处。体系结构调用如下:Applicationwpcap.dllPacket.dll NPF 图2.2.3:体系结构调用3、 程序设计与实现本次课设的主要研究内容是利用套接字开发网络嗅探器的程序设计,设计要求完成对流经本地网卡的所有数据包的捕获,分析协议类型,并根据不同的协议类型对数据包进行了进一步的分析,包括分析数据包的IP,端口,协议类型等。3.1 主要流程 3.2 总体规划首先要选择监听的网络适配器,再设置网络适配器为混杂模式,然后再设置过滤器,从而可以过滤使用特殊协议的数据包。当完成这些准

14、备工作后,就可以对流经网络适配器的数据进行循环捕获了。捕获的同时,可以分析和显示数据,这可以通过调用相关函数实现。程序主要分为五个模块:获得网卡信息、数据包过滤、数据包捕获、数据包分析、数据显示。3.3 函数说明 (1)、pcap_findalldevs()是用来获得主机的网络设备列表,获取的网络设备就存储在参数alldevs中函数体:int pcap_findalldevs(pcap_if_t * alldevs,char * error_content)说明:指向pcap_if_t*类型的列表的指针的指针,char型指针,当打开列表错误时 返回错误信息。当不再需要网卡列表时,用pcap_f

15、reealldevs(pcap_if_t *) 释放空间。 (2)、pcap_open_live() 是用来打开网络设备列表,得到一个包抓取的描述符。函数体:pcap_t *pcap_open_live(const char * device, int snaplen, int promise, int to_ms, char ebuf *)说明:device表示要捕获数据包的网络设备的名称,由函数pcap_findalldevs()得 到的; Snaplen表示要捕获的数据包的最大可抓取的最大字节; Promise表示捕获数据包是否设为混杂模式,若值为1 则表明设为混杂模式; to_ms表示

16、捕获的时间间隔。(3) 、pcap_lookupnet() 用来监测网卡所在网络的网络地址和子网掩码。函数体:int pcap_lookupnet(char *device,bpf_u_int32 *netp,bpf_u_int32 *maskp,char *errbuf)说明:bpf_u_int32 *netp 存放网络地址 bpf_u_int32 *maskp 存放子网掩码(4) 、pcap_compile()如果要获得特定的网络数据包,就需要使用过滤规则,过滤规则其实就是一个字符串,在Winpcap 中使用此函数用来编译表达式。函数体:int pcap_compile(pcap_t *p

17、,struct bpf_program *fp,char *str,int optimize,bpf_u_int32 netmask)说明:pcap_t *p 打开的设备接口句柄 struct bpf_program *fp 存储被编译过的过滤器版本的地址 Char *str 表达式本身 int optimize 是否被优化的整形量(0-false,1-true)(5) 、pcap_setfilter()使用过滤器用于设定一个过滤程序。函数体:int pcap_setfilter(pcap_t *p,struct bpf_program *fp)(6) 、pcap_loop()设置获取到满足过

18、滤规则后,数据包处理的回调函数。函数体:int pcap_loop(pcap_t *p,int cnt,pcap_handler callback,u_char *user)说明:int cnt 捕获数据包的个数 pcap_handler callback 回调函数的名称 u_char *user 送往回调函数的参数(7) 、pcap_close()关闭pcap_open_live()获取的包捕捉句柄,释放相关的资源。关闭相关的文件并释放对应资源。函数体:void pcap_close(pcap_t *p()(8) 、void ethernet_protocol_packet_callback

19、()回调函数的原型。函数体:void ethernet_protocol_packet_callback(u_char *argument, const struct pcap_pkthdr *packet_header, const u_char *packet_content)说明:u_char *argument对应于pcap_loop()的最后一个参数 const struct pcap_pkthdr *packet_header参数类型在pcap.h中包含,该结 构体包含数据包被嗅探的时间、大小等信息。(9) 、struct protocol_header用于定义ETHERNET、I

20、P、TCP、UDP、ARP、ICMP等协议的头部信息。3.4 分块设计l 3.4.1获得网卡列表信息首先调用WinPcap 的pcap_findalledvs () 函数获取电脑中所有可用的网络适配器列表,并显示在控制台上,供操作人员选择不同的网络适配器进行测试。这个函数返回一个pcap_if 结构的连表,连表的每项内容都含有网卡信息,尤其是字段名字namea和含有名字的描述description 以及有关驱动器的易读信息。同样,WinPcap 也提供其他的高级信息,特别是pcap_findalldevs () 这个函数返回的每个pcap_if 结构体都包含一个pcap_addr 结构的列表,

21、 它包含:一个地址列表,一个掩码列表,一个广播地址列表和一个目的地址列表。实现代码:pcap_if_t *alldevs; pcap_if_t *d; pcap_t *pcap_handle;/* Winpcap句柄 */ char error_contentPCAP_ERRBUF_SIZE;/* error_content错误缓冲区,即effbuf,存储错误信息 */int i=0; /i指的是网卡的序列号/* 取得列表 */ /pcap_findalldevs()是用来获得主机的网络设备列表,获取的网络设备就存储在参数alldevs中if (pcap_findalldevs(&alldev

22、s, error_content) = -1) fprintf(stderr,pcap_findalldevs发生错误: %sn, error_content); exit(1); / 输出网卡信息for(d=alldevs; d; d=d-next) /next表示指向下一个网络设备printf(%d. 网卡名: %s n, +i, d-name); if (d-description) printf( 网卡描述: %s n, d-description); else printf( (No description available)n);if(i=0) printf(n没有找到任何网卡,

23、请确认Winpcap已经安装.n); return ;l 3.4.2数据包捕获当操作人员选择了可用的适配器后, 可调用WinPcap 的pcap_open_live()函数对所选网络适配器进行配置,把网络适配器配置成混杂模式,从而可以捕获到流过网络适配器的数据。此函数还配置了每次捕获数据的长度和读取时间及错误信息的缓存。在设置好过滤条件后就可对流经网络适配器的数据进行捕获。在此系统中WinPcap 利用pcap_loop()函数来实现循环捕获。捕获后,利用指针指向捕获到的数据,如果没有数据,则返回提示信息。并根据返回值判断是什么原因造成的。实现代码: int inum; /网卡的编号bpf_u

24、_int32 net_mask;/* 掩码 */bpf_u_int32 net_ip; /网络地址printf(nn请输入网卡编号 (1-%d):,i);scanf(%d, &inum);/ 检测用户是否指定了有效网卡if(inum i) printf(n网卡编号超出范围.n); pcap_freealldevs(alldevs); /* 释放列表 */ return ; for(d=alldevs, i=0; inext, i+);/* 跳转到选中的适配器 */pcap_lookupnet(d-name,&net_ip,&net_mask,error_content);/获得网络地址和掩码p

25、cap_handle = pcap_open_live(d-name, BUFSIZ, 1, 1, error_content);/打开网路接口 /*pcap_loop()表示捕获多个数据包,可以总是循环捕获数据包,ethernet_protocol_packet_callback回调函数*/* 注册回调函数,循环捕获网络数据包,利用回调函数来处理每个数据包 */pcap_loop(pcap_handle, - 1, ethernet_protocol_packet_callback, NULL);l 3.4.3数据包过滤 数据包的过滤,是通过设置过滤条件完成的。在WinPcap 中有pcap

26、_compile()和pcap_setfilter()两个函数,通过其参数的设置可以完成数据包的过滤。在过滤之前,要得到网络链路层的类型,是为了在分析数据时确定数据帧的类型。在过滤之前,要得到网络链路层的类型,是为了在分析数据时确定数据帧的类型, 以便于地位IP 首部开始的地方, 此功能是用pcap_datalink()实现的。实现代码:int protocol_type; / 0-ip 1-arp 2-tcp 3-udp 4-icmpstruct bpf_program bpf_filter;/* BPF过滤规则 */char packet_filter20;/* 过滤规则字符串 */ 选择

27、过滤包类型printf(n请选择监听的数据包协议类型(0-ip 1-arp 2-tcp 3-udp 4-icmp) : );scanf(%d,&protocol_type);switch(protocol_type)case 0:strcpy(packet_filter,ip);break;case 1:strcpy(packet_filter,arp);break;case 2:strcpy(packet_filter,ip and tcp);break;case 3:strcpy(packet_filter,ip and udp);break;case 4:strcpy(packet_fi

28、lter,ip and icmp);break;default:break; /* pcap_compile()编译BPF过滤规则 */ pcap_compile(pcap_handle, &bpf_filter,packet_filter, 0, net_ip); /* pcap_setfilter设置过滤规则 */ pcap_setfilter(pcap_handle, &bpf_filter);if (pcap_datalink(pcap_handle) != DLT_EN10MB) return ;l 3.4.4数据包分析 当捕获到数据时,对数据要进行分析显示。本程序中捕获到的数据是立

29、即进行分析显示。根据链路层帧的类型,可知道数据帧头部的结构。有网络构架可以知道,数据在发送或接收之前都要对数据进行处理, 即对数据进行封装,正中结构可以清晰地知道所封装的上层协议是哪种类型的。用户在程序中调用的pcap_loop()函数可以进行数据包的捕获,而每一个数据包到达时该函数会调用pcap_handler()函数进行数据包处理,返回一个指向捕获器头部和一个指向帧数据的指针(包含协议头)。图3.4.4:上层封装协议4、 问题分析及测试通过对整体程序的设计、程序代码的编写,最终会在调试的时候出现很多的问题,有的是细节问题,如引用错误、语法不明、丢失分号、声明错误,有的问题是程序设计思路本身

30、不够完善,或者代码出现了错误导致不能运行,需要通过不断的调试和改正,从而使程序能正确的按照 要求运行。在反复的调试中,可以使我们认识到作为一个程序员对程序编写的严谨性,养成严于律己的好习惯。4.1问题分析 在本程序的设计过程中,遇到较多的困难,主要是上网查看相关的协议,参详WinPcap的开发手册及其库函数,查找一些常见问题的解决方法,以下陈述几种常见的错误:(1) 、安装问题。调试前,必须在VS下的程序工程属性下的C+目录下的包含目录include和库目录lib下分别加入WinPcap的include和lib目录;在C+下的预编译头中加入WPCAP;HAVE_REMOTE;选项;在链接目录下

31、的命令行选项中添加wpcap.lib ws2_32.lib库文件。之后引入pcap.h头文件后即可调试。有时候程序调试后,仍显示不能找到pcap.h头文件,首先要先检查上述选项是否正确添加,若正确,仍有错误提示,则可能是其他的安装问题,上网搜查后,其解决方法是将WinPcap中的wpcap.lib和packet.lib添加到VS2010-VS-lib目录下,即可解决。对于不熟悉此软件的操作人员尤其要注意这种安装问题,有时候一个很小的错误就导致程序无法运行。(2) 、程序设计问题。在本设计这个程序之前,由于没有过多接触,所以到图书馆寻找资料,从上面的编程实例解析中,确定了本程序的设计思路,由于整

32、体框架不是很清晰,所以到网上查找了一些资料,从而使得自己在设计方面常见的错误时,能够得到很好地解决。在设计打开网络设备列表时,出现了错误,导致整个程序无法运行,对照WinPcap开发函数后,重新运用了pcap_findalldevs()此函数,对里面的参数重新设置,设置一个循环,使得能够从本地主机上发现并显示其网卡列表,给操作人员进行选择。同时,在设置过滤规则时,起初是很简单的捕获所有的数据包,并分析显示,但是这样给人的感觉很乱,所以就想分类显示,进行指定函数过滤,因为过滤规则是一个字符串,所以考虑到手动输入一个表达式,进行过滤,修改了一些语句,运行成功。后来,去查找参考资料时,发现有一个程序

33、中的选择方式比较好,不用自己输入表达式,在程序中就已经进行了设定,只要进行选择其标号就可以了,所以对程序又进行了改动,添加了switch语句进行选择,就这样吧过滤规则的表达式语句确定下来了。(3) 、回调函数的使用。处理此问题时,必须考虑到函数的调用问题,pcap_loop()函数使用时参照开发手册,要返回其原型函数void ethernet_protocol_packet_callback()进行调用。要注意在每一个函数调用时的参数设定一定要正确,否则会出现各种错误、。同时要根据单步调试,进行严格的设计,确定每一循环的正确性。(4) 、一些小错误。在程序的调试过程中,难免会有输入错误,这些根

34、据错误提示进行修改即可。4.2测试在程序运行成功后,进行测试,以下是在控制台上测试的结果。图4.1:网卡列表的显示图4.2:选择网卡 图4.3:捕获到的数据包5、 结论5.1设计心得历时将近两周的课程设计将告一段落,回想设计的过程,都有所收获,不仅仅是知识的运用与积累,同时也收获了经验,这是一笔宝贵的财富,同时也有一些关于嗅探工具的想法,这些想法包含了对嗅探工具的展望以及本嗅探工具设计中的一些不足。本次设计的程序是在WinPcap库的基础上对网络数据进行捕获,不需要编写复杂的设备驱动程序和代码就可以实现抓包,使得其编写过程比较简便、有效率。从课程设计选题,到查阅资料,思考课题的解决的方案,再到

35、课题的实现,是一个灵活运用知识的过程。由于以前没有接触过WinPcap,所以在查询资料料时,必须认真仔细,研究透每一个所用到的函数,设置好每个函数的参数,渐渐地对此类编程有了较深的认识,同时也加深了对C+的知识理解。尽管在编程中遇到了许多的错误,但是做设计的不就是享受这个过程么,为想到每一步的设计而高兴,为调试成功一个错误而兴奋,享受其中的乐趣,锻炼我们的耐心,不断完善自己的程序。通过反复的调试,也显示了程序员的严谨性。就最终的成果而言,这次的设计无疑是比较简单的,通过对过滤条件的设置,实现了对特定协议的数据包进行捕获、分析及显示。通过一些输入提示,指导操作人员执行,简单,易行。随着网络的发展

36、,嗅探工具会越来越完善,嗅探器是一把双刃剑。在网络安全方面,网络嗅探手段可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。权衡利弊,有必要对网络嗅探器的实现原理进行深入的了解。这次的设计对我来说算是一个基础,所有的学习均是由易转难,有了这次的学习,对我以后的学习及完善有着良好的益处。这次的设计没有像Sniffer这种工具,有着良好的用户界面,是一个缺憾,此程序还有很大的完善空间,在今后的设计中会一步步的进行学习,同时使自己的学习能力更上一层楼。5.2谢辞在此我要感谢王勇老师的指导及帮助。在设计过程中,我通过查阅大量的资料,与同学的交流和自学,并向老师请教等

37、方式,使自己学到了不少的知识,培养了自己的动手能力和思考能力,树立了对工作能力的自信心,相信会对以后的学习工作有非常重要的影响,而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的不是很好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。这是一个人与人的社会,每个人都会需要到别人的帮助,互相帮助与交流,也是提高学习能力的一个途径。在此再次郑重的感谢帮助我的老师和同学,谢谢你们对我的指导和帮助,使我顺利地完成了这次的课设。参考文献: 1刘文涛.网络安全编程技术与实例M.北京:机械工业出版社.2008.7 2胡晓元,史浩山.Wi

38、nPcap包截获系统的分析及其应用J.计算机工程.2005. 3Andrew S.Tanenbaum.计算机网络(第四版)修订版J.北京:清华大学出版社.2010. 4网上相关资料.附录(源程序):#include pcap.h#include #pragra comment(lib,wpcap.lib)#pragra comment(lib,wsock32.lib)/*WinPcap头文件 ;以下是以太网协议格式的定义 */struct ether_header u_int8_t ether_dhost6; /* 目的以太网地址 */ u_int8_t ether_shost6;/* 源以太

39、网地址 */ u_int16_t ether_type; /* 以太网类型 */;/*下面是ARP协议格式的定义*/struct arp_header u_int16_t arp_hardware_type;/* 硬件类型 */ u_int16_t arp_protocol_type; /* 协议类型 */ u_int8_t arp_hardware_length; /* 硬件地址长度 */ u_int8_t arp_protocol_length; /* 协议地址长度 */ u_int16_t arp_operation_code;/* 操作码 */ u_int8_t arp_source_

40、ethernet_address6;/* 源以太网地址 */ u_int8_t arp_source_ip_address4; /* 源IP地址 */ u_int8_t arp_destination_ethernet_address6;/* 目的以太网地址 */ u_int8_t arp_destination_ip_address4;/* 目的IP地址 */;/* IPv4 头的定义 */struct ip_header #if defined(WORDS_BIGENDIAN) u_int8_t ip_version: 4,/* 版本 */ ip_header_length: 4;/* 首部长度 */ #else u_int8_t ip_header_length: 4, ip_version: 4; #endif u_int8_t ip_tos;/* 服务质量 */ u_int16_t ip_length;/* 长度 */ u_int16_t ip_id;/* 标识 */ u_int16_t ip_off;/* 偏移 */ u_int8_t ip_ttl; /* 生存时间 */ u_int8_t ip_protocol;/* 协议类型 */ u_int16

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号