毕业设计-局域网监听软件的设计与开发—论文_第1页
毕业设计-局域网监听软件的设计与开发—论文_第2页
毕业设计-局域网监听软件的设计与开发—论文_第3页
毕业设计-局域网监听软件的设计与开发—论文_第4页
毕业设计-局域网监听软件的设计与开发—论文_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、毕毕 业业 设设 计计( 论论 文文) 局域网监听软件的设计与开发局域网监听软件的设计与开发 论文作者姓名:论文作者姓名: 申请学位专业:申请学位专业: 申请学位类别:申请学位类别: 指指导导教教师师姓姓名名(职职称称) : 论文提交日期:论文提交日期: 局域网监听软件的设计与开发局域网监听软件的设计与开发 摘摘 要要 网络监听软件是提供给网络安全管理人员进行安全管理的工具,可以用来 监视网络的状态、数据流动情况以及网络上传输的信息,以获取有用信息。作 为黑客来说,通过网络监听可以获取其所需信息(比如密码等) ;对黑客活动和 其他网络犯罪进行侦察、取证时,可以使用网络监听技术来获取必要的信息。

2、 因此,在目前研究和使用网络监听技术及相关工具,对于防护网络安全、打击 网络犯罪具有重要的现实意义。 本局域网监听软件主要利用 winpcap 和 jpcap 等工具进行开发,使用 java 语言在 eclipse 3.2 环境下进行开发。软件主要实现了对网络上的数据进行监听, 并分析出每一协议层的传输数据和协议层上主要字段的数据,然后将其显示出 来,同时进行动态更新;另外,添加了一些附加功能(指定对象监听、饼状图 显示、界面选择等) 。经过测试与分析,说明了该软件运行稳定、可靠,具有一 定的实际应用价值。 关键词:关键词:局域网;网络监听;协议层;数据传输;对象监听 design and d

3、evelopment of lan monitoring software abstract network-monitoring software is a secure management tool providing for the network security administrator. it can obtain useful information which monitors the network status, data flowing and information of network transmitting. hackers can get the neces

4、sary information (such as password and so on) by means of network - monitoring. hacker may gain the information which its needs (for instance password and so on) through the network-monitoring; carrying on taking the reconnaissance and collecting the evidences about the hacker activity and other net

5、work crime, we may use the network monitor technology to gain the essential information. therefore, studying and using network-monitoring technology and the correlate tool in present, it is important and practical significance for protecting network security and attacking network crime. this local a

6、rea network-monitoring software mainly is developed by using of winpcap, jpcap, the java language and so on in the eclipse 3.2 environment. this software mainly realizes monitoring the network data, analyzes the transmission data and the main field data on each protocol layer, and then demonstrates

7、it, carries on the dynamic renewal. simultaneously, this software increases some attachment functions (such as assigning object monitor, demonstrating of cake shape, the choice of surface etc.). after testing and the analyzing, which shows that this software is stable, reliable, and having the certa

8、in practical application value. key words: lan; network monitoring; protocol layer; data transmission; object monitoring 目目 录录 论文总页数:33 页 1 引言.1 1.1 课题背景.1 1.2 本课题研究的意义.1 1.3 本课题的研究方法.1 1.4 本论文主要工作.2 2 需求分析.2 2.1 需求分析概述.2 2.2 本软件的需求分析.3 2.2.1 本软件实现的目标.3 2.2.2 本软件的运行环境要求.3 2.2.3 本软件的功能要求.4 2.2.4 本软件功

9、能的扩充.4 3 理论基础与相关工具介绍.4 3.1 网络监听原理介绍.4 3.2 tcp/ip 的层次结构.5 3.2.1 osi 与 tcp/ip 体系结构的比较.5 3.2.2 tcp/ip 四层协议的表示方法举例.7 3.2.3 使用 tcp/ip 进行通信的示意图.7 3.3 winpcap 简介 .8 3.4 jpcap 简介.9 4 设计思路.10 4.1 设计框架图.10 4.2 设计步骤.11 4.2.1 整体规划.11 4.2.2 程序运行流程.11 5 具体实现步骤.12 5.1 使用 eclipse 3.2 创建项目.12 5.1.1 创建项目.12 5.1.2 创建包

10、.13 5.1.3 创建类.14 5.2 analyzer 包的设计.14 5.2.1 analyzer 包的作用.14 5.2.2 analyzer 包中各个类的作用与实现方式.15 5.3 stat 包的设计.17 5.3.1 stat 包的作用.17 5.3.2 stat 包中各个类的作用与实现方式.17 5.4 ui 包的设计.18 5.4.1 ui 包的作用.18 5.4.2 ui 包中各个类的作用与实现方式.19 5.4.3 ui 包中 graph 包的作用 .22 5.5 外部类的设计.22 5.5.1 外部类在整个程序中的作用.22 5.5.2 外部各个类的作用与实现方式.22

11、 6 测试与分析.23 6.1 测试的目的.23 6.2 测试的步骤.23 6.3 测试分析.25 7 用户使用手册.26 7.1 系统配置要求.26 7.2 系统环境配置.26 7.3 执行程序步骤.26 结 论.30 参考文献.31 致 谢.32 声 明.33 1 引言引言 1.1 课题背景课题背景 网络监听,在网络安全上一直是一个比较敏感的话题,作为一种发展比较 成熟的技术,网络监听在协助网络管理员监测网络传输数据,排除网络故障等 方面具有不可替代的作用,因而一直倍受网络管理员的青睐。然而,在另一方 面网络监听也给以太网安全带来了极大的隐患,许多的网络入侵往往都伴随着 以太网内网络监听行

12、为,从而造成口令失窃,敏感数据被截获等等连锁性安全 事件。 随着互联网技术的迅猛发展,网络给人们带来了很多便利,但是网络在给 人们带来许多便利的同时,也给人们带来了最担忧的网络安全问题。保证网络 及应用系统的安全也成了人们最为关心的问题。 网络监听技术就是提供给网络安全管理人员进行管理的工具,可以用来监 视网络的状态、数据流动情况以及网络上传输的信息,以获取有用的信息。作 为黑客来说,通过网络监听可以获取其所需的信息(比如密码等) ;对黑客活动 和其他网络犯罪进行侦察、取证时,可以使用网络监听技术来获取必要的信息。 因此,在目前研究和使用网络监听技术及相关工具,对于防护网络安全、打击 网络犯罪

13、具有重要的现实意义。 1.2 本课题研究的意义本课题研究的意义 我国的网络正在快速发展中,相应的问题也就显现出来,网络管理及相应 的应用自然将越发重要,而监听技术正是网络管理和应用的基础,其意义当然 重要,放眼当前相关工具,linux 有 snort tcpdump ,snift 等,window 有 nexray, sniffer 等无一不是国外软件,随着中国网络的发展,网络监听系统必 将大有用武之地,因此监听技术的研究已是时事的要求。 中国入世,各种针对盗版的打击力度和对于正版软件的保护力度都将大大 加强,windows 的盗版软件随处可见的现象将会一去不返,面对这样的情况, 大部分的公司

14、只有两种选择:要么花大价钱向微软购买正版软件,要么是用开 元操作系统 linux,特别是重要部门,如国家机关,政府部门,难道要把自己 的办公系统操纵在国外大公司手里?北京的政府办公系统已经转用红旗 linux,而且 linux 的界面也在不但的改进,更加友好,易操作,有理由相信 linux 将在我国大有作为,这也是研究 linux 下网络监听的原因。 1.3 本课题的研究方法本课题的研究方法 本毕业设计的目的主要是为了检查对以前所学知识(包括以前所学的一些 关于网络技术、编程技术、网络与信息安全等知识)综合运用的能力,设计开 发一个局域网监听软件。 在本系统的开发使用 eclipse 3.2

15、开发工具,利用 java 语言来编写一个具备 数据包统计和分析功能的局域网监听软件。 由于核心 java api 不能访问底层的网络数据,因此在使用 java 编写网络监 听程序时就必须借助一些工具。本设计借助 winpcap 和 jpcap 这两个工具来对 网络底层进行访问,帮助实现网络监听程序。 1.4 本论文主要工作本论文主要工作 本文主要介绍局域网监听软件设计与开发。在进行设计之前,必需了解一 些必要的相关知识,所以本文先从基础知识开始介绍,然后一步一步地深入, 最后开发出具有一定功能的网络监听软件。 本文的第二章对网络监听软件的设计有一个全面的需求分析,在写需求分 析的时候,主要是对

16、本软件的实现目标、运行环境和功能做一个具体的规划, 其次对本软件的发展方向也做了一定的要求。 在第三章中,首先对网络监听的原理进行简单的介绍,了解到在网络中的 数据是怎样的进行传输的、每一层的协议的作用等等。然后再就本次开发所必 需的辅助工具(winpcap 和 jpcap)和它们在局域网监听软件中所起的作用,以 及它们的使用方法做了一定的介绍。 具备了一定的基础知识后,在第四章中对局域网监听软件的设计做了一个 整体的规划,对本次设计的进程有了一个初步的框架,然后再综合所学知识进 行具体的设计。 在第五章中,开始介绍具体的设计步骤,首先将编写三个不同的包,每一 个包完成的功能有所不同,但又互相

17、联系,然后再编写主类和一些能将每个包, 每个类联系起来的类,让其实现预期的效果,最终完成初步的设计。 第六章的主要工作是介绍如何测试所编写的程序是否能正常运行,确保所 设计的程序能完成相关的功能,不断的对软件进行完善。测试完毕后,将所有 代码进行封装打包,完成本次设计。 在本文的最后一章,主要介绍的是如何使用该软件,附带一些软件运行时 的图片,对用户做一个具体的介绍。 2 需求分析需求分析 2.1 需求分析概述需求分析概述 需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险 和评估项目代价,最终形成开发计划的一个复杂过程。从广义上理解:需求分 析包括需求的获取、分析、规格说明、变

18、更、验证、管理的一系列需求工程。 图 1 为需求分析的具体步骤。 图 1 需求分析步骤 需求分析之所以重要,就因为它具有决策性,方向性,策略性的作用,在 软件开发的过程中具有举足轻重的地位。在一个大型软件系统的开发中,他的 作用要远远大于程序设计。 2.2 本软件的需求分析本软件的需求分析 2.2.1 本软件实现的目标本软件实现的目标 虽然计算机网络给人们带来了巨大的便利,但互联网是一个面向大众的开 放系统,对信息的保密和系统的安全考虑得并不完备,存在着安全隐患,网络 的安全形势日趋严峻。 因此,在 internet 安全隐患中扮演重要角色之一的网络监听软件受到越来 越大的关注,大多数的黑客为

19、了探测内部网上的主机并取得控制权,甚至有些 黑客为了控制整个网络,从而安装特洛伊木马和后门程序,并清除记录。他们 经常使用的手段是安装网络监听软件。 在黑客和违法人员进行一些非法的操作(例如,盗取用户的密码和相关信 息等)时,执法人员也可以利用同样的方法对其进行侦察和取证,并对其进行 相关的处置,达到保护用户的重要资料和维护用户的个人利益,并保证网络的 正常运行和预防一些违法操作。 本软件的设计就是为了达到基本的维护网络安全的作用,对网络上传输的 数据进行捕获,然后从中得到有用的信息,以此来判断是否是恶意的信息,并 对其进行过滤等相关操作,起到保护网络安全的作用。 2.2.2 本软件的运行环境

20、要求本软件的运行环境要求 在编写本软件前,作者首先确定了所使用的语言java,并在开发工具 eclipse 3.2 下进行开发,所以首先应该配置好 java 的运行环境(安装 j2sdk1.4.0 或 jre1.4.0 以上版本) ,并在命令提示符检查是否正确配置好 java 的运行环境 (输入 java 或 javac) 。 由于 java api 语言不能访问底层的网络数据,所以使用一些工具(如 winpcap 和 jpcap)来帮助实现对底层网络数据的访问。在此,本软件必须首先 安装 winpcap,然后在 jre 中配置好 jpcap 的环境,值得注意的是,以上两个工 具都是开元的,所

21、以在很多地方可以查询到它们的使用方式。 2.2.3 本软件的功能要求本软件的功能要求 对于这个程序,开发人员希望它达到以下几个功能: (1)能够截取本网段中传输的数据包; (2)运用不同 tcp/ip 体系层次的协议解析类,将数据包逐步分解; (3)将分析结果显示出来(协议字段、数据内容等) ; (4)对截获的数据包的数量和大小进行统计(饼状图等); (5)对指定的 ip 地址进行单独监听; (6)可以进行界面选择。 2.2.4 本软件功能的扩充本软件功能的扩充 完成了以上功能,只是初步达到了现有阶段的要求,在以后的操作中,可 能会遇到许多更为复杂的问题,为此,在设计软件的同时,也应该根据系统

22、的 性能来分析将来很可能会提出来的要求,这样做的目的是在设计过程中对系统 将来可能的扩充和修改预做准备,以便一旦需要时能比较容易地进行一些扩充 和修改。 本软件虽然能够捕获到本网段的数据,并可以对捕获的数据进行简单的分 析,还可以进行指定对象的监听和将结果显示出来等功能,但在实际的运用中, 用户肯定会遇到更多的问题,以下是对本软件的扩充性能的一些初步预计: (1)自动获取本机和网关的 ip 和 mac 地址; (2)监视所有主机的收发邮件记录收发邮件的 email 地址、日期、主题等; (3)对捕获到的数据进一步分析,得到非法数据; (4)可以对局域网内的计算机进行一些简单的操作。 3 理论基

23、础与相关工具介绍理论基础与相关工具介绍 3.1 网络监听原理介绍网络监听原理介绍 ethernet 协议(以太网协议)的工作方式是将要发送的数据包发往连接在 一起的所有主机。在包头中包括有应该接收数据包的主机的正确地址,因为只 有与数据包中目标地址一致的那台主机才能接收到数据包,但是当主机工作在 监听模式下,不管数据包中的目标物理地址是什么,主机都将可以接收到。 数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从 tcp/ip 协议的 ip 层交给网络接口,也就是所说的数据链路层。网络接口不会 识别 ip 地址的。因此,在网络接口由 ip 层传输过来的带有 ip 地址的数据包将 增加

24、了一部分以太帧的帧头的信息。在帧头中,有两个域分别为只有网络接口 才能识别的源主机和目的主机的物理地址,这是一个 48 位的地址,这个 48 位 的地址是与 ip 地址相对应的,换句话说就是一个 ip 地址也会对应一个物理地 址。 传输数据时,包含物理地址的帧从网络接口(网卡)发送到物理的线路上, 如果局域网是由一条粗缆或细缆连接而成,则数字信号在电缆上传输,能够到 达线路上的每一台主机。当使用集线器时,由集线器再发向连接在集线器上的 每一条线路,数字信号也能到达连接在集线器上的每一台主机。当数字信号到 达一台主机的网络接口时,正常情况下,网络接口读入数据帧,进行检查,如 果数据帧中携带的物理

25、地址是自己的或者是广播地址,则将数据帧交给上层协 议软件,也就是 ip 层软件,否则就将这个帧丢弃。对于每一个到达网络接口的 数据帧,都要进行这个过程。 当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那 么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子 网(使用了不同的掩码、ip 地址和网关)的主机的数据包,在同一个物理信道 上传输的所有信息都可以被接收到。 以太网上的数据帧主要涉及 tcp/ip 协议,针对以下几个协议的分析: ip,arp,rarp,ipx,其中重点在于 ip 和 arp 协议,这两个协议是多数网 络协议的基础。 在本软件的监听过程中,将

26、监听到的数据包利用工具和所编写的方法进行 逐层分析,并解析出每一层、每一协议、每一字段的数据,从中得到自己想要 的信息,最后将其显示出来,并进行动态的更新。 3.2 tcp/ip 的层次结构的层次结构 3.2.1 osi 与与 tcp/ip 体系结构的比较体系结构的比较 osi(open system interconnect)是开放式系统互联,为了解决不同体系结 构的网络的互联问题,国际标准化组织 iso 于 1981 年制定了开放系统互连参 考模型(open system interconnection reference model,osi/rm) 。osi 把网络 通信的工作分为 7

27、层,它们由低到高分别是物理层(physical layer),数据链路 层(data link layer),网络层(network layer),传输层(transport layer),会话 层(session layer) ,表示层(presen tation layer)和应用层(application layer)。 每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支 持。 tcp/ip 协议(transmission control protocol/internet protocol)是传输控制/网际 协议,这个协议是 internet 国际互联网络的基础。tc

28、p/ip 通讯协议采用了 4 层 的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这 4 层分别为: (1)应用层:应用程序间沟通的层,如简单电子邮件传输(smtp) 、文 件传输协议(ftp) 、网络远程访问协议(telnet)等; (2)传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协 议(tcp) 、用户数据报协议(udp)等,tcp 和 udp 给数据包加入传输数据 并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收; (3)互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都 能够到达目的主机(但不检查是否被正确接收) ,如网际协

29、议(ip) ; (4)网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如 ethernet、serial line 等)来传送数据。 tcp/ip 各层的描述如表 1 所示。 表 1 tcp/ip 各层描述 tcp/ip 的描述主要协议主要功能 应用层 http、telnet、ftp 和 e-mail 等 负责把数据传输到传输层或接收从传输层返回的数据 传输层tcp 和 udp 主要为两台主机上的应用程序提供端到端的通信,tcp 为两 台主机提供高可靠性的数据通信。它所做的工作包括把应用 程序交给它的数据分成合适的小块交给下面的网络层,确认 接收到的分组,设置发送最后确认分组的超时时

30、钟等。udp 则为应用层提供一种简单的服务。它只是把称作数据报的分 组从一台主机发送到另一台主机,但并不保证该数据能到达 另一端。 网络层icmp、ip 和 igmp 有时称作互联网层,主要为数据包选择路由,其中 ip 是 tcp/ip 协议族中最核心的协议。所有的 tcp、udp、icmp 及 igmp 数据都以 ip 数据报格式传输 链路层 arp、rarp 和设 备驱动程序及接口 卡 发送时将 ip 包作为帧发送;接收时把接收到的位组装成帧; 提供链路管理;错误检测等 osi 模型与 tcp/ip 协议的区别如下: (1)tcp/ip 一开始就考虑到多种异构网的互联问题,并将网际协议 i

31、p 作 为 tcp/ip 的重要组成部分。但 iso 和 ccitt 最初只考虑到全世界都使用一种 统一的标准公用数据网将各种不同的系统互连在一起。后来,iso 认识到了网 际协议 ip 的重要性,然而已经来不及了,只好在网络层中划分出一个子层来完 成类似 tcp/ip 中的 ip 的作用; (2)tcp/ip 一开始就对面向连接服务和无连接服务并重,而 osi 在开始 只强调面向连接这一种服务。一直到很晚 osi 才开始制定另一种无连接服务的 有关标准; (3)tcp/ip 较早就有较好的网络管理功能,而 osi 到后来才开始考虑这 个问题。 osi 与 tcp/ip 体系结构的比较如图 2

32、 所示。 图 2 osi 与 tcp/ip 体系结构的对比 3.2.2 tcp/ip 四层协议的表示方法举例四层协议的表示方法举例 图 3 tcp/ip 四层协议的表示方法举例 在许多文献中,也常见到 tcp/ip 的四层协议的表示方法。例如,在讨论两 个主机通过两个网络用路由器连在一起时,可以使用如图 3 所示的层次关系。 图 3 中的逻辑链路控制和物理层都简化为网络接口层。实际上,现在插在主机 中的网络接口板上的硬件和软件就是实现了数据链路层和物理层这两层的功能。 应当注意的是,在网络互连中起重要作用的路由器则没有应用层和运输层,其 数据链路层和物理层也是在网络接口板上实现的。 3.2.3

33、 使用使用 tcp/ip 进行通信的示意图进行通信的示意图 在 tcp/ip 的应用层协议使用的是客户服务器方式。客户(client)和服 务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描 述的是进程之间服务和被服务的关系。当 a 进程需要 b 进程的服务时就主动呼 叫 b 进程,在这种情况下,a 是客户而 b 是服务器。这里最重要的特征就是: 客户是服务请求方,服务器是服务提供方。 客户与服务器的通信关系一旦建立,通信就可是双向的,客户和服务器都 可以发送和接收信息,如图 4 所示。 图 4 客户进程和服务器进程使用 tcp/ip 协议进行通信 3.3 winpcap

34、 简介简介 winpcap(windows packet capture)是 windows 平台下一个免费,公共的网 络访问系统。开发 winpcap 这个项目的目的在于为 win32 应用程序提供访问网 络底层的能力。它提供了以下的各项功能: (1)捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之 间交换的数据报; (2)在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报 过滤掉; (3)在网络上发送原始的数据报; (4)收集网络通信过程中的统计信息。 winpcap 的主要功能在于独立于主机协议(如 tcp/ip)而发送和接收原始数 据报。也就是说,winpcap

35、不能阻塞、过滤或控制其他应用程序数据报的发收, 它仅仅只是监听共享网络上传送的数据报。因此,它不能用于服务质量 qos 调 度程序或个人防火墙。目前,winpcap 开发的主要对象是 windows nt/2000/xp,这主要是因为在使用 winpcap 的用户中只有一小部分使用 windows 95/98/me,并且微软也已经放弃了对 win9x 的开发。其实 winpcap 中 的面向 9x 系统的概念和 nt 系统的非常相似,只是在某些实现上有点差异,比 如说 9x 只支持 ansi 编码,而 nt 系统则提倡使用 unicode 编码。 winpcap 提供给用户两个不同级别的编程接

36、口:一个基于 libpcap 的 wpcap.dll,另一个是较底层的 packet.dll。对于一般的要与unix 平台上 libpcap 兼容的开发来说,使用wpcap.dll 是当然的选择。下面几个库是与lipcap 相关的: libnet1.0.2数据包的发送构造过程;libnids实现了 ids 的一些框架; libicmpicmp 数据包处理。 操作系统拦截数据包的技术有很多,现在很多文章都是介绍编写 im driver 阿在 ndis 中间层对 miniport(网卡驱动程序)和协议驱动程序之 间的数据包进行拦截。这是微软提供的一种技术但编写该过滤程序拦截程序非 常地复杂,安装也

37、很麻烦。 现在简单的介绍基于 ndis 包拦截技术。ndis 协议驱动程序是通过填写一 张 ndis_protocol_characteristics 的表,并调用ndis api 函数 ndisregisterprotocol 进行注册。现在来关注一下 ndis_protocol_characteristics 这张表,这张表中存有所有协议驱动程 序与底层的派发函数的入口。如bindadapterhandler,sendhandler, receivehandler 等,当网卡有数据包进入时,会通过表中 receivehandle 或 receivepackethandler 通知协议驱动程

38、序有一个该协议的数据包进入,反之协 议驱动程序是通过 send handler 或 sendpacketshandler 函数向网卡驱动发送数 据包到网络上去的。虽然在程序中是调用 ndissend 或 ndissendpackets 函数发 送,但是通过查看 ndis.h 的头文件里对这两个函数的定义就知道了,它们都 是一个宏定义,实际还是通过这表中 send handler 或 sendpacketshandler 发送 的。现在要做的事情应该很清楚了,只要能够将每一个协议程序所填写的 ndis_protocol_characteristics 表里的派发函数指向自己的函数,就 能成功的对

39、数据包进行拦截。 winpcap 也是用 ndis(windows 的通信协议程序(比如 tcp/ip)和网络设备 驱动器之间通信的规范)的,将自己注册为一个协议处理驱动。winpcap 的使 用非常方便,但是它有一个致命的缺陷就是只适用于共享式以太网络,对于交 换式网络下的数据则无能为力。经过测试,在使用交换机连接的局域网下, winpcap 只能监听到本网段内的数据,而对于来自其他网段的数据则无法监听, 除非你把 probe 接到交换机之前或者接到交换机的 console 口上,不过那样的弊 端是显而易见的,所以,winpcap 的应用还是有局限性的。 3.4 jpcap 简介简介 由于核

40、心 java api 不能直接访问网络底层,因此需要借助一种工具来为 java 和网络底层提供一个桥梁。jpcap 就是一种提供在 windows 或 unix 系统 上进行网络底层访问的 java api。jpcap 不是一种纯粹的 java 解决方案,它依 赖本地库的使用。在 windows 或 unix 上,用户必须有必要的第三方库,分 别是 winpcap 或 libpcap。 jpcap 的工作原理是使用一个事件模型让你对数据包进行处理。首先必须创 建一个执行接口 jpcap.jpcaphandler 的类: public class jpcaptip implements jpca

41、phandler public void handlepacket(packet packet) system.out.println(packet); 为了捕获包,用户需要告诉 jpcap 想用哪个网络设备来监听。api 提供了 jpcap.jpcap. getdevicelist()方法以满足这一目的。这个方法返回一列字符串,用 户可以像如下的方法使用它: string devices = jpcap.getdevicelist(); 一旦用户有了一个设备名称的目录,用户必须选取一个用来监听: string devicename = devices0; 选择一个设备之后,通过 jpcap.

42、opendevice()方法打开它。opendevice()方 法需要四个参数:即将打开的设备名,从设备上一次读取的最大字节数,说明 是否将设备设为混杂模式(可以接受任意的包)的 boolean 值和以后调用 processpacket()方法要使用到的超时值。 jpcapjpcap = jpcap.opendevice(devicename, 1028, false, 10000); opendevice()方法将一个参数返回到用以捕获的 jpcap 对象。既然有了 jpcap 实例,可以调用 processpacket()或 looppacket()开始监听了。这两种方式都 带有两个参数:

43、捕获的最大包数可以是1(说明没有限制) ;执行 jpcaphandler 的一个类的实例。 如果调用 processpacket(),那么 jpcap 将一直捕获包,直到超过 opendevice 中规定的时限或达到了规定的最大包数;looppacket()则将一直捕获包,直到达 到最大包数,如果没有最大数限制,它将永远运行下去。就像下面这样调用: jpcap.looppacket(-1, new jpcaptip(); 为了执行可用类,必须确保虚拟机可以找到 jpcap 的本地库。在 windows 上,如果 jpcap.dll 在库地址目录中,java 命令如下: java -djava.

44、library.path=lib -cp libjpcap.jar;. jpcaptip 运用 jpcap 将会使开发人员在利用 java 开发网络程序的时候,不必过多关 注与底层网络的接口复杂的连接细节,而注重在对 jpcap 简单而强大接口的使 用以及程序界面和功能。 4 设计思路设计思路 4.1 设计框架图设计框架图 经过对 winpcap 和 jpcap 的了解,知道了如何截获数据包并进行处理,现 在就要编写代码,将这些步骤嵌入到一个框架中,将数据包的处理结果显示出 来,根据本软件所要实现的功能,本设计所需要实现的类结构如图 5 所示。 package:jsniffer package

45、:analyzer package:stat package:ui package:graph 整个程序都包含在 此包中 此包中定义各个协议 的解析类 在此包中定义三个层次数据 包统计类 实现程序界面的类都包含在 此包中 绘制图形类,如饼状 图等 图 5 类结构 4.2 设计步骤设计步骤 4.2.1 整体规划整体规划 现在对程序进行如下设计: (1)使用 eclipse 3.2 开发的基于 j2se swing 的图形用户界面程序; (2)允许多个窗口同时运行,因此用向量来存储已创建的窗口。为了使各 个窗口间的监听不相互干扰,因此为每一个监听过程都开辟一个新的线程,在 线程中完成从截获数据包到

46、分析数据包到最后将结果显示出来的全部过程。 (3)将所有截获的数据包用向量存储,当然定义了数量上限。预计监听结 果的显示如下:使用 jtable 组件显示每条分析完后的数据包,并进行动态更的 新;若选中表格中的某一条记录时,则在 jtree 组件中将它所具有的全部协议 显示出来,父结点为协议名,子结点为协议字段名,叶子结点为字段取值,同 时将数据包的内容转换为字符串显示在 jtextarea 组件中。 4.2.2 程序运行流程程序运行流程 (1)程序的开始 程序主类为 jsniffer,整个程序由此类中的 main()函数进入,进行初始化, 出现主界面,即 jdframe 类的实例,然后等待主

47、界面中的事件响应。 (2)准备监听 当主界面中执行开始监听事件时,创建 jdcaptor 类实例,这个类实际上就 是数据包截获器。jdcaptor 类首先调用 jdcapturedialog 类,这是一个选择设备 对话框,在 jdcapturedialog 中使用 jpcap.getdevicelist()和 jpcap.getdevicedescription()获取设备,根据界面选择设备,然后使用 opendevice 函数打开设备,返回 jpcap 对象给调用它的 jdcaptor 实体。 (3)截获数据包 jdcaptor 类开启一条线程,用来进行截获数据包处理。在此线程中使用刚 才得

48、到的 jpcap 对象的 processpacket()函数截获数据包。 (4)分析数据包 使用 jpcap 类的包处理接口 jpcaphandler handlepacket()进行截获的数据包 的初步处理,每截获一个数据包都放入数据包向量 packets 中,则 packets 中存 放的就是一次监听过程中所监听到的所有数据包。然后将 packets 传递给 analyzer 包中的所有类,即每截获一个数据包,就用所有已经定义的协议进行 分析。 (5)分析结果显示 使用 jtable 控件来显示截获的数据包进过分析后的信息,每分析完一条, 显示一条,至于显示哪些信息,由菜单中的“协议查看”

49、下面的选项来决定。 当执行选择 table 中某一行的事件时,用 tree 控件来显示此数据包对应于各层的 协议,并用 textarea 控件将此数据包的内容转换为字符串完整的显示。 (6)流量统计 使用向量来存储每一个协议的所有的数据包,每分析完一个数据包后,在 它所包含的协议的向量中加一。然后绘制每一层协议的饼状图,饼状图动态更 新。 (7)数据更新 使用 timer 类的 start(),setrepeats()来进行动态更新,并通过此类中的事件 响应来进行更新时的操作,即提示表格更新。 (8)指定对象监听 指定对象监听就是使用 jsourcedialog 来得到指定监听的主机的 ip

50、地址, 监听内容是源 ip 为指定 ip 的数据包,如果符合条件则处理,不符合则丢弃。 这个过滤处理在分析数据包 jpcaphandler handlepacket()中完成。 5 具体实现步骤具体实现步骤 5.1 使用使用 eclipse 3.2 创建项目创建项目 5.1.1 创建项目创建项目 使用 eclipse 3.2 创建 jsniffer 工程。单击“文件-新建-项目” ,在弹出的 “新建项目”对话框中选择 java 项目,在项目名中填写项目名为“jsniffer” ,如 图 6 所示。 图 6 创建项目对话框 5.1.2 创建包创建包 在项目“jsniffer”上单击右键,选择“新

51、建-包” ,在弹出的“新建 java 包”对话框中填写包名为“analyzer” ,在以后的编写过程中,还需创建“stat” 、 “ui” 、 “graph”包,在这就不依依介绍了,创建过程类同“analyzer”包的创建, 如图 7 所示。 图 7 创建包对话框 5.1.3 创建类创建类 在包“analyzer”上单击右键,选择“新建-类” ,在弹出的“新建 java 类” 对话框中填写类名称,如图 8 所示。 图 8 创建类对话框 5.2 analyzer 包的设计包的设计 5.2.1 analyzer 包的作用包的作用 analyzer 包的作用是根据不同协议的结构格式设计相应的数据包解

52、析类, 然后对于传送给解析类的数据包进行相应协议结构的解析,即分析出协议中各 个字段的内容。 在本程序中预计对 8 个协议进行解析,为此需要定义 8 个解析类再加上一 个用于返回截获数据包信息(如截获时间,大小等)的类。 协议与类的对应关系如表 2 所示。 表 2 协议与类的对应关系 tcp/ip 体系层次协 议 名数据包解析类名 主机网络层ethernet frameethernetanalyzer ipv4ipv4analyer ipv6ipv6analyzer arparpanalyzer 互联层 icmpicmpanalyzer tcptcpanalyzer 传输层 udpudpana

53、lyzer 应用层httphttpanalyzer 返回类显示数据包被截获相关信息packetanalyzer 5.2.2 analyzer 包中各个类的作用与实现方式包中各个类的作用与实现方式 在 analyzer 包中,针对不同的 tcp/ip 层次,编写不同的分析类,每一个类 中都将每一协议的重要字段都进行定义,并将进行逐步分析,得到每一字段的 数据值,下面将介绍在这个包中每个类的作用和编写思路: (1)jdpacketanalyzer.java 这是一个抽象类,其功能主要有两个,定义静态常量用来表示 tcp/ip 体系 中的各层次,然后定义不同协议数据包分析类中的公用函数,定义每一个协

54、议 层,并定义一些方法,是所有分析类的父类。 (2)ethernetanalyzer.java ethernet frame 是主机网络层(数据链路层),属于数据链路层 (datalink_layer) ,在这一层中,定义了主机网络层类型(frame type) 、 源 mac 地址(source mac) 、目的 mac 地址(destination mac),用于最底层 数据包的解析类。 (3)ipv4analyzer.java 此类的功能为解析 ipv4 协议数据包,为相应字段赋值。在类中定义一个字 符串常量 valuenames 用来存储 ipv4 协议中所有的字段名;在解析之前首先要

55、 判断所接收的数据包是否属于 ipv4 协议,因此定义函数 isanalyzable,运用 “instance of”语句判断接收的数据包是否与 jpcap 包中定义的 ippacket 类相符 合;定义函数 analyze 用于解析数据包,其原理也是用 jpcap 包中定义的 ippacket 类对接收到的数据包进行强制转换,然后将 ippacket 类中相应的成员 赋给相应的字段,完成解析。 (4)ipv6analyzer.java ipv6 将地址从 ipv4 的 32bit 增大到了 128bit,首部长度固定为 40 字节, ipv6 的一个新的机制是支持资源预分配,并且允许路由器将

56、每一个数据报与一 个给定的资源分配相联系。ipv6 提出流(flow)的抽象慨念。所谓流就是互 联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或 视频传输) ,而在这个流所经过的路径上的路由器都保证指明的服务质量,所 有属于同一个流的数据报都具有同样的流标号。 此类同 ipv4analyzer.java 类中的方法类似。 (5)arpanalyzer.java 此类用于对 arp(address resolution protocol)地址解析协议和 rarp(reverse address resolution protocol)逆地址解析协议层的数据进行分析, arp

57、是工作在 ip 层与数据链路层之间的一个桥梁,起的作用是查询给定的 ip 地址所对应的网卡物理地址(mac 地址)。 此类同 ipv4analyzer.java 类中的方法类似。 (6)icmpanalyzer.java icmp(internet control message protocol)internet 控制报文协议,传递差错 报文以及其他需要注意的信息,种类有两种:icmp 差错报告报文和 icmp 询 问报文,icmp 报文是在 ip 数据报内部被传输的,前 4 个字节是统一的:类型, 代码,检验和;接着 4 个字节的内容与 icmp 的类型有关;再后面是数据字段, 其长度取决

58、于 icmp 的类型。icmp 报文的代码字段是为了进一步区分某种类 型中的几种不同的情况;检验和用来检验整个 icmp 报文。 此类用于对属于 icmp 协议的数据进行逐步分析,并得到各字段的数据, 使用的方法和其他解析类类似,在此不再重复,可参考相应源程序文件。 (7)tcpanalyzer.java tcp(transmission control protocol)传输控制协议和 udp(user datagram protocol)用户数据报协议是属于运输层的,运输层的作用范围是提供进程之间 的逻辑通信,能够向应用层提供运输服务,而网络层(ip 协议)提供主机之间 的逻辑通信。tcp

59、 协议是面向连接的,而 udp 是无连接的。 tcp 报文段分为首部和数据两部分,首部前 20 字节是固定的,后面有 4n 字节是根据需要而增加的,因此 tcp 首部的最小长度为 20 字节。具体字段作 用可参考相应源文件。 端口(16bit)的作用:让应用层的各种应用程序都能将其数据通过端口向 下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交 付给应用层相应的程序。 (8)udpanalyzer.java udp 报文段分为数据字段和首部字段,首字段只有 8 个字节,由 4 个字段 组成,每个字段 2 字节,各字段为:源端口(源端口号) 、目的端口(目的端口 号) 、长度

60、(udp 用户数据报的长度) 、检验和(防止 udp 用户数据报在传输 中出错) 。 (9)packetanalyzer.java 此类用于显示数据包被截获相关信息,比如捕获时间和捕获长度。 5.3 stat 包的设计包的设计 5.3.1 stat 包的作用包的作用 stat 的作用是完成对所截获的数据包按照不同的协议,不同的层次进行统 计,并进行动态的更新,最后将其结果显示出来。 在数据包统计中,作者将所有截获的数据包按照所属协议的层次分别进行 统计,则统计类的设计与层次的分类一致,如表 3 所示。 表 3 统计类的设计与层次对照表 tcp/ip 层次数据包统计类名 互联层networkpr

温馨提示

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

评论

0/150

提交评论