




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕 业 设 计 论 文 设计 论文 题目 局域网监听软件的设计与实现 学 院 名 称 电子与信息工程学院 专 业 计算机科学与技术 班 级 10 计科 2 姓 名 XXXX 学 号 XXXXXXXX 指 导 教 师 XXXX 职 称 教授 定稿日期 2014 年 4 月 30 日 局域网监听软件的设计与实现 摘摘 要要 互联网给我们的社会和个人带来了太多的便利和益处 社会运作 包括公共设施及其服务 政府运作和个人生活 已经越来越离不开电 脑和互联网了 这使得互联网安全这一潜在威胁迅速 悄然但又爆炸 式地产生了 公民个人的隐私 通讯和表达自由受到直接冲击 从邮 件 电话到电子文档和其他资料 乃至行踪 消费记录等 我们似乎 可以变成透明 最近沸沸扬扬的棱镜门和 Heartbleed 漏洞更是为世 人敲响了网络安全的警钟 对局域网内数据监听系统的研究 对于维 护网络的稳定性和解决网络安全问题有着重要的意义 它可以用来帮 助诊断网络中的路由设备 其他的网络连接设备 查看网络上数据报 的传送情况 利于网络管理员的管理与维护 本局域网监听软件主要采用 WinPCap 开发工具和 C 语言在 VisualStudio2008 编译器下进行开发 软件实现了对局域网内的数 据进行捕获以及过滤 并分析出每一协议层的传输数据的主要字段和 内容 之后再将其显示 同时进行动态更新 经过长时间的使用 证 明该软件运行可靠稳定 捕获数据准确 易于使用 关键词 互联网安全 局域网监听 WinPCap 多协议分析 DESIGN AND IMPLEMENTATION OF LAN MONITORING SOFTWARE ABSTRACT Internet has brought much convenience and benefits to our everyday life Social functioning including public facilities and services government operations and personal life has become increasingly dependent on computers and the Internet This makes the potential threat to Internet security quickly quietly but explosively generated The privacy of individual citizens freedom of communication and expression direct impact From e mail telephone to electronic documents and other information as well as the whereabouts of consumer records it seems that we can become transparent Recent uproar the US surveillance program PRISM and Heartbleed loophole is for the world sounded the alarm for network security Research on data monitoring system in LAN plays an important role in maintainingthe stability of the network and solve the problem of network security it can be used to help diagnose routing equipment in the network the other network connection device check the transmission of the data on the network management and maintenance to the network administrator This LAN monitoring software developed with WinPcap using the C language compiler under VisualStudio2008 This software is mainly realizes in monitoring the network data analyzes and analyze the main field data for each protocol layer After that it shows with carries on the dynamic renewal After a long period of use the software is reliable and stable also able to accurately capture data and easy to use Key Words internet security lan monitoring winpcap multi protocol analysis 目录目录 摘摘 要要 I ABSTRACT II 目录目录 IV 第第 1 章章绪论绪论 6 1 1研究目的和意义 6 1 2局域网监听技术的发展 7 1 2 1 局域网监听技术原理 7 1 2 2 局域网监听的实现方法 7 第第 2 章章网络传输技术概述网络传输技术概述 9 2 1网络传输模型 9 2 1 1 TCP IP模型 9 2 1 2 OSI模型 11 2 1 3 TCP IP模型和OSI模型的关系 12 2 2主要数据包结构 14 2 2 1 以太网帧格式 14 2 2 2 IP数据包格式 15 2 2 3 TCP数据报 16 2 3WINPCAP简介 18 2 3 1 WinPCap主要函数 18 2 3 2 WinPCap过滤器表达式 20 第第 3 章章需求分析需求分析 22 3 1用户需求 22 3 2功能需求 22 3 3性能需求 23 第第 4 章章系统设计系统设计 24 4 1开发环境 24 4 2系统结构 24 4 2 1 结构描述 24 4 2 2 系统架构 24 4 3设计思路 25 4 4基于 WINPCAP开发应用程序 25 4 5程序流程 26 第第 5 章章系统实现系统实现 28 5 1总体设计 28 5 2模块设计 29 5 2 1 网卡初始化 29 5 2 2 数据包捕获 29 5 2 3 数据包分析 33 5 2 4 过滤器模块设计 35 第第 6 章章总结总结 38 参考文献参考文献 39 致谢致谢 40 作品 软件 使用说明书作品 软件 使用说明书 41 第第 1 1 章章 绪论绪论 1 11 1研究目的和意义研究目的和意义 随着计算机技术的发展 网络与我们的生活紧密相连 甚至已经成为生活中 的一部分 然而越来越多的网络攻击正在一步步侵犯着我们的网络安全 黑客们 很容易截获在局域网中传输的数据包 通过对数据包进行分析 就能得到数据包 内的重要信息 通过这种方式 我们使用的密码 发送的邮件等私密信息无疑就 暴露在别人面前 给个人隐私等信息带来很大的安全威胁 当然 我们也可以利 用网络监听技术 获取黑客入侵的信息 甚至可以提前做好预防工作 这样对保 护我们的信息安全无疑是一个获得了巨大的先机 因此 了解网络监听的实现原 理就显得尤为重要 1 网络监听是信息安全领域内一项非常重要和使用的技术 他的起源是网络管 理员为了诊断网络故障的需要 而监听网络中传输的数据信息 在网络管理和维 护中 网络管理和维护人员常常利用网络监听技术监控网络当前的信息状况 网 络流量 进行网络访问统计分析等等 除此之外 网络监听还可以发现网络中存 在的安全隐患 及时采取相应措施 不让黑客有机可乘 但在现实生活中 网络 监听技术往往能在黑客手中发挥更大的作用 它们利用网络监听技术窃取用户的 私密资料 对于普通用户来说 被监听也许只是泄露个人隐私资料 而对于金融 机构等资料敏感用户 恶意的网络监听更会带来难以弥补的金钱和信用损失 综上所述 对于局域网数据监听系统的研究 有利于维护计算机网络安全 对于网络管理者来说 局域网监听可以识别网络中的路由设备 查看局域网中传 输的数据包 统计网络的流量 并可以侦测到非法的入侵 找出网络中潜在的问 题等 同时 管理员还可以利用网络监听软件解决一些网络故障 比如网络延时 丢包等问题 如果不凭借监听软件 就无法准确的知道问题出在何处 在大型的 网络中 它的存在对系统管理员是非常重要的 凭借从局域网监听软件获取的信 息 系统管理员可以了解网络中出现的问题 给出相应的解决方法 这给网络环 境的管理与维护提供了非常宝贵的信息 1 21 2局域网监听技术的发展局域网监听技术的发展 1 2 1 局域网监听技术原理 局域网监听的基本原理是数据在局域网环境下进行传输时 包含物理地址的 帧数据能送达到线路上的每一台主机 当数据到达一台主机的网卡时 在正常情 况下 网卡读取数据帧 并进行检查 如果数据帧中所包含的物理地址和本机的 物理地址或者广播地址相同 则将该数据帧交由 IP 层进行处理 否则就将该数 据帧丢弃 当主机将该网卡置于混杂模式时 所有的数据帧都将交由 IP 层进行处理 并不会发生因物理地址不符而将该数据帧丢弃的情况 也就是说 在局域网环境 下同一根线缆上传输的所有数据都会被该主机接收到 进而可以将所有接收到的 数据进行分析 从而得出用户所需要的数据 2 3 1 2 2 局域网监听的实现方法 要在局域网中监听 就需要主机工作在监听模式下 需要向网络接口发出 I O 控制命令 将其设置成监听模式 在 Unix 系统中 需要超级用户权限来发送命 令 但在 Windows 系统中 就没这个限制 这种工作并不复杂 目前有太多的 工具软件可以做到这一点 在很多黑客网站或者从事网络安全管理的网站都能找 到 在 Unix 环境下 监听工具非常多 如 Sniffit Snoop Dsniff 等都是常见的 他们都免费发布源代码 可以进行研究 而在 Windows 环境下 常用的网络监 听工具当然是著名的 Sniffer pro 了 实际上很多人都是用它在 Windows 环境下抓 包来分析 4 1 Sniffit Sniffit 可以运行在 Solaris SGI 和 Linux 等平台上 是由 Lawrence Berkeley Laboratory 开发的一个免费的网络监听软件 举例说明 Sniffit a p21 t xxx xxx xxx xxx 监听流向机器 xxx xxx xxx xxx 的 21 端口 FTP 的信息 并以 ASCII 显示 5 2 Sniffer pro 通过对用监听工具捕获的数据帧进行分析 可以很容易的发现敏感信息和重 要信息 例如 在使用 Sniffer pro 对局域网进行一段时间的监听后 分析所得的 数据 就能直接看到一些在监听期间该网用户名和口令 都以明码显示 由此也 可以看到局域网监听技术如果用于不正当的目的会有多大的危害 6 第第 2 2 章章 网络传输技术概述网络传输技术概述 2 12 1网络传输模型网络传输模型 计算机网络采用两种传输模型进行传输 协议模型和参数模型 协议模型提 供了与特定协议族结构精确匹配的模型 TCP IP 模型描述了 TCP IP 协议族中每 个协议层实现的功能 因此属于协议模型 参考模型为各类网络协议和分服务之间保持一致性提供了通用的参考 参考 模型的主要用途是帮组人们更清晰地理解涉及的功能和过程 开放式系统互联 OSI 模型是一种参考模型 2 1 1 TCP IP 模型 TCP IP 是 Transmission Control Protocol Internet Protocol 的简写 中译名为传 输控制协议 因特网互联协议 又名网络通讯协议 是 Internet 最基本的协议 Internet 国际互联网络的基础 由网络层的 IP 协议和传输层的 TCP 协议组成 TCP IP 定义了电子设备如何连入因特网 以及数据如何在它们之间传输的标准 协议采用了 4 层的层级结构 每一层都呼叫它的下一层所提 a 供的协议来完成自 己的需求 通俗而言 TCP 负责发现传输的问题 一有问题就发出信号 要求重 新传输 直到所有数据安全正确地传输到目的地 而 IP 是给因特网的每一台电 脑规定一个地址 7 1 网络接口层 物理层是定义物理介质的各种特性 1 机械特性 2 电子特性 3 功能特性 4 规程特性 数据链路层是负责接收 IP 数据包并通过网络发送 或者从网络上接收物理 帧 抽出 IP 数据包 交给 IP 层 ARP 是正向地址解析协议 通过已知的 IP 寻找对应主机的 MAC 地址 RARP 是反向地址解析协议 通过 MAC 地址确定 IP 地址 比如无盘工作站 还有 DHCP 服务 常见的接口层协议有 Ethernet 802 3 Token Ring 802 5 X 25 Frame relay HDLC PPP ATM 等 2 网络层 负责相邻计算机之间的通信 其功能包括三方面 处理来自传输层的分组发送请求 收到请求后 将分组装入 IP 数据报 填 充报头 选择去往信宿机的路径 然后将数据报发往适当的网络接口 处理输入数据报 首先检查其合法性 然后进行寻径 假如该数据报已到达 信宿机 则去掉报头 将剩下部分交给适当的传输协议 假如该数据报尚未到达 信宿 则转发该数据报 处理路径 流控 拥塞等问题 网络层包括 IP Internet Protocol 协议 ICMP Internet Control Message Protocol 控制报文协议 ARP Address Resolution Protocol 地址转换协议 RARP Reverse ARP 反向地址转换协议 IP 是网络层的核心 通过路由选择将下一条 IP 封装后交给接口层 IP 数据 报是无连接服务 ICMP 是网络层的补充 可以回送报文 用来检测网络是否通畅 Ping 命令就是发送 ICMP 的 echo 包 通过回送的 echo relay 进行网络测试 3 传输层 提供应用程序间的通信 其功能包括 一 格式化信息流 二 提供可靠传 输 为实现后者 传输层协议规定接收端必须发回确认 并且假如分组丢失 必 须重新发送 即耳熟能详的 三次握手 过程 从而提供可靠的数据传输 传输层协议主要是 传输控制协议 TCP Transmission Control Protocol 和用 户数据报协议 UDP User Datagram protocol 4 应用层 向用户提供一组常用的应用程序 比如电子邮件 文件传输访问 远程登录 等 远程登录 TELNET 使用 TELNET 协议提供在网络其它主机上注册的接口 TELNET 会话提供了基于字符的虚拟终端 文件传输访问 FTP 使用 FTP 协议来 提供网络内机器间的文件拷贝功能 应用层协议主要包括如下几个 FTP TELNET DNS SMTP NFS HTTP FTP File Transfer Protocol 是文件传输协议 一般上传下载用 FTP 服务 数 据端口是 20H 控制端口是 21H Telnet 服务是用户远程登录服务 使用 23H 端口 使用明码传送 保密性差 简单方便 DNS Domain Name Service 是域名解析服务 提供域名到 IP 地址之间的转 换 使用端口 53 SMTP Simple Mail Transfer Protocol 是简单邮件传输协议 用来控制信件的 发送 中转 使用端口 25 NFS Network File System 是网络文件系统 用于网络中不同主机间的文 件共享 HTTP Hypertext Transfer Protocol 是超文本传输协议 用于实现互联网中的 WWW 服务 使用端口 80 8 2 1 2 OSI 模型 OSI 是 Open System Interconnect 的缩写 意为开放式系统互联 一般都叫 OSI 参考模型 是 ISO 国际标准化组织 组织在 1985 年研究的网络互联模型 该体系结构标准定义了网络互连的七层框架 主要如下 1 应用层 Application Layer 应用层是 OSI 参考模型的顶层 该层通过应用程序来完成用户的需求 是用 户与网络的接口 主要完成文件传输 收发电子邮件等功能 2 表示层 Presentation Layer 早期的表示层用来转化字符数据的编码等显示相关功能 现在由于应用层能 完成一部分表示层功能 因此功能有所淡化 3 会话层 Session Layer 会话指的是用户与用户的连接 会话层负责在两台计算机之间建立 管理和 终止通信 就如同两台计算机之间的对话 会话层因此而得名 4 传输层 Transport Layer 传输层是整个 OSI 模型中最关键的一层 是模型中的中心层 充当心脏的作 用 在它之下的层级实现通信 而它之上的层级则对通信进行管理 它负责数据 传输和控制 提供端到端的数据控制 传输层独立于物理网络运行 另外它还负 责数据重传任务 5 网络层 Network Layer 网络层定义了通信的协议 它把逻辑地址转换成物理地址 同时 网络层还 提供选择路由功能 路由器的功能就在这一层实现 它为传输层提供支持 6 数据链路层 Data Link Layer 数据链路层位于物理层与网络层之间 在数据链路层上传输的数据为帧 该 层的目的是保证在节点之间传输数据帧的正确性 7 物理层 Physical Layer 物理层是 OSI 参考模型的最底层 顾名思义 它为数据传输建立物理连接 完成通过物理线路在两个节点间传输比特流 9 2 1 3 TCP IP 模型和 OSI 模型的关系 TCP IP 协议并不能够与 OSI 模型完全匹配 TCP IP 不是使用 7 层 而是使 用 4 层 它通常也叫做 Internet 协议套件 它分为下面的 4 层 1 网络接口层 2 互连网层 3 传输层 4 应用层 这 4 层的每一层对应于 OSI 模型的一层或者多个层 表 2 1 TCP IP 协议簇和 OSI 对应层级比较 OSI 层级TCP IP 协议功能 应用层TFTP HTTP SNMP FTP 等文件传输 电子邮件 文件服务等 表示层无数据格式化 代码转换 数据加密 会话层无解除或建立别的连接点联系 传输层TCP UDP提供端对端的接口 网络层IP ICMP OSPF ARP 等为数据包选择路由 数据链路层SLIP PPP MTU RARP 等传输有地址的帧以及错误检测功能 物理层ISO2110 IEEE802 等二进制形式在物理媒体上传输数据 TCP IP 协议簇对应 OSI 的相应层级 如下图所示 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 TELNET SMTP TFTP FTP TCPUDP IP ICMP ARP OSI参考模型TCP IP协议簇 图 2 1 TCP IP 协议簇对应 OSI 的相应层级 2 22 2主要数据包结构主要数据包结构 2 2 1 以太网帧格式 以太网帧是 OSI 参考模型数据链路层的封装 它是对网络层传输的数据包加 上帧头帧尾进行封装 从而构成了可被数据链路层识别的数据帧 在以太网帧当 中 帧头和帧尾的数据大小是固定不变的 但是因为被封装的数据包大小是可变 的 所以以太网帧的大小是可变不固定的 大小范围在 64 1518 字节之间 以太网 V2 的 MAC 帧格式 该标准由 5 个字段组成 目的地址 源地址 类型 数据报 效验 前导码 包括同步码 用来使局域网中的所有节点同步 7 字节长 和帧标 志 帧的起始标志 1 字节 两部分 目的地址 接收端的 MAC 地址 6 字节长 源地址 发送端的 MAC 地址 6 字节长 类型 数据包的类型 即上层协议的类型 2 字节长 数据 被封装的数据包 46 1500 字节长 校验码 错误检验 4 字节长 分析每一帧可以得到此数据包的源 MAC 地址和目的 MAC 地址 并且可以 得到 IP 数据报的完整内容 如果是 ARP 协议则没有 IP 数据包 IP 数据报的第 4 至 7 位是 IP 首部长度 该字段可以用来准确定位上层协议的起始位置 第 10 字节是协议字段 指出该 IP 数据报携带的数据使用何种协议 以太网头数据结构描述如下 typedef struct ethernet header u char dstmac 6 目标 mac 地址 u char srcmac 6 源 mac 地址 u short eth type 以太网类型 ethernet header 10 2 2 2 IP 数据包格式 图 2 2 IP 数据报首部的组成 表 2 2 IP 数据包总体结构 数据包 IP 首部信息首部 如 TCP UDP 首部 数据 以太网 V2 标准的主要特点是通过类型域标识了封装在帧里的数据包所采用 的协议 类型域是一个有效的指针 通过它 数据链路层就可以承载多个上层 网络层 协议 但是 它的缺点是没有标识帧长度的字段 根据前面的定义 数据包一般都从数据链路层获取 因此 本软件按照获取 数据格式的先后 先处理链路层之上的数据帧 之后分别是网络层 传输层以及 应用层上的数据 在对数据链路层上的太网帧进行分析之后 我们就可以得到 IP 数据包 IP 数据包数据结构描述如下 typedef struct ip header u char ihl 4 首部长度 4 bits u char ver 4 版本 4 bits u char tos 服务类型 u short tlen 总长度 u short identification 标识 u short fo 13 片偏移 13 bits u short flags 3 标志 3 bits u char ttl 生存时间 u char proto 协议 u short crc 首部检验和 ip address saddr 源地址 ip address daddr 目标地址 u int op pad 可选 填充 ip header 2 2 3 TCP 数据报 图 2 3 TCP 数据报的组成 源端口和目的端口字段 各占 2 字节 端口是传输层与应用层的服务接口 传输层的复用和分用功能都要通过端口才能实现 序号字段 占 4 字节 TCP 连接中传送的数据流中的每一个字节都编上一 个序号 序号字段的值则指的是本报文段所发送的数据的第一个字节的序号 确认号字段 占 4 字节 是期望收到对方的下一个报文段的数据的第一个 字节的序号 数据偏移 占 4bit 它指出 TCP 报文段的数据起始处距离 CP 报文段的起 始处有多远 数据偏移 的单位不是字节而是 32bit 字 4 字节为计算单位 保留字段 占 6bit 保留为今后使用 但目前应置为 0 紧急比特 URG 当 URG 1 时 表明紧急指针字段有效 它告诉系统此 报文段中有紧急数据 应尽快传送 相当于高优先级的数据 确认比特 ACK 只有当 ACK 1 时确认号字段才有效 当 ACK 0 时 确认号无效 复位比特 RST Reset 当 RST 1 时 表明 TCP 连接中出现严重差错 如由于主机崩溃或其他原因 必须释放连接 然后再重新建立运输连接 同步比特 SYN 同步比特 SYN 置为 1 就表示这是一个连接请求或连接 接受报文 终止比特 FIN 用来释放一个连接 当 FIN 1 时 表明此报文段的发送 端的数据已发送完毕 并要求释放运输连接 窗口字段 占 2 字节 窗口字段用来控制对方发送的数据量 单位为字节 TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小 然后通知对 方以确定对方的发送窗口的上限 检验和 占 2 字节 检验和字段检验的范围包括首部和数据这两部分 在 计算检验和时 要在 TCP 报文段的前面加上 12 字节的伪首部 紧急指针字段 占 16bit 紧急指针指出在本报文段中的紧急数据的最后一 个字节的序号 选项字段 长度可变 TCP 首部可以有多达 40 字节的可选信息 用于把 附加信息传递给终点 或用来对齐其它选项 填充字段 这是为了使整个首部长度是 4 字节的整数倍 TCP 数据报的数据结构描述如下 typedef struct tcp header 20 bytes default u short sport 源端口 u short dport 目标端口 u long seqno Sequence no u long ackno Ack no u char reserved 1 4 保留 6 位中的 4 位首部长度 u char offset 4 tcp 头部长度 u char flag 6 6 位标志 u char reserved 2 2 保留 6 位中的 2 位 u short win u short checksum u short uptr tcp header 2 32 3WinPCap 简介简介 WinPCap 是在 Windows 环境下的链路层网络访问的行业标准工具 它允许应用程序绕过协议栈进行数据捕获和发送 并且还有其他的功能 其 中包括内核级别的包过滤 网络流量统计以及远程数据包捕获等功能 WinPCap 扩展了操作系统所提供的低级别的网络访问功能 它也提供了一个 库用于更方便的访问网络层级中的底层 该库也包含了 UNIX 下的众所周知的 libpcap API 的 Windows 版本 11 12 WinPCap 主要提供以下功能 1 捕获原始数据包 无论它是发往某台机器的 还是在其他设备 共享媒介 上进行交换的 在数据包发送给某应用程序前 根据用户指定的规则过滤数据包 将原始数据包通过网络发送出去 2 设置 filter 只捕获自己敢兴趣的数据包 3 方便的把捕获的数据包输出到文件和从文件输入 4 统计网络流量 2 3 1 WinPCap 主要函数 1 pcap if t 结构体 表示适配器列表中的一项 struct pcap if struct pcap if next char name name to hand to pcap open live char description textual description of interface or NULL struct pcap addr addresses bpf u int32 flags PCAP IF interface flags 2 pcap findalldevs ex 获取适配器列表 返回 0 表示正常 1 表示出错 int pcap findalldevs ex char source struct pcap rmtauth auth pcap if t alldevs char errbuf 3 pcap freealldevs 释放适配器链表空间 void pcap freealldevs pcap if t 4 pcap open 通过名字打开适配器 pcap t pcap open const char source int snaplen int flags int read timeout struct pcap rmtauth auth char errbuf 5 pcap compile 编译数据包过滤器 将程序中高级的过滤表达式 转换成 能被内核级的过滤引擎所处理的东西 对于 bpf program 结构体我们只需要知道 它是 pcap compile 最终要得到用来过滤的东西 13 int pcap compile pcap t struct bpf program const char int bpf u int32 6 pcap setfilter 在捕获过程中绑定一个过滤器 至于 pcap 结构体 它是一个已打开的捕捉实例的描述符 这个结构体对用 户来说是不透明的 它通过 wpcap dll 提供的函数 维护了它的内容 int pcap setfilter pcap t struct bpf program 7 pcap next ex 直接获得一个数据包 非回调方法 pcap pkthdr 结构体表 示 dump 文件中数据包首 int pcap next ex pcap t p struct pcap pkthdr pkt header const u char pkt data 8 pcap dump open 打开一个文件来写入数据包 而 pcap dumper 结构体表 示 libpcap 存储文件的描述符 pcap dumper t pcap dump open pcap t const char typedef struct pcap dumper pcap dumper t 2 3 2 WinPCap 过滤器表达式 WinPCap 过滤器语法基于一个声明式的谓词语法 过滤器则是一个包含了过 滤表达式的 ASCII 字符串 Pcap compile 获取这个表达式并将其翻译为一个内 核级包过滤器的程序 这个过滤表达式用于选择需要 dump 的数据包 如果没有给定的过滤表达式 内核级过滤引擎将会接收所有的数据包 否则 只有带入表达式之后其值为 true 的包才会被接收 主要规则如下 1 表达式支持逻辑操作符 可以使用关键字 and or not 对子表达式进行 组合 同时支持使用小括号 2 基于协议的过滤要使用协议限定符 协议限定符可以为 ip arp rarp tcp udp 等 3 基于 MAC 地址的过滤要使用限定符 ether 代表以太网地址 当该 MAC 地址仅作为源地址时表达式为 ether src mac addr 仅作为目的地址时 表 达式为 ether dst mac addr 既作为源地址又作为目的地址时的表达式为 ether host mac addr 此外应注意 mac addr 应该遵从 00 E0 4C E0 38 88 的格式 否则编译 过滤器时会出错 4 基于 IP 地址的过滤应该使用限定符 host 代表主机地址 当该 IP 地址 仅作为源地址时过滤表达式应为 src host ip addr 仅作为目的地址时的表达式为 dst host ip addr 既作为源地址又作为目的地址时表达式为 host ip addr 5 基于端口的过滤应使用限定符 port 例如仅接收 80 端口的数据包则表 达式为 port 80 14 下边给出两个例子 例 1 只捕获 arp 或 icmp 数据包 过滤表达式 arp or ip and icmp 例 2 捕获主机 192 168 1 23 与 192 168 1 28 之间传递的所有 UDP 数据包 过滤表达式 ip and udp and host 192 168 1 23 or host 192 168 1 28 第第 3 3 章章 需求分析需求分析 3 13 1用户需求用户需求 网络攻击严重威胁到了用户的上网安全 从攻击者的角度而言 攻击者可以 利用网络抓包技术非法获取网络中传输的大量敏感信息 如用户的隐私 密码等 对网络安全极具威胁性 从防护的角度而言 网络抓包技术从网络传输的最底层 把握整个传输数据的来龙去脉 这无疑给发现非法攻击者提供了诸多有价值的信 息 并可以根据这些信息提早最好防护措施 从而避免产生灾难性的后果 我们 通过对该软件对数据进行分析利用 维护网络的安全稳定 因此提出了以下需求 1 能够捕获网络数据包 并能对所捕获的数据包进行分析 2 能定制一定的过滤规则 过滤掉一部分不需要的数据 从而降低分析复杂 度 3 界面友好 操作简单 4 程序健壮 不易崩溃 3 23 2功能需求功能需求 目前局域网监听抓包技术趋于多样化 本文实现的方式是将网卡设备置于混 杂模式 这样网卡可以直接接受数据链路层的数据 为了实现用户所提出的各种 需求 抓包工具必需达到以下功能 1 运行于数据链路层 监视网络状态 对数据帧进行捕捉和统计 为优化网 络性能 增强系统安全性提供充分有效的依据 此时的工作网卡处于混杂模式 2 能够对网络中捕捉的数据包解码 用于故障分析 如数据包的编号 时间 戳 数据包长度 协议类型 源 IP 地址 目的 IP 地址 源端口号 目的端口号 源 MAC 地址 目的 MAC 地址等相关信息 3 友好的图形化界面 不需要复杂的命令 大部分功能通过鼠标点击就可达 到 操作简单 方便 4 用户能够自定义过滤规则 使数据包的捕获更加精准和具有灵活性 增强 了软件功能以及与用户的交互能力 5 程序带有流量统计和包流量统计功能 使得能够实时观测网络情况 3 33 3性能需求性能需求 为了保证良好的用户体验 程序界面的相应时间必须控制在一个低的范围内 程序执行效率必须要高 速度必须要快 由于该程序必须要做到在捕获数据的同时能与用户进行交互 因此需采用多 线程程序设计 保证在捕获数据的同时不会造成界面假死 给用户造成程序卡死 的错觉 除此之外 还提出以下要求 1 数据精确性 捕获到的数据包并不仅仅是单纯的数据信息 而是包含有 IP 头 TCP 头等信息头的最原始的数据信息 这些信息保留了它在网络传输时 的原貌 为分析网络信息提供了重要资料 2 适应范围 一般情况下 大多数的抓包工具至少能够分析下面的协议 标 准以太网 TCP UDP ICMP ARP IGMP 等 第第 4 4 章章 系统设计系统设计 4 14 1开发环境开发环境 本系统基于 windows 7 操作系统 采用 MicroSoft Visual Stuido 2008 编 译环境 并使用微软的基础类库 MFC 和 WinPCap 库进行开发 同时采用多线程程 序设计 防止程序进行网络包捕获时造成界面假死 标准开发环境 1 标准 PC 一台 2 CPU P4 1 8GHZ 及其以上 3 内存 256MB 及其以上 4 操作系统 Windows XP Vista 7 8 5 处于局域网环境 6 动态链接库和驱动程序 WinPCap4 1 2 exe 7 集成开发环境 Microsoft VisualStudio 2008 4 24 2系统结构系统结构 4 2 1 结构描述 本监听软件需要实现网卡初始化 数据包捕获 数据包分析 数据包过滤等 基本功能 因此 按照所需功能 划分出 4 个相应功能模块 4 2 2 系统架构 本系统主要分 4 个模块进行实现 分别是网卡初始化模块 过滤器模块 数 据包捕获模块以及数据包分析模块 组成结构如下所示 网卡初始化 设置过滤器 数据包捕获数据包分析 过滤器 图 4 1 系统架构图 4 34 3设计思路设计思路 根据前面的网络抓包技术的原理以及利用 WinPCap 设计程序的一般步骤 本次设计抓包工具的思路如下 首先获取网络设备 在程序中显示设备名称 通过在过滤器对话栏的中输入过滤字符串来确定过滤器 默认情况不进行过 滤 然后打开设备 并设置网卡处于混杂模式 启动捕获线程 不断地接收数据 包和分析数据包 监听的结果显示于 ListCtrl 控件中 包括以下各项 编号 接收时间 数据 包长度 源地址 目的地址 协议类型等 通过点击 ListCtrl 中捕获的包可以绘制出包的分析树以及显示出包得二进制 文本数据 通过按钮来控制监听线程的开始和结束 4 44 4基于基于 WinPCap 开发应用程序开发应用程序 在 Windows 平台下使用 WinPCap 很容易开发出基于原始数据包的各种网 络应用软件 使用 WinPCap 时 可以调用包含在 Pactet dll 中的低级函数 也可 以调用由 Wpcap dll 提供的高级函数 一般情况下 我们都用 wpcap dll 提供的函 数 因为它的功能更强 使用也更方便 且很容易移植到 Unix 系统下 图 4 2 是 一个标准的基于 WinPCap 的应用程序流程 Pcap lookupdev 返回设备 Pcap open live pcap open offline 打开设备或文件准备读取数据 Pcap compile 编译过滤规则 Pcap setfilter 设置过滤规则 Pcap loop 循环抓取网络数据 包 Pcap close 关闭并返回 图 4 2 基于 WinPCap 应用的基础流程 本程序使用 WinPCap 提供的 API 来实现 通过将网卡设置为混杂模式 从 数据链路层获取经过网卡的数据包 在局域网环境中捕获整个网段的数据 4 54 5程序流程程序流程 根据上一节的程序设计思路 我们可以得出相应的程序流程图 通过程序的 顺序 循环以及选择这 3 种控制流程 可以提高程序质量和编程效率 使程序具 有良好的可读性 可靠性 可维护性以及良好的结构 有利于后面程序的编写 整个项目的运行流程如下图所示 开始初始化网卡得到网卡句柄选择网卡设置过滤器 打开网卡 接收数据停止接收 释放设备以及缓冲 区 是 从缓冲区读取数据 包 否分析数据包 结束 图 4 3 程序流程图 第第 5 5 章章 系统实现系统实现 本程序捕获数据的关键在于监听网络数据流 利用 WinPCap 库抓取网络数 据包 并分析成能被用户所理解的信息 本章节主要讨论程序核心功能的实现 即如何利用 WinPCap 库捕获网络数据包 并将其分析成用户所需要的数据的过 程 5 15 1总体设计总体设计 1 利用 pcap findalldevs ex 函数 载入主机的网卡列表 得到网卡的基本 信息 如网卡名等 2 在网卡列表中选择一个正常运行的网卡 3 设置过滤器 过滤器是通过 pcap compile 相 pcap setfilter 函数来实现 的 4 按下开始监听按钮之后 开启一个捕获线程 该线程使用函数 pcap open 来打开一个网卡 打开一个网卡之后 判断是否需要设置一 个过滤器 之后再使用 pcap next ex 函数来获得缓冲区内的下一个数据 包 它包含一个网络适配器的描述符和两个可以初始化和返回给用户的指 针 一个指向 pcap pkthdr 结构体 另一个指向数据报数据的缓冲 5 将捕获到的数据包写入到一个临时 dump 文件中 使用 pcap dump 函数 实现 6 点击数据包列表里的数据包之后 会开启一个分析数据包线程 该线程 通过定位数据包在列表里的编号 并利用该编号从临时 dump 中通过 pcap next ex 函数获取该数据包的详细信息 并将其分析成数据树 是 用户能直观的看到该数据包的内容组成部分 7 通过 pcap freealldevs 函数来释放所有网卡句柄 5 25 2模块设计模块设计 5 2 1 网卡初始化 网卡初始化过程定义在窗口 OnInitDialog 方法中 随着窗口的初始化方法 的执行 把所有网卡设备都写入窗口的下拉列表中 完成初始化 以供用户选择 其中的网卡 实现如下 alldevs myPcap GetAllAdapter for d alldevs d d d next 往 combobox 插入网卡名 m devComboBox InsertString m devComboBox GetCount CString d description pcap freealldevs d 释放所有网卡设备 5 2 2 数据包捕获 根据系统总体设计 利用 WinPCap 的数据捕获技术对数据链路层上的数据 帧进行捕获 为了在 Windows 平台实现网络数据包的捕获功能 首先要把网卡 设置成混杂模式 从而可以获取到整个局域网内传输的数据 利用 WinPCap 的 相应函数 可以把网卡置于混杂模式 直接从数据链路层获取数据帧 具体实现 如下 void CSnifferDlg OnBnClickedButton1 开始监听按钮事件 TODO Add your control notification handler code here GetModuleFileName 0 FilePath 255 CapFilePath FilePath CapFilePath CapFilePath Left CapFilePath ReverseFind CapFilePath tmpData CAP 文档存储设置 int devnum m devComboBox GetCurSel if CB ERR devnum AfxMessageBox T 清先选择网络设备 return 开始一个监听线程 hCapThread AfxBeginThread CapThread LPVOID d UINT CapThread LPVOID lpParameter 监听线程 参数为网卡句柄 if adhandle pcap open devnow name 设备名 65536 65536 保证能捕获到不同数据链路层上的每个 数据包的全部内容 PCAP OPENFLAG PROMISCUOUS 混杂模式 1000 读取超时时间 NULL 远程机器验证 errbuf 错误缓冲池 NULL errstring Format T Unable to open the adapter s is not supported by WinPcap CString devnow name AfxMessageBox errstring pcap freealldevs devnow return 1 if devnow addresses NULL 获取接口第一个地址的掩码 netmask struct sockaddr in devnow addresses netmask sin addr S un S addr else 如果这个接口没有地址 那么我们假设这个接口在 C 类网络中 netmask 0 xffffff if pcap compile adhandle AfxMessageBox errstring 释放设备列表 pcap freealldevs devnow return 1 if pcap setfilter adhandle num time t local tv sec struct tm ltime char timestr 16 时间戳转换 local tv sec header ts tv sec ltime localtime strftime timestr sizeof timestr H M S ltime char temp 50 itoa num temp 10 处理以太网首部 ethernet header ethheader ethernet header pkt data char protocaltype 10 C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年炼钢高级工考试必-备知识点
- 2025年初创公司市场营销策略模拟题与答案详解集合
- 2025年外贸业务员面试技巧及模拟题
- 2025年特岗教师招聘笔试备考策略与实战模拟题集
- 2025年初入股市投资者必修课股市实战模拟题库
- 创意绘画教学课件
- 2025年特岗教师招聘考试初中历史模拟试题详解
- 2025年新闻编辑高级职位面试模拟题及应对技巧解析指南
- 2025年特岗教师招聘初中心理健康科目知识点梳理与模拟题训练
- 2025年机械设计工程师面试宝典与预测题
- 2025年留疆战士考试题库及答案
- 2025年高考英语新课标Ⅱ卷点评及2026备考方向 课件
- GB/T 7757-2009硫化橡胶或热塑性橡胶压缩应力应变性能的测定
- 龙应台《放学》记叙文阅读训练及答案
- 智能客服趋势发展白皮书:智能客服预见未来课件
- 2009-2022历年江苏省镇江市丹阳市事业单位考试《综合知识和能力素质(计算机类岗位)》真题含答案2022-2023上岸必备带详解版3
- 工业园区消防安全标准化
- 项目造价咨询计划表
- 人教版高中化学必修一离子方程式双线桥单线桥专项练习
- 幼儿园玩教具操作与活动指导
- 敏捷项目管理实践指南
评论
0/150
提交评论