`
lc52520
  • 浏览: 369133 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java之JPcap网络抓包与分析程序(支持多种协议分析,对初学网络者认识网络有很好帮助)【Z】

阅读更多

此程序是利用JPcap包,抓取通过本地网卡的数据帧,并分析各字段的程序。

这是我的一个网络课程设计,具体介绍在下面的实习报告中详细讲述,并附有源代码

不知道怎么上传文件,所以直接粘贴过来了。

 

目录

第一章    设计目的、任务与要求

1.1 设计的目的 ------------------------------------3

1.2 设计的任务与要求 ------------------------------3

第二章   系统分析设计  

2.1  系统分析 --------------------------------------3

2.2  系统设计 --------------------------------------8

第三章   系统实现

   3.1  实现过程 --------------------------------------10

   3.2  采用技术 --------------------------------------11

   3.3  结果界面 --------------------------------------11

  3.4 结果分析 --------------------------------------16

第四章   心得体会 ------------------------------------- 18

参考文献 --------------------------------------------19

附录 ------------------------------------------------20

第一章    设计目的、任务与要求

1.1:设计的目的

     《计算机网络原理》课程是计算机科学与技术专业的重要专业课程之一。随着计算机网络技术的迅速发展和在当今信息社会中的广泛应用,给《计算机网络》课程的教学提出了新的更高的要求。

计 算机网络原理课程设计的目的与任务是为了使学生在课程学习的同时,通过在一个计算机网络环境中的实际操作,巩固《计算机网络原理》课堂教学所讲授网络的基 本理论、基本概念和方法技术,对现代计算机网络的基本功能有一个初步的了解。为学生今后使用计算机网络的理论和方法,开发大型、复杂的集成系统,打下一个 坚实的基础。

     1 . 2 设计的任务与要求

     本次实验的要求在网络环境, 使用 编程语言 实现捕获网络中的IP 数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:

     ①: 在标准输出和日志文件中写入捕获的IP 包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源 IP 地址和目的 IP 地址等内容。

     ②:可扩展分析其他协议包。

第二章  系统分析设计

2.1:系统分析

实现网络抓包的方法有很多,下面介绍四种:

    ①:原始套接字

    套接字是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。有时需要自己生成一些定制的数据包或者功能并希望绕开 Socket  提供的功能 , 原始套接字 ( Raw Socket)  满足了这样的要求。原始套接字能

够生成自己的数据报文 包括报头和数据报本身的内容。通过原始套接字 可以更加自如地控制 Windows  下的多种协议 而且能够对网络底层的传输机制进行控制。可以用原始套接字来发送和接收 IP  层以上的原始数据包 ICMP, TCP, UDP,  而且能够对网络底层的传输机制进行控制。 Raw Socket  的作用主要有三个方面 : ( 1)  接收发向本机的 ICMP, IGMP  协议包 或者发送这些协议包 ; ( 2)  接收发向本机的 IP  ; ( 3)  发送自定义的 IP  包。

    ②: LibPca p

    可以从 http: / / ee. lbl. gov/  找到并下载 LibPcap,  它是一个广泛应用的系统抓包库。 LibPcap  是一种与系统无关 采用分组捕获机制的分组捕获函数库 用于访问数据链路层 它在不同的平台上采用统一的编程接口 使用 LibPcap  编写的程序可自由的跨平台使用。同时 LibPcap  是一个独立于系统接口的用户级的抓包库 它为底层网络监听提供了可移植框架。它的应用包括网络统计集合、安全监听、网络调试等。

    ③: WinPca p

    可以从 http: / /winPcap. polito. it /  找到 WinPcap WinPcap LibPcap  Windows  版本 它是一个基于 Win32  的捕获数据包和网络分析的体系结构 它包括一个内核级的包过滤器 一个底层的动态链接库 ( Packet. dll) ,  一个高层并且与系统无关的库 ( WPcap. dll,  基于 LibPcap0. 6. 2  版本 WinPcap  是集成于 Windows95, 98, ME, NT, 2000  XP  操作系统的设备驱动程序 它可以从网卡捕获或者发送原始数据 同时能够过滤并且存储数据包。开发 WinPcap  这个项目的目的在于为 Win32  应用程序提供访问网络底层的能力。它提供了以下四项功能 :

( 1)  捕获原始数据报 包括共享网络上各主机发送 接收的以及相互之间交换的数据报 ;

( 2)  在数据报发往应用程序之前 按照自定义的规则将某些特殊的数据报过滤掉 ;

( 3)  在网络上发送原始的数据报 ;

( 4)  收集网络通信过程中的统计信息。

    ④: JP ca p

可以从 http: / / netresearch. ics. uci. edu / kfujii / jpcap / doc /index. html  找到 JPcap JPcap  是一个能够捕获、发送网络数据包的 Java  类库包。这个包用到了 LibPcap  和原始套接字 API 。目前 JPcap  FreeBSD 3. x, Linux RedHat 6. 1, Solaris  MicrosoftWindows 2000 /XP  系统上已经做过测试 并且支持 Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP, ICMPv4  协议。 JPcap 是一个 Java  类集合 它为网络数据包的捕获提供接口和系统支持。其最初版本是 2000  月发布的 JPcap0. 01  此后几经修改 2003  月发布了最新的 JPcap0.4  版。

由于本程序采用Java 编程语言,所以使用第四种方法,即 JPca p 来实现抓包。

现在选定了抓包工具,我们还得分析一下所获包的结构,只有弄清楚结构,才能很好的分析捕获包。

我们知道,网络软件是由多个协议层次组成的,在每一层里面都有自己的数据封装,以便实现每个层的功能。OSI 参考模型中定义了 7 层,从低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP 参考模型中定义得比较少:互联网层(网络层)、传输层、应用层、主机至网络层(空白,可以理解为跟 OSI 模型一致)。而且我们知道,高层协议整个协议包是封装到低层协议的数据段中的,所以整体是一个嵌套的结构,如下图所示:

数据链路帧格式如下(以太帧):

网络层协议有IP ICMP ARP 等:

IP分为 IPv4 IPv6, 这里介绍 IPv4

IPv4协议格式如下:

ICMP用于控制,每一种控制有独特的格式,由于格式太多,这里不介绍,详情可参考 RFC792 - Internet Control Message Protocol

ARP协议格式如下:

传输层协议有TCP UDP

TCP协议格式如下:

UDP协议格式如下:

基于TCP 的应用层协议主要有 HTTP:

HTTP协议格式如下 ( 具体数据会不同,这里供参考 )

①:HTTP 请求:

GET 请求:

POST请求:

②:HTTP 响应:

基于UDP 的应用层协议主要有 DNS:

DNS协议格式如下:

以上这些协议是本程序所能分析出来的,由于网络协议有上千种,不可能都去分析,所以其他的协议在此忽略。

既然找到抓包工具,弄清协议格式,现在就开始系统设计吧。

2.2:系统设计

环境搭建:

设计少不了的一项工作就是环境搭建,以下是环境搭建的步骤:

①:jre 安装 ( 最好是最新版本—— jre6)

②:Myeclipse 或者 Eclipse 安装

③: 下载并安装winpcap (可以下载最新版本)

④: 配置Jpcap 路径:这一步也是最重要的一步。具体路径为,把 Jpcap 文件夹下 lib 文件夹里的 Jpcap.dll 复制到 "C:\Program Files\Java\jre1.6.0_07\bin" 文件夹里面(复制到你机器 JRE 文件夹放到 bin 文件夹里面就可以了,其中 JRE 的版本一定要与 Eclipse 配置的版本一致),再把 Jpcap 文件夹下 lib 文件夹里的 Jpcap.jar 复制到 "C:\Program Files\Java\jre1.6.0_07\lib\ext" 文件夹里面(复制到你机器 JRE 文件夹 ->lib->ext 放到 ext 文件夹里面就可以了)

⑤: 配置Eclipse JRE 环境,(一定需要),选择 Window->preferences->Java->Installed JREs, Installed JREs 选择框中选择相应的 JRE 版本,点 Edit


选择Add External JARs…, 选择你的 Jpcap.jar 包( "C:\Program Files\Java\jre1.6.0_07\lib\ext" 文件夹里),在 Finish 就配置全部完成了

    
    

     在本程序中,采用图形化界面,根据用户的相关配置进行抓包,具体过程参考下面实现过程。

第三章  系统实现

3.1:实现过程

当环境搭建好后,一起都会显得很简单了,这里说一下原理,在安装winpcap 时,其实就是利用第三方编写好的程序,他们已经实现了底层和网卡的交互,数据捕获,并把数据封装好,然后对上层用户提供 API ,现在我们就利用他们提供的 API ,即 JPca p 来处理他们封装好的数据。

所以在环境搭建中,必须安装winpcap 和导入 JPca p 库函数。

下面是获取包的几个关键步骤:

①:获得网卡接口

通过调用JPca p 库中 JpcapCaptor 的静态方法 getDeviceList() 得到网卡接口数组。

 ②:获得某个网卡接口的连接

通过调用JPca p 库中 JpcapCaptor 的静态方法 openDevice() 得到某个网卡接口的连接实例。

 ③:调用实例的processPacket() 开始抓包。

④:将抓获的包交给实例的receivePacket() 方法进行分析处理。

以上就是整个抓包过程。

当然,在上面的那些方法中,都有一些特定的参数,上面没有给出,这些参数都是用于配置抓包的,程序采用图形化界面,所以这些参数可以在界面上根据用户的选择,然后传入相应方法中,最终获得用户所需的信息。

采用图形化界面,要解决的一个问题就是界面的刷新,通常是后台程序运行,产生结果,界面中要及时显现变化,即界面内容因后台结果而变。

在这个前台( 界面 ) 和后台都要兼顾的前提下,必须使用线程来解决这个问题,界面是根据后台而变的,所以可以为界面分配较高优先级,当界面显示内容不再变化,程序才会去执行较低优先级的后台抓包程序,而当抓包结果产生时,程序马上又能调用较高优先级的前台程序显示出来。 

至此,前台和后台都能兼顾运行。

这里要说明的一点是,由于采用线程抓包,所以所抓获的包不是连续通过网卡的包,我们获得的,只是某些时刻的包。

3.2:采用技术

①:JPca p 库函数运用

②:Swing 组件运用

③:线程技术运用

④:托盘技术运用( 托盘图标,用于图形化界面,没有抓包方面的知识 )

⑤:文件操作技术运用( 分析结果保存于文件和文件打开 )

3.3:结果界面   

①:开始界面( 欢迎界面 )

②:菜单选项

File菜单:              Capture菜单:   

Tool菜单:    Help菜单: 

  

③:网卡信息

④:配置抓包

⑤:开始抓包

⑥:保存文件 (自定义后缀为  .sto)

⑦:打开以前保存的文件

点击打开后,会在界面上显示保存的结果

⑧:相关链接

Wireshake 链接(本程序就是参考此程序的)

注:要链接此程序,必须安装wireshake 于本地机器上,目录为安装默认目录。

Check network card factory(网卡厂商查询 ) 链接

注:通过此链接,可跳转到国外的一个查询网站,输入前3 16 进制(即前 24 位二进制)网卡地址查询。

分享到:
评论
1 楼 何佳阔 2013-12-10  
为什么没有图片~~ 求源码~~~ 

相关推荐

    Java jpcap抓包

    Java jpcap抓包是一种利用Java编程语言和jpcap库来实现网络数据包捕获的技术。jpcap是Java Packet Capture的缩写,是一个开源的网络协议分析库,允许开发者在Java应用程序中进行网络数据包的捕获和处理。在计算机...

    JPCAP网络抓包

    网络抓包是IT领域中一种重要的技术,它用于捕获网络中的数据包,帮助分析网络流量、检测网络安全问题、调试应用程序或进行网络性能优化。JPCAP(Java Packet Capture)是一个开源库,专门为Java开发者提供网络数据包...

    Java抓包工具 jpcap WinPcap

    Java抓包工具jpcap与WinPcap是网络分析和数据包捕获的重要工具,尤其在软件开发、网络故障排查和安全分析等领域中扮演着重要角色。本文将深入探讨这两个工具的功能、安装过程以及如何利用它们进行网络数据包的抓取和...

    使用Jpcap实现的java网络抓包程序,支持ipv6

    总的来说,这个项目是一个使用Java和Jpcap库开发的网络抓包工具,具备IPv6支持,适合学习网络协议、Java编程和网络分析的初学者。通过阅读源代码和文档,用户不仅可以了解如何使用Jpcap进行网络封包捕获,还可以学习...

    jpcap java抓包必需jar包

    1. **平台无关性**:jpcap利用Java的跨平台特性,通过封装winpcap/libpcap库,使得开发者能够在多种操作系统上进行网络抓包,包括Windows、Linux、Mac OS X等。 2. **丰富的API**:jpcap提供了丰富的Java接口,允许...

    java抓包工具jpcap

    Java抓包工具jpcap是Java编程环境中用于网络封包捕获的一个库,它为开发者提供了在TCP/IP网络上进行数据包捕获和分析的能力。这个工具在Windows 8.1 x64操作系统下经过验证可以正常工作,但对其他操作系统(如...

    JAVA抓包工具jpcap,包含32位和64位

    Java抓包工具jpcap是Java平台上的网络数据包捕获库,它允许开发者在Java应用程序中实现网络监控和分析功能。jpcap提供了一套API接口,使得开发者能够轻松地处理网络数据包,包括捕获、过滤、解析以及网络协议分析等...

    计算机网络课程设计(JPCAP发包与抓包)

    计算机网络课程设计(JPCAP发包与抓包)是一个深入理解网络通信协议并实践动手能力的项目。在这个项目中,我们将使用JPCAP这个Java库,它为开发人员提供了在网络层进行数据包捕获(抓包)和传输层构建及发送TCP数据包...

    Jpcap 网络抓包实验

    Jpcap(Java Packet Capture)是一个用于Java平台的网络抓包库,它提供了抓取、过滤、分析网络数据包的功能。这个实验基于Jpcap库,虽然制作得较为仓促,但仍然能够实现对网络第四层(传输层)的数据包分析。 首先...

    jpcap抓包java代码以及依赖

    最后,通过参考TCPTest.java或其他示例代码,开发者可以了解如何编写自己的网络抓包程序,实现对网络流量的监控和分析。在实际应用中,这样的工具和库广泛用于网络安全检测、网络性能优化、协议分析等领域。

    java实现网络抓包

    Java 实现网络抓包主要涉及网络通信协议的理解、数据包捕获与解析、以及HTTP协议的深入认识。在这个过程中,开发者通常会用到Java的Socket编程、数据流处理以及第三方库,如Jpcap或Wireshark的Java绑定库。 首先,...

    JAVA写的网络抓包分析程序

    Java编写的网络抓包分析程序是一种用于检测、记录和理解网络流量的应用,它可以帮助开发者、网络安全专家和系统管理员深入洞察网络通信的过程。本程序利用了JPCAP库,这是一个Java接口,可以访问网络接口进行数据包...

    java源码:网络抓包工具 jpcap.zip

    Java源码:网络抓包工具jpcap.zip是一款基于Java平台的网络数据包捕获工具,主要用于网络分析、协议开发和网络安全检测等场景。jpcap库提供了在Java环境中访问和解析网络数据包的能力,使得开发者能够深入理解网络...

    基于Java和jpcap的winpcap抓包分析工具设计源码

    该项目为基于Java语言开发的网络抓包分析工具,核心利用jpcap和winpcap库实现。目前主要支持Windows平台下的抓包功能,用户可指定网卡和进程进行数据捕获。具备包重发功能,并能自动识别包中的所有分包,但重发成功...

    Java抓包程序

    Java抓包程序是一种用于捕获网络数据包的应用,它能够帮助开发者、网络管理员或安全研究人员监控网络通信,分析数据流,查找潜在的问题或安全漏洞。在这个项目中,我们看到一个基于Java开发的图形用户界面(GUI)抓...

    java jpcap小程序

    Java Jpcap小程序是一个专为初学者设计的项目,它利用了Jpcap库来实现对网络设备的交互,特别是获取并打印出网络接口的IP信息。Jpcap是一个强大的Java库,允许开发者捕获、分析和过滤网络数据包,这对于网络监控、...

    网络抓包工具 jpcap.7z

    总结,jpcap作为一款Java实现的网络抓包工具,其简洁的API和广泛的协议支持使其成为网络分析领域的有力工具。无论是网络管理员还是开发者,都能从中受益,通过深入理解和有效利用jpcap,提升网络监控和问题解决的...

    基于java的开发源码-网络抓包工具 jpcap.zip

    基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 ...

    java抓包程序.rar

    Java抓包程序是一种用于监测和分析网络通信的工具,它能够捕获并解析网络上的数据包,以便于开发者和网络管理员理解网络流量和行为。在这个名为"java抓包程序.rar"的压缩包中,包含了几个关键组件,我们将逐一探讨...

    JAVA网络抓包程序Java源码

    【标题】"JAVA网络抓包程序Java源码"所涉及的知识点主要集中在Java编程语言以及网络数据包捕获技术上。网络抓包是网络分析的一种重要手段,它可以帮助开发者、网络安全专家或普通用户查看网络通信的详细信息。在这个...

Global site tag (gtag.js) - Google Analytics