此程序是利用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
年
6
月发布的
JPcap0. 01
版
,
此后几经修改
,
到
2003
年
4
月发布了最新的
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
位二进制)网卡地址查询。
⑨
分享到:
相关推荐
用Java和jpcap写的一个抓包的程序。可以抓WiFi的包。
采用JPCAP开源库开发的一款网络抓包工具.简单易用.
网络课程作业,使用Jpcap实现的java网络抓包程序,支持ipv6,内附源码及文档 使用前先安装wincap和jpcap
jpcap是使用java实现的抓包工具。该资源有详细的说明使用文档,
JAVA写的网络抓包分析程序 需要先下载jpcap winpcap
基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 jpcap.zip 基于java的开发源码-网络抓包工具 ...
使用JAVA库JPCAP来在传输层构造TCP数据包发送,并在网络层捕获数据包!
这是一个基于jpcap简单的抓包程序,要搭建Java的运行环境
java源码:网络抓包工具 jpcap.zip
jPCAP在JAVA中,并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用winpcap/libpcap,给 JAVA语言提供一个公共的接口,从而实现了平台无关性。
本jar包在win8.1 x64 系统下可用,其他未测试。通过该jar包,java可以方便的进行Tcp/IP协议的分析
Jpcap 是捕获和发送网络包的 Java 库。Jpcap 是基于 libcap 和 winpcap 的,所以 Jpcap 可以运行在任意支持 libcap 或者 winpcap 的平台上(Linux ,Windows,FreeBSD 和 Mac OS X)。Jpcap 支持以下的集中数据包...
包含64位和32位的,请注意区分,请先安装winPcap。。。
java 网络抓包安装程序 所需要安装的jpcap.exe和 wincap.exe2个程序 如果不能安装JPCAP 先在控制面板添加删除程序里把 winpcap x.x删了 删了后还是安装不了 就去C盘 WINDOWS system32 里面删除packet.dll,...
基于Jpcap的网络抓包软件,自己做的,很仓促,不过还是可以实现对网络第四层的分析。
JAVA抓包工具jpcap 32位 64位 86位合集 目前已测试64 和 86 可用 32位是我从官网下载的应该也可以 不过因为没用到所以32位没测试 目前是windows版本 x64的测试代码也在文件夹里面 目前正在试linux版本 后期成功以后...
网络抓包工具 jpcap.7z
java 的jpcap帮助文档 是java的外部jar文件的类的,帮助文档
主要是针对初学jpcap的小demo,可以获取绑定网络设备,打印IP信息!
捕获Java程序中的网络包,是需要一些辅助工具,因为核心Java API不能访问底层的网络数据。Jpcap是一种提供在Windows或UNIX系统上进行这种访问的Java API。