局域网抓包软件的设计与实现—计算机毕业设计.doc_第1页
局域网抓包软件的设计与实现—计算机毕业设计.doc_第2页
局域网抓包软件的设计与实现—计算机毕业设计.doc_第3页
局域网抓包软件的设计与实现—计算机毕业设计.doc_第4页
局域网抓包软件的设计与实现—计算机毕业设计.doc_第5页
免费预览已结束,剩余33页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕毕 业业 设设 计计 论论 文文 局域网抓包软件的设计与实现局域网抓包软件的设计与实现 论文作者姓名 论文作者姓名 申请学位专业 申请学位专业 申请学位类别 申请学位类别 指指导导教教师师姓姓名名 职职称称 论文提交日期 论文提交日期 局域网抓包软件的设计与实现局域网抓包软件的设计与实现 摘摘 要要 随着网络技术的不断发展 社会进入了一个信息爆炸的时代 世界也由于 网络而变小 人们通过各种技术和工具使交流突破了空间的限制 在网络技术 发展与普及的同时 网络安全问题引起了人们的广泛关注 因此 研究并开发 出一种能够有效地实时捕获网络信息的系统具有极其重要的意义 基于这一情 况 本论文针对网络数据的捕获与数据包信息分析等问题进行了深入的探讨和 研究 本论文逐一介绍了信息捕获中的相关技术及需求分析 在系统设计中对 数据包捕获模块 解码数据包模块和数据库信息模块的实现进行了详细讲述 通过运用 WinPcap 开发包实现网络数据包的捕获 利用 TCP IP 协议的封装理 论和自下而上的分析实现了数据包信息的分析 并且将分析出来的信息存入数 据库 另外 还能实现一些功能 如对指定的 IP 地址进行数据包的捕获 对捕 获结果进行显示等 关键词关键词 WinPcap 数据捕获 信息分析 局域网 The Design and Implementation of LAN Information Capture Software Abstract As development of the network and technology the society comes into a age of information explosion Due to the network the world has become smaller and people use all kinds of technologies and tools to break through the limitation of communication The network security has been widely concerned followed by the development and universal of the network technology Therefore it is great significance that an effective real time interception network information system is studied and developed Based on this situation this thesis in depth studies to capture the network data and so on Besides it introduces relative technology and the needs information capture The realization of the data capture module data packet decoded module and database information module is displayed for detail in the system s design The network data packet is captured through WinPcap some functions has been realized such as network data packet capture data packets of information analysis by using TCP IP protocol encapsulation theory and bottom up and will analyze the information stored in the database Simultaneously this software would also increases some functions such as data packet capture by the IP address make the results and statistics display the results of data packet capture and so on Key words WinPcap data capture information analysis LAN 目目 录录 论文总页数 25 页 1引言 1 1 1课题背景及意义 1 1 2本课题研究的相关技术及方法 1 1 3VISUAL C 6 0 1 1 4WINPCAP简介 2 2基于信息捕获的相关理论基础 4 2 1TCP IP 协议 4 2 2数据封装与分用过程 6 2 3IP 协议 7 3需求分析 9 3 1功能需求 9 3 2性能要求 10 4局域网信息捕获器的设计 10 4 1功能概述 10 4 2系统功能模块的设计 11 4 2 1数据包捕获模块 11 4 2 2数据分析模块实现 13 4 2 3数据库模块的实现 16 4 3用户界面模块 19 5局域网信息捕获测试和测试结果 20 5 1测试环境 20 5 2测试结果 20 结 论 22 参考文献 23 致 谢 24 声 明 25 第 1 页 共 25 页 1 1 引言引言 1 11 1 课题背景及意义课题背景及意义 计算机网络的发展给计算机产业和整个人类的工作 生活方式带来了巨大 的变化 特别是信息技术的发展使一个信息缺乏的时代进入了一个信息爆炸的 时代 世界也由于Internet而变小 人们通过各种技术 工具使得交流突破了 空间的限制 全球范围内的网络互联给人们的生活和工作带来了方便 人们正 享受网络技术带给我们美好生活 但同时某些不法分子利用网络的漏洞非法入 侵他人的主机系统 有的利用网络盗取他人个人信息 如网上银行帐号密码等 对他人财产安全造成了重大威胁 据有关资料统计我国每年通过计算网络进行 违法行为以30 的速度上升 面对计算机犯罪越来越多的趋势 及网络上日益泛 滥的信息垃圾和污染情况 我国政府未雨绸缪 已经制定了关于互联网络使用 的法律法规 网络安全问题已面临着重大挑战 目前我国正在进行大规模的现代化经济建设 需要使用自己的网络和信息 安全系统来保护自己的网络和信息系统 尤其是对于全国性大型计算机网络而 言 必须将网络安全和信息安全放在非常重要的地位上 而从长远角度看 这 只能依靠我们自己解决 因此建立网络安全系统是我们现在迫切需求 这项工 作对我们来说具有重大的政治和经济意义面对这种形式研究并开发出一种能方 便有效的实时监视和捕获可疑网络信息的系统迫在眉睫 随着信息化程度的提高 使我们从一个封闭的环境进入到一个开放的世界 但我们所担心和关心的问题便是网络安全问题 也就是内部网络安全和外部网 络安全的问题 本课题正是针对这种情况和需求 对实时数据捕获与网络信息 监控提出系统设计方案 并对信息过滤和跟踪的方法和技术进行研究 这便是 我的论文研究的意义与目的 1 21 2 本课题研究的本课题研究的相关技术及方法相关技术及方法 网络数据捕获技术是获取信息的关键技术 它通过监听技术 过滤技术获 取原始数据 根据TCP IP分层理论进行层层拆解 提取相关协议中的信息 本 毕业设计主要通过使用Winpcap开发包 在VC 环境下编写出了一款简单的软件 对数据包信息按TCP协议类型 UDP协议类型和特定IP地址进行分类捕获 捕获 出所需要的敏感信息 并且将捕获出来的信息写入数据库 1 31 3 VisualVisual C C 6 06 0 Visual C 6 0 是微软公司推出的开发 Win32 应用程序 Windows 95 98 2000 XP NT 的 面向对象的可视化集成工具 它的最大优点就是提供 了功能强大的 MFC 类库 MFC 是一个很大的 C 类层次结构 其中封装了大量的 第 2 页 共 25 页 类及其函数 很多 Windows 程序所共有的标准内容可以由 MFC 的类来提供 MFC 类为这些内容提供了用户接口的标准实现方法 程序员所要做的就是通过预定 义的接口把具体应用程序特有的东西填入这个轮廓 这将简化编程工作 大大 的减少程序员编写的代码数量 使编程工作变得更加轻松容易 1 41 4 WinpcapWinpcap 简介简介 Winpcap windows packet capture 是 Windows 平台下一个免费 公共的 网络访问系统 开发 Winpcap 这个项目的目的在于为 win32 应用程序提供访问 网络底层的能力 它提供了以下的各项功能 1 捕获原始数据报 包括在共享网络上各主机发送 接收的以及相互之 间交换的数据报 2 在数据报发往应用程序之前 按照自定义的规则将某些特殊的数据报 过滤掉 3 在网络上发送原始的数据报 4 收集网络通信过程中的统计信息 Winpcap的主要功能在于独立于主机协议 如TCP IP 而发送和接收原始数 据报 也就是说 Winpcap不能阻塞 过滤或控制其他应用程序数据报的发收 它仅仅只是监听共享网络上传送的数据报 Winpcap是Win32平台下的数据包捕 获与网络分析架构 由三个模块构成 NPF packet dll wpcap dll 前一个工 作在内核层 后两个工作在用户层 第一个模块是内核部分NPF Netgroup Packet Filter 在Win95 98中它是一个VXD 虚拟设备驱动程序文件 文件 在WinNT Win2000下是一个SYS文件 它的主要功能是过滤数据包 并把这些数 据包原封不动地传给用户态模块 当然也添加了一些系统特定的标志 比如时间 戳管理 这个过程中包括了一些操作系统特有的代码 第二个模块packet dll 用来在不同的Win32平台下提供一个通用的公共的包驱动接口 事实上 不同版 本的Windows平台在内核层模块和用户进程之间的接口不完全相同 packet dll 用于解决这些不同 提供了一套系统独立的API Application Programming Interface 应用编程接口 调用packet dll的程序能够运行在不同版本的 Windows 平台上而无需重新编译 packet dll还有一些附加的功能 它可执行 一些低层操作 如 获得网卡名字 动态装载驱动 得到比如机器的网络掩码 硬件冲突等一些系统特定的信息 第三个模块wpcap dll是系统无关的 它提供 了更高层 抽象的函数 它包括了一些比如过滤器生成 用户级缓冲等其它的 高层函数 增加了比如统计和包发送等更高级的特性 因此程序员能处理两种 类型的API 一套原始函数集 包含在packet dll中 直接与内核层调用匹配 另 一套高层函数由wpcap dll提供 便于用户调用 功能更强大 程序员能随意使 第 3 页 共 25 页 用wpcap dll 但只能在受限的环境中直接使用packet dll Wpcap dll Application NPF Device Driver Packet dllUser Level Kernel Level Network Packets 图 1 WINPCAP 结构图 总的说来 Packet dll 直接映射了内核的调用 Wpcap dll 提供了更加友 好 功能更加强大的函数调用 Winpcap 的具体结构图 1 所示 Winpcap 是用 NDIS Windows 的通信协议程序 比如 TCP IP 和网络设备驱 动器之间通信的规范 的 将自己注册为一个协议处理驱动 Wincap 的使用非 常方便 但是它有一个致命的缺陷就是只适用于共享式以太网络 对于交换式 网络下的数据则无能为力 经过测试 在使用交换机连接的局域网下 Wincap 只能监听到本网段内的数据 而对于来自其他网段的数据则无法监听 除非你 把 probe 接到交换机之前或者接到交换机的 console 口上 不过那样的弊端是 显而易见的 所以 Winpcap 的应用还是有局限性的 Winpcap 结构图如下 图 2 NPF device driver 第 4 页 共 25 页 2 2 基于基于信息捕获的相关理论基础信息捕获的相关理论基础 2 12 1 TCP IPTCP IP 协议协议 TCP IP Transfer Contrcol Internet Protocol 传输控制协议 网际协 议起源于60年代末美国政府资助的一个分组交换网络研究项目 到90年代已发 展成为计算机之间最常应用的组网形式 它是能够在网络中提供可靠的数据传 输和无连接的数据报服务的一组协议 提供可靠数据传输的协议称为传输控制 协议TCP 提供网络寻址的协议称为网际协议IP 它只是TCP IP协议族的其中的 两种协议 TCP IP协议族是一组不同的协议组合在一起构成的协议族 它是一 个真正的开放系统 现已成为全球互联网中的基础 基于TCP IP协议的网络体系结构 TCP IP协议分为四层如图3所示 每一层 分别负责不同的通信功能 应用层Telnet Ftp Email 等 传输层TCP UDP 网络层IP ICMP IGMP 网络接口层设备驱动程序及接口卡 图 3 TCP TP 协议族的四个层次 链路层 有时也称作数据层或网络接口层 通常包括操作系统中的设备驱 动程序和计算机中对应的网络接口卡 它们一起处理任何传输媒介的物理接口 细节 它使用的协议为以太网协议 网络层 有时也称作互联网层 处理分组在网络中的活动 例如分组的选 路 在TCP IP 协议族中 网络层协议包括IP 网际协议 ICMP 因特网网间 控制报文协议 以及IGMP 因特网组管理协议 传输层 它主要为两台主机上的应用程序提供端到端的通信 TCP IP协议 族中 有两个互不相同的传输协议 UDP 用户数据报协议 TCP 传输控制 协议 TCP为两台主机提供高可靠性的数据通信 它所做的工作包括把应用程序交 给它的数据分成合适的小块交给下面的网络层 确认接收到的分组 设置发送 最后确认分组的超时时钟等 由于运输层提供了高可靠性的端到端的通信 因 此应用层可以忽略所有这些细节 UDP则为应用层提供一种非常简单的服务 它只是把称作数据报的分组从一 台主机发送到另一台主机 但并不保证该数据报能到达另一端 任何必需的可 靠性必须由应用层来提供 应用层 它负责处理特定的应用程序细节 对于TCP IP协议族 它提供 第 5 页 共 25 页 Telnet 远程登录协议 FTP 文件传输协议 SMTP 简单邮件传送协议 POP3 邮件接受协议 SNMP 简单网络管理协议 通常应用程序是一个用户进程 而下面的三层进程则是一般在内核中执行 的 应用层关心的是应用程序的细节 它不关心数据在网络中的传输 下三层 对应用程序一无所知 但却要处理所有的通信细节 在TCP IP 协议族中 有很多协议 TCP和UDP是两种最为著名的运输层协议 二者都使用IP作为网络层协议 虽然TCP使用不可靠的IP服务 但它却提供一种 可靠的运输层服务 除了以上提到的协议 还有下面几个协议 IPARP 地址解 析协议 RARP 逆向地址解析协议 动态选路协议 RIP OSPF BGP CIDR DNS 域名系统 TFTP 简单文件传送协议 等 图4 为TCP IP 网络体系结构与上述各协议之间的关系模型 图4 TCP IP协议族中不同层次的协议 从图的模型中可以看到 应用层的大多数应用程序通过TCP UDP来访问网 络层 或者通过ICMP来使用网络层 如Ping Trace Route等也可以使用IP直接 访问网络层 传输层中的TCP UDP为应用层提供可靠的或不可靠网络传输的网 络传输服务 网络层的ICMP是IP协议的附属协议 IP协议用它与路由器之间交 换错误报文或其它控制信息 网络接口层的ARP RARP是以太网和令牌环使用的 特殊协议 用来转换IP层和网络接口层使用的地址 2 22 2 数据封装与分用过程数据封装与分用过程 以用户用TCP协议传送数据为例 数据被送入协议栈中 然后逐个通过每一 层直到被当作一串比特流送入网络 然后逐个通过每一层直到被当作一串比特 流送入网络 其中每一层对收到的数据都要增加一些首部信息 有时还要增加 尾部信息 TCP传给IP的数据单元称作TCP报文段或简称为TCP段 TCP segment IP传给网络接口层的数据单元称作IP数据报 通过以太网传输的比 第 6 页 共 25 页 特流称作帧 Frame 这就是通常说的数据的封装过程 如图5所示 图 5 数据进入协议栈时的封装过程 当目的主机收到一个以太网数据帧时 数据就开始从协议栈中由底向上升 同时去掉各层协议加上的报文首部 每层协议盒都要去检查报文首部中的协议 标识 以确定接收数据的上层协议 这个过程称作分用 Demultiplexing 图6显示了该过程是如何发生的 图6 数据帧的分用过程 第 7 页 共 25 页 2 32 3 IPIP 协议协议 IP是TCP IP协议族中最为核心的协议 所有的TCP UDP ICMP及IGMP数据 都以IP数据报格式传输 IP提供不可靠 无连接的数据报传送服务 IP数据报 的首部信息如图7 图7 IP数据报格式及首部中的各字段 IPIP各域的含义如下 版本 当前IP协议的版本号 本论文采用的版本号为4 首部长度 以32bit为单位的包头长度 服务类型 规定对本数据报的处理方式 比如优先权等 总长 以Byte为单位的整个IP数据报长度 标识 信源主机赋予每个IP数据报的唯一标识符号 用于控制分片及其重 组 标志和片偏移 同样用于控制分片及其重组 生存时间 设置本数据报的最大生存时间 以秒为单位 协议 表示创建本IP数据报数据区数据的高层协议的类型 如TCP UDP等 头标校验和 用于保证头标数据的完整性 源IP地址和目的IP地址 分别指发送本数据报的主机IP地址和接受本数据 报的主机的IP地址 选项 用于控制和测试 是IP数据报中可选的部分 包含 源路径 路径记录 时间戳 等几种类型 TCPTCP协议是网络中应用最为广泛的协议 许多的应用层协议都是在建立在 TCP协议之上的 TCP首部的各字段如图8所示 第 8 页 共 25 页 IP 首部 TCP 首部 TCP 数据 IP 数据报 TCP 报文段 20 字节20 字节 图 8 TCP 数据在 IP 数据报中的封装 TCP协议头部信息如下 源端口 发送端TCP端口号 目的端口 接收端TCP端口号 序号 指出段中数据在发送端数据流中的位置 确认号 指出本机希望下一个接收的字节的序号 头标长度 以32bit为单位的段头标长度 是针对变长的 选项 域设计的 码位 指出段的目的与内容 不同的各码位置位有不同的含义 窗口 用于通告接收端接收缓冲区的大小 校验和 这是可选域 置0表示未选 全1表示校验和为伍 紧急指针 当码位的URG置位时 指出紧急指针的序号 UDP协议是英文User Datagram Protocol的缩写 即用户数据报协议 主要 用来支持那些需要在计算机之间传输数据的网络应用 包括网络视频会议系统 在内的众多的客户 服务器模式的网络应用都需要使用UDP协议 UDP协议从问世 至今已经被使用了很多年 虽然其最初的光彩已经被一些类似协议所掩盖 但 是即使是在今天 UDP仍然不失为一项非常实用和可行的网络传输层协议 UDP 数据报各域的意义与TCP段中相应的域相同 只有校验和有些不同 除UDP数据 报本身外 它还覆盖一个附加的 伪头标 这个伪头标来自于IP报头 包括 源IP地址 信宿IP地址 协议类型 UDP长度及填充域 UDP首部的各字段图9所 示 第 9 页 共 25 页 图 9 UDP 首部 3 3 需求分析需求分析 3 13 1 功能需求功能需求 随着个人计算机和互联网的普及 越来越多的人开始使用网络这个媒介来 发送 接收信息 计算机网络给人们生产和生活带来了巨大的便利 但是由于 网络是一个面向大众的开放系统 对数据信息的保密和系统的安全性考虑得并 不完备 存在着许多的安全隐患 而有的人 就利用这些隐患 通过网络来发 送一些包含色情 反动等不良内容的信息 达到扰乱正常社会秩序的目的 网 络的安全形势日趋严峻 因此 现在在 Internet 安全隐患中扮演重要角色之一 的网络数据抓包软件受到越来越大的关注 本软件的设计就是为了达到基本的维护网络安全的作用 对网络上传输的 数据进行捕获 然后从中得到所有的网络数据包 并对其进行简单的分析操作 在网络入侵取证系统中 对网络上传送的数据包进行有效的监听即捕获包是目 前取证的关键技术 只有进行高效的数据包捕获 网络管理员才能对所捕获的 数据进行一系列的分析 从而进行可靠的网络安全管理 IP是TCP IP协议族中最为核心的协议 所有的TCP UDP ICMP及IGMP数据 都以IP数据报格式传输 这些数据类型中又以TCP和UDP两种数据类型为多数 所以本软件需要设计出按TCP协议类型和按UDP协议类型来过滤网络中的数据 同时本软件还还应当具有一种过滤功能 那就是当我们知道某个IP地址发送的 数据包信息都是属于一些不良 反动等等内容的信息 那么 我们可以通过在 软件上输出这台主机IP地址 来过滤从这台主机上发送的所有TCP和UDP协议类 型的数据 从而达到信息过滤的要求 3 23 2 性能要求性能要求 由于本设计是安装在个人电脑上 所以要求用户界面简洁 友好 方便使 第 10 页 共 25 页 用和操作 网络上数据包的捕获是入侵检测系统的基础 关键是要保证高速的抓包和 低的丢包率 一方面 网络检测部分的数据源是网络上的数据包 需要经过捕 获后方可以提交给分析系统 另一方面 捕获数据包效率的高低直接影响着网 络探测部分的性能的好坏 如果发生丢包现象 则有可能丢掉的包就是攻击包 在保证高速的抓包和低的丢包率的同时 要还要求程序能有较强的稳定性 一款好的信息过滤软件 都是将在一个长时间工作的环境中运行 如果不能保 证较强的稳定性的话 那么软件对信息过滤的效率和功能有很大的局限性 对 数据信息过滤就是失败的 那么这款软件就不会具备同其他同类似软件的竞争 力 更不会有市场 那么它就注定成为一款失败的软件 试想一下 假如 当用户使用这款软件时 软件占用了太多的系统资源而 导致用户对电脑的其他操作都很难进行 那么 谁还会用这款软件呢 所以 该软件还应该具备一种特点就是 低的系统资源占用率 4 4 局域网信息捕获器的设计局域网信息捕获器的设计 4 14 1 功能概述功能概述 通过前面的叙述可以知道 这款软件具有的功能 那就是 能够分别捕获 局域网中的 TCP 协议类型数据 UDP 协议类型数据和从某一特定的 IP 地址发送 出来的 TCP 协议类型数据和 UDP 协议数据类型 并且 将这些捕获出来的数据 包的基本信息存入到数据库中 提供给网络管理员使用和进一步的分析 系统流程图如下图 开始 捕获数 据 分析协 议类型 数据库 处理 结束 结束 YES YES NO NO 第 11 页 共 25 页 图 10 系统流程图 本系统包括三个基本模块 分别是数据包捕获模块 数据分析模块和数据 库模块 其中数据包捕获模块的功能是 利用 Winpcap 控件 通过网卡设备从 网络中捕获数据包 数据分析模块的功能是 主要实现数据的解析 从网络适 配器中捕获到的数据的为原始数据 raw data 这些原始数据为二进制格式 必须转化为能比较好明白的格式 这就要求将这些原始数据能按照网络数据传 输的具体格式来保存 主要为了能较好的读懂相关的信息 以便使用者分析 数据库模块的功能是 经过前两个模块处理后的数据 现在已经转化成了对我 们有用的信息了 而这些信息不可能一直让他存放在内存中 那么就需要在数 据库中建立相应的表 把这些信息存贮在这些数据库表的相应列名中 以便使 用者处理 使用 4 24 2 系统功能模块的设计系统功能模块的设计 4 2 14 2 1数据包数据包捕获模块捕获模块 数据包捕获模块主要用Winpcap软件实现 模块的设计思想遵循Winpcap捕 获数据包的流程 流程分三步 查找设备 打开设备和捕获数据的函数 利用 WinPcap结构提供的wpcap dll来开发实现数据包捕获程序 流程图如下 查找网卡设备 获取网卡设备 打开网卡设备 捕获网络数据包 结束 YES NO 开始 图11 数据捕获模块流程图 这里给出其主要过程 先确定要在其上进行监测的网络适配器 得到现有的网络适配器的列表和 他们的描述 从而获得该NIC的相关信息 if pcap findalldevs ex PCAP SRC IF STRING NULL return 接下来打开所获得的网络适配器 其中pcap open函数的参数1为上面获得 的NIC名称 参数2定义了网络监测程序所捕捉的最大字节数 参数3指示是否将 网络适配器设为混杂模式 PCAP OPENFLAG PROMISCUOUS表示工作方式 为混杂模式 参数4为捕获时间限制 单位为毫秒 参数5为错误信息缓存 该 函数负责按照用户指定参数和其它系统默认值初始化WinPcap 并返回会话句柄 打开设备 adhandle pcap open d name 65536 PCAP OPENFLAG PROMISCUOUS 1000 NULL errbuf 当网卡已打 打开 并且具体配置好后 就可以进入捕获了 考虑到系统 资料的占用等问题 利用了线程来解决此问题 捕获数据是新建一个线程 来 实现数据的捕获 再在线程中处理数据的解析和特征码的提取 其中 CreateThread 函数的参数 1 为指向SECURITY ATTRIBUTES结构体的指针 参数 2 指定线程堆栈大小 参数 3 指定线程执行函数名称 参数 4 表示给新线程的 参数 参数 5 为线程指定的更多控制参数 参数 6 为新线 ID 代码如下 这里创建一个线程来处理数据 LPDWORD ThID NULL m handle CreateThread NULL 0 ThreadProc this 0 ThID if m handle NULL return 线程处理函数 DWORD WINAPI ThreadProc LPVOID lpParameter CLjDlg m dlg CLjDlg lpParameter struct pcap pkthdr header 捕获数据包的头 const u char pkt data 指向常量的指针 第 13 页 共 25 页 int res pcap next ex 的返回值 m dlg SetDlgItemText IDC STATIC TIP 线程开始捕获数据 while res pcap next ex m dlg adhandle 处理捕获的数据包 m dlg SaveDate header pkt data return 1 4 2 24 2 2 数据分析模块实现数据分析模块实现 数据分析模块的设计思想是将 Winpcap 捕获到的数据对应网络数据包的格 式进行初始化 取得具体的值 通过相关的转换函数得到相关的信息 具体的 函数原型如下 相关格式见第二章 void SaveDate struct pcap pkthdr header const u char pkt data 将网络中捕获的数据包进行格式化 数据分析模块的主要实现数据的解析 从网络适配器中捕获数据的为原始 数据 raw data 这些原始数据为二进制格式 必须转化为能比较好明白的格 式 这就要求将这些原始数据能按照网络数据传输的具体格式来保存 主要为 了能较好的读懂相关的信息 以便使用者分析 其流程图如下 第 14 页 共 25 页 捕获的数据包 分析以太网协 议 判断是否为 IP协议数据 分析IP协议数 据 判断是否是 TCP UDP 协议类型字 段 分析TCP UDP协议类型 数据包 传入数据库处 理模块 YES NO YES NO 图 12 数据包分析流程图 数据分析模块实现时 本系统提取的数据包中主要的一些信息 如 IP 数据 包中的 IP 地址 端口信息等 具体代码下 数据包分析和保存 ipheader ih tcp tcph udp udph CString temp int chang 时间 struct tm ltime ltime localtime strftime timestr sizeof timestr H M S ltime IP ih ipheader pkt data 14 ip 头 int iplen ih ver ihl 第 15 页 共 25 页 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 u sport ntohs tcph sport 源端口 u dport ntohs tcph dport 目的端口 sprintf Sport d tcph sport 源端口 sprintf Dport d tcph dport 目的端口 chang tcph other 0 x0fff 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 首部长度 sprintf date X udph content TCP 数据 sprintf Sport d u sport 源端口 sprintf Dport d u dport 目的端口 AccessWrite ih proto 第 16 页 共 25 页 4 2 34 2 3 数据库模块的实现数据库模块的实现 1 把捕获到的数据包写入数据库中的操作 相关数据信息捕获分析完毕后 接下来就是对数据的保存 本系统使用的 是 ado 数据库连接方式 ado 是 Microsoft 开发的一个连接数据库方式 由于本 系统的使用平台 开发环境都为 Microsoft 的软件 所以本系统使用 ado 方式 连接数据库代码如下 try m pConnection Open Provider Microsoft Jet OLEDB 4 0 Data Source lj mdb adModeUnknown 连接数据库 catch com error e 捕捉异常 AfxMessageBox 数据库连接失败 确认数据库 lj mdb 是否在当前路径 下 return FALSE return TRUE 数据包信息写入数据库代码如下 AccessWrite int Type if m bOneIP 指定 IP 地址模式 m pRecordset CreateInstance uuidof Recordset m pRecordset Open SELECT FROM 目标 IP m pConnection GetInterfacePtr adOpenDynamic adLockOptimistic adCmdText try m pRecordset AddNew m pRecordset PutCollect 时间 variant t timestr 第 17 页 共 25 页 m pRecordset PutCollect IP 首部长度 variant t IPLength m pRecordset PutCollect IP 数据包长度 variant t IPDateLength m pRecordset PutCollect 生存时间 variant t TTL m pRecordset PutCollect 协议类型 variant t proto m pRecordset PutCollect 源 IP 地址 variant t SIP m pRecordset PutCollect 目的 IP 地址 variant t DIP m pRecordset PutCollect 源端口 variant t Sport m pRecordset PutCollect 目的端口 variant t Dport m pRecordset Update catch com error e AfxMessageBox e ErrorMessage return 2 查看写入到数据库中的数据包 m pRecordset CreateInstance uuidof Recordset m list DeleteAllItems if fangshi Compare TCP 表单 0 m list GetColumn 10 pColumn pszText TCP 首部长度 m list SetColumn 10 m list GetColumn 11 pColumn pszText TCP 数据 m list SetColumn 11 try m pRecordset Open SELECT FROM TCP m pConnection GetInterfacePtr 获取库接库的 IDispatch 指针 第 18 页 共 25 页 adOpenDynamic adLockOptimistic adCmdText catch com error e AfxMessageBox e ErrorMessage return 读取数据 try if m pRecordset BOF m pRecordset MoveFirst else AfxMessageBox 表内数据为空 return 读入库中各字段并加入列表框中 while m pRecordset rsEOF var m pRecordset GetCollect 编号 if var vt VT NULL str com util ConvertBSTRToString bstr t var variant t 转字符串 m list InsertItem num 1 str m list SetItemText num 1 0 str 第 19 页 共 25 页 4 34 3 用户界面模块用户界面模块 根据上面三个模块的分析 直接与用户相关联的操作有 为 Winpcap 指定 一个具体的网络适配器 选择需要过滤的数据类型或者想要过滤的特定 IP 地址 发送的 TCP 和 UDP 信息 在为 Winpcap 指定一个具体的网络适配器方面 有几种方式可以实现 1 通过 EDIT 控件让用户输入具体的网卡设备 2 新建一个下拉列表框 让用户选 择具体的网卡设备 考虑到用户使用群的方便 简洁 同时 Winpcap 提供了查 找网络设备的函数 故选择了第二种方式来实现本功能 在为程序指定具体的捕获方式时 在程序中分别设置了三个 BOOL 型变量来 分别控制所选中的状态 通过 BOOL 型变量来控制程序分析数据报方式 当选中 IP 这个单选框是 需要用户手动输入需要捕获的源 IP 地址 具体界面如下 图 13 主界面外观 用户界面第一行为软件找网卡设备 设计成的是一个下拉列表 能够把找 到的网卡信息都列出来 默认选中列表第一项 第二列为 3 个可选择框 它们是 TCP UDP 和 IP 分别对应的是按 TCP 协 议类型 UDP 协议类型和特定 IP 地址来捕获数据信息 其中 IP 地址这一栏 默认的是本地主机的 IP 地址 3 种过滤类型中默认选中的是 TCP 类型 最后一列是 4 个按钮 分别是开始 停止 显示数据和退出 单击开始按 钮 系统开始执行捕获相应的数据包信息 显示捕获数据包的个数 并且将捕 获出来的信息写入 ACCESS 数据库 单击停止按钮 系统停止捕获数据包信息 并且断开与数据库的连接 单击显示数据按钮 会弹出一个消息框 消息框里 有一个下拉列表 可以选择用户想要查看的数据库中的 3 张不同的表单 选中 其中一项 会将数据库中的相应表中的相应列和相应项显示在下面的消息框中 而单击退出按钮 则是退出该软件 第 20 页 共 25 页 图 14 查看选项 5 5 局域网信息捕获测试和测试结果局域网信息捕获测试和测试结果 5 15 1 测试环境测试环境 在编写本软件前 作者首先确定了所使用的语言 VC 由于 VC 语言不能 访问底层的网络数据 所以使用 Winpcap 来帮助实现对底层网络数据的访问 在此 本软件必须首先安装 Winpcap VC6 0 编程环境中设置好相关配置 值 得注意的是 Winpcap 都是开源的 所以在很多地方可以查询到它们的使用方 式 由于使用了开源软件 Winpcap 使用者在使用本软件的时候 需要安装 Winpcap 具体的实验环境 个人电脑 2 台或 2 台以上 交换机一个 网线若干 电脑通过交换机组成一个局域网环境 5 25 2 测试结果测试结果 运行本软件 选择捕获数据包的网络适配器即网卡 单击开始 软件开始 捕获数据包 图 15 开始捕获数据包 第 21 页 共 25 页 图 16 停止捕获数据包 测试结果如下 图 17 TCP 表 第 22 页 共 25 页 图 18 UDP 表 图 19 源 IP 地址表 测试结果显示设计基本达到了预想的功能 能够实现对 TCP 协议类型 UDP 协议类型的捕获和特定 IP 地址发送的数据包信息的捕获 结结 论论 经过三个多月的努力 局域网抓包软件终于完成了 在整个软件的开发过 第 23 页 共 25 页 程中 本人经历了对 VC 开发环境的熟悉 网络基本知识的进一步熟悉 Winpcap 等相关技术的学习和研究 对本软件开发方案的选择以及信息捕获的相 关知识的学习 本次毕业设计实现了局域网信息的捕获 主要功能是对局域网中按 TCP 协 议类型 UDP 协议类型和特定 IP 地址对数据包进行捕获 然后经过一系列简单 的分析和处理 将其捕获的数据信息存入数据库 并且可提供给用户使用 在这次编程的过程中 作者查阅了大量的书籍 在网上也查了不少资料 由于时间和技术等多方面因素 仍然有些部分想要设计的功能没能编码实现 本软件也存在一些不尽人意的地方 功能也比较简单 这些都是有待完善的地 方 通过本次毕业设计 我充分体会到理论与实践之间的重要联系和团队合作 的重要性 在实践的过程中我学到了很多的知识 增强了动手和解决实际问题 的能力 不仅对信息过滤技术的应用有了进一步的了解 也对 C 语言的运用更 为熟练了 同时我也发现了自身的许多不足之处 有待在将来的工作中进一步 的学习和完善 软件虽然实现了一些功能但是还是存在很多的问题和缺陷 不过我还是通 过完成毕业设计使自己的能力得到很大的提高 并且充分体会到理论与实践之 间的重要联系和团队合作的重要性 进一步的了解了 C 语言和网络基本知识 经过大学四年的学习生活 毕业设计不仅是对我们所学知识的综合体现 而且 是对诸多方面的一种总结 让我们更清楚的认识到了自己的优点和不足之处 教育我们能积极的面对以后的工作和生活 成为一个能为社会做贡献的现代化 人才 参考文献参考文献 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 年 第 24 页 共 25 页 致致 谢谢 本文是在刘永红老师的热情关心和指导下完成的 他渊博的知识和严谨的 治学作风使我受益匪浅 对顺利完成本课题起到了极大的作用 在此向他表示 我最衷心的感谢 感谢我的同学在课题研究初期给予的帮助 正是因为在他的帮助下课题才 得以很好的展开 有了一个很好的开端 使我的课题得以顺利地完全地达到了 预期的目标 并使论文最终得以顺利地完成 在论文完成过程中 本人还得到了其他老师和许多同学的热心帮助 本人 向他们表示深深的谢意 最后向在百忙之中评审本文的各位专家 老师表示衷心的感谢 作者简介 姓 名 李健性别 男 出生年月 1984 年 3 月民族 汉 E mail phoenixjay 第 25 页 共 25 页 声声 明明 本论文的工作是 2007 年 2 月至 2007 年 6 月在成都信息工程学院网络工程 系完成的 文中除了特别加以标注地方外 不包含他人已经发表或撰写过的研 究成果 也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使 用过的材料 除非另有说明 本文的工作是原始性工作 关于学位论文使用权和研究成果知识产权的说明 本人完全了解成都信息工程学院有关保管使用学位论文的规定 其中包括 1 学校有权保管并向有关部门递交学位论文的原件与复印件 2 学校可以采用影印 缩印或其他复制方式保存学位论文 3 学校可以学术交流为目的复制 赠送和交换学位论文 4 学校可允许学位论文被查阅或借阅 5 学校可以公布学位论文的全部或部分内容 保密学位论文在解密后 遵守此规定 除非另有科研合同和其他法律文书的制约 本论文的科研成果属于成都信 息工程学院 特此声明 作者签名 年 月 日 Chapter 1 The night I called at the Manhattan General to pic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论