毕业设计-局域网监听软件的设计与开发—论文内容摘要:

来很可能会提出来的要求,这样做的目的是在设计过程中 对系统将来可能的扩充和修改预做准备,以便一旦需要时能比较容易地进行一些扩充和修改。 本软件虽然能够捕获到本网段的数据,并可以对捕获的数据进行简单的分析,还可以进行指定对象的监听和将结果显示出来等功能,但在实际的运用中,用户肯定会遇到更多的问题,以下是对本软件的扩充性能的一些初步预计: ( 1)自动获取本机和网关的 IP 和 MAC地址; ( 2)监视所有主机的收发邮件记录收发邮件的 Email 地址、日期、主题等; ( 3)对捕获到的数据进一步分析,得到非法数据; ( 4)可以对局域网内的计算机进行一些简单的操作。 3 理论 基础与相关工具介绍 网络监听原理介绍 Ether协议 (以太网协议) 的工作方式是将要发送的数据包发往连接在一起的所有主机。 在包头中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的那台主机才能接收到 数据 包,但是当主机工作在监听模式下 , 不管数据包中的目标物理地址是什么,主机都将可以接收到。 数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的 IP 层交给网络接口,也就是所说的数据链路层。 网络接口不会识别 IP 地址的。 因此, 在网络接口由 IP 层 传输过 来的带有 IP 地址的数据包 将 增加了一部分以太帧的帧头的信息。 在帧头中,有两个域分别为只有网络接口才能 识别的源主机和目的主机的物理地址 , 这是一个 48位的地址,这个 48位的地址是与 IP 地址相对应的,换句话说就是一个 IP 地址也会对应一个物理地址。 传输数据时,包含物理地址的帧从网络接口(网卡)发送到物理的线路上,如果局域网是由一条粗缆或细缆连接而成,则数字信号在电缆上传输,能够到达线路上的每一台主机。 当使用集线器时,由集线器再发向连接在集线器上的每一条线路,数字信号也能到达连接在集线器上的每一台主机。 当数字信号到达一台主机的 网络接口时,正常情况下,网络接口读入数据帧,进行检查,如果数据帧中携带的物理地址是自己的或者是广播地址,则将数据帧交给上层协议软件,也就是 IP 层软件,否则就将这个帧丢弃。 对于每一个到达网络接口的数据帧,都要进行这个过程。 当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同的掩码、 IP 地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可以被接收到。 以太网上的数据帧主要涉及 TCP/IP 协议,针对以 下几个协议的分析: IP,ARP, RARP, IPX,其中重点在于 IP 和 ARP 协议,这两个协议是多数网络协议的基础。 在本软件的监听过程中,将监听到的数据包利用工具和所编写的方法进行逐层分析,并解析出每一层、每一协议、每一字段的数据,从中得到自己想要的信息,最后将其显示出来,并进行动态的更新。 TCP/IP 的层次结构 OSI 与 TCP/IP体系结构的比较 OSI( Open System Interconnect)是 开放式 系统 互联 , 为了解决不同体系结构的网络的互联问题,国际标准化组织 ISO于 1981年制定了开放系统互连参考模型( Open System Interconnection Reference Model, OSI/RM)。 OSI把 网络 通信的工作分为 7层,它们由低到高分别是物理层( Physical Layer),数据链路层( Data Link Layer),网络层 (Network Layer),传输层( Transport Layer),会话层( Session Layer),表示层( Presen tation Layer)和应用层( Application Layer)。 每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持。 TCP/IP 协议 (Transmission Control Protocol/Inter Protocol)是 传输控制 /网际协议,这个协议是 Inter国际互联网络的基础。 TCP/IP通讯协议采用了 4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。 这 4层分别为: ( 1) 应用层:应用程序间沟通的层,如简单电子邮件传输( SMTP)、文件 传输协议( FTP)、网络远程访问协议( Tel)等 ; ( 2) 传输层:在此层中 ,它提供了节点间的数据传送服务,如传输控制协议( TCP)、用户数据报协议( UDP)等, TCP和 UDP 给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收 ; ( 3) 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议( IP) ; ( 4) 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ether、 Serial Line 等)来传送数据。 TCP/IP各层的描述如表 1所示。 表 1 TCP/IP 各层描述 TCP/IP 的描述 主要协议 主要功能 应用层 Http、 Tel、 FTP和 等 负责把数据传输到传输层或接收从传输层返回的数据 传输层 TCP 和 UDP 主要为两台主机上的应用程序提供端到端的通信, TCP 为两台主机提供高可靠性的数据通信。 它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。 UDP 则为应用层提供一种简单的服务。 它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据能到达另一端。 网络层 ICMP、 IP 和 IGMP 有时称作互联网层,主要为数据包选择路由,其中 IP 是 TCP/IP协议族中最核心的协议。 所有的 TCP、 UDP、 ICMP 及 IGMP数据都以 IP 数据报格式传输 链路层 ARP、 RARP 和设备驱动程序及接口卡 发送时将 IP 包作为 帧 发送;接收时把接收到的位组装成 帧 ;提供链路管理;错误检测等 OSI模型与 TCP/IP协议 的 区别 如下: ( 1) TCP/IP 一开始就考虑到多种异构网的互联问题,并将网际协议 IP 作为 TCP/IP的重要组成部分。 但 ISO和 CCITT最初只考虑到全世界都使用一种统一的标准公用 数据网将各种不同的系统互连在一起。 后来, ISO认识到了网际协议 IP 的重要性,然而已经来不及了,只好在网络层中划分出一个子层来完成类似 TCP/IP中的 IP 的作用; ( 2) TCP/IP一开始就对面向连接服务和无连接服务并重,而 OSI在开始只强调面向连接这一种服务。 一直到很晚 OSI 才开始制定另一种无连接服务的有关标准; ( 3) TCP/IP较早就有较好的网络管理功能,而 OSI到后来才开始考虑这个问题。 OSI 与 TCP/IP体系结构的比较如图 2所示。 图 2 OSI 与 TCP/IP 体系结构的对比 TCP/IP 四层协议的表示方法举例 图 3 TCP/IP 四层协议的表示方法举例 在许多文献中,也常见到 TCP/IP 的四层协议的表示方法。 例如,在讨论两个主机通过两个网络用路由器连在一起时,可以使用如图 3所示的层次关系。 图3中的逻辑链路控制和物理层都简化为网络接口层。 实际上,现在插在主机中的网络接口板上的硬件和软件就是实现了数据链路层和物理层这两层的功能。 应当注意的是,在网络互连中起重要作用的路由器则没有应用层和运输层,其数据链路层和物理层也是在网络接口板上实现的。 使用 TCP/IP进行通信的示意图 在 TCP/IP的应用层协议使用的是客户-服务器方式。 客户( Client)和服务器( Server)都是指通信中所涉及的两个应用进程。 客户-服务器方式所描述的是进程之间服务和被服务的关系。 当 A 进程需要 B 进程的服务时就主动呼叫 B进程,在这种情况下, A 是客户而 B 是服务器。 这里最重要的特征就是:客户是服务请求方,服务器是服务提供方。 客户与服务器的通信关系一旦建立,通信就可是双向的,客户和服务器都可 以发送和接收信息,如图 4所示。 图 4 客户进程和服务器进程使用 TCP/IP 协议进行通信 Winpcap 简介 Winpcap( windows packet capture) 是 Windows 平台下一个免费,公共的网络访问系统。 开发 Winpcap这个项目的目的在于为 win32应用程序提供访问网络底层的能力。 它提供了以下的各项功能: ( 1) 捕获原始数据报,包括在共享网络上各主机发送 /接收的以及相互之间交换的数据报 ; ( 2) 在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉; ( 3) 在网络上发送原始的数据报; ( 4) 收集网络通信过程中的统计信息。 Winpcap 的主要功能在于独立于主机 协议(如 TCP/IP)而发送和接收原始数据报。 也就是说, Winpcap不能阻塞 、 过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。 因此,它不能用于 服务质量 QoS 调度程序或个人防火墙。 目前, Winpcap开发的主要对象是 Windows NT/2020/XP,这主要是因为在使用 Winpcap 的用户中只有一小部分使用 Windows 95/98/Me,并 且微软 也已经放弃了对 win9x的开发。 其实 Winpcap中的面向 9x系统的概念和 NT 系统的非常相似,只是在某些实现上有点差异,比如说 9x 只支 持 ANSI编码,而 NT系统则提倡使用 Unicode编码。 Winpcap 提供给用户两个不同级别的编程接口:一个基于 libpcap 的,另一个是 较底层的。 对于一般的要与 UNIX 平台上 libpcap兼容的开发来说,使用 是当 然的选择。 下面几个库是与 lipcap相关的:—— 数据包的发送构造过程 ; libnids— — 实现了 ids的一些框架 ; libicmp—— icmp数据包处理。 操作系统拦截数据包的技术有很多,现在很多文章都是介绍 编写 IM DRIVER阿 在 NDIS中间层对 MINIPORT(网卡驱动程序)和协议驱动程序之间 的数据包进行拦截。 这是微软提供的一种技术但编写该过滤程序拦截程序非常 地复杂,安装也很麻烦。 现在 简单的介绍基于 NDIS 包拦截技术。 NDIS 协议驱动程序是通过填写一张 NDIS_PROTOCOL_CHARACTERISTICS 的表,并调用 NDIS API 函数NdisRegisterProtocol 进行注册。 现在来关注一下NDIS_PROTOCOL_CHARACTERISTICS这张表,这张表中存有所有协议驱动程序与底层的派发函数的入口。 如 BindAdapterHandler, SendHandler, ReceiveHandler等,当网卡有数据包进入时,会通过表中 ReceiveHandle 或 ReceivePacketHandler通知协议驱动程序有一个该协议的数据包进入,反之协议驱动程序是通过 Send Handler 或 SendPacketsHandler 函数向网卡驱动发送数据包到网络上去的。 虽然在 程序中是调用 NdisSend或 NdisSendPackets 函数发送 , 但是 通过查看 的头文件里对这两个函数的定义就知道了, 它 们都是一 个宏定义,实际还是通过这表中 Send Handler 或 SendPacketsHandler 发送的。 现在要做的事情应该很清 楚 了 , 只 要 能 够 将 每 一 个 协 议 程 序 所 填 写 的NDIS_PROTOCOL_CHARACTERISTICS 表里的派发函数指向自己的函数,就能成功的对数据包进行拦截。 Winpcap 也是用 NDIS( Windows 的通信协议程序 (比如 TCP/IP)和网络设备驱动器之间通信的规范 )的 ,将自己注册为一个协议处理驱动。 Winpcap的使用非常方便,但是它 有一个致命的缺陷就是只适用于共享式以太网络,对于交换式网络下的数据则无能为力。 经过 测试,在使用交换机连接的局域网下, Winpcap只能监听到本网段内的数据,而对于来自其他网段的数据则无法监听,除非你把probe接到交换机之前或者接到交换机的 console 口上,不过那样的弊端是显而易见的 , 所以, Winpcap的应用 还是 有局限性的。 Jpcap 简介 由于核心 Java API不能直接访问网络底层,因此需要借助一种工具来为 Java和网络底层提供一个桥梁。 Jpcap就 是一种提供在 Windows 或 UNIX系统上进行网络底层 访问的 Java API。 Jpcap不是一种 纯粹的 Java解决方案 , 它依赖本地库的使用。 在 Windows 或 UNIX上, 用户 必须有必要的第三方库,分别是 WinPcap或 libpcap。 Jpcap 的工作原理是 使 用 一个事件模型 让你对数据包进行 处理。 首先必须创建一个执行接口 的类 : public class JpcapTip implements JpcapHandler。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。