Jpcap简易教程
题记:首先,其实根本就没必要写Jpcap的教程,Jpcap官网的文档还是很详细很给力的,自己也几乎是对着官网文档学的,很快就上手了。 但自己的学习笔记一直存在word里面,始终不放心。(看着文件夹里30多个word的学习笔记,头都大,一直没弄博客上来)。 于是,就还是把它写到博客上来,就当是自己的学习笔记吧。 |
首先,使用Jpcap的几个小问题:
- 我们为什么需要Jpcap?
- 什么是Jpcap?Jpcap的工作原理是什么?
- 怎么配置Jpcap(Jpcap的安装)?
- Jpcap使用步骤
- Jpcap有啥特性?
一。我们为什么需要Jpcap?
Java的.net包中,给出了传输层协议 TCP和UDP有关的API,用户只能操作传输层数据,要想直接操作网络层{比如自己写传输层数据报(自己写传输层包头),或者自己写好IP数据包向网络中发}则是无能为力的。 而JPCAP扩展包弥补了这一点,使我们可以支持从网卡中接收IP数据包,或者向网卡中发送IP数据包。
二。什么是Jpcap?Jpcap的工作原理是什么?
Jpcap实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给JAVA语言提供一个公共的接口,从而实现了平台无关性。
三。怎么配置Jpcap(Jpcap的安装)?
Jpcap下载地址: http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/download.html
下载后,直接安装,安装,将生成的jar文件和动态库 dll 文件分别拷到
%JAVA_HOME%\lib\ext\ 和 %JAVA_HOME%\jre\bin\ 目录下。
因为Jpcap是调用的wincap,所以必须将动态库放入jre/bin下。 将jar放入ext下,则无需在项目中再加载该jar包
四。Jpcap使用步骤
1.首先,获得所有网卡列表
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
2.通过网卡,打开一个捕捉器。 //openDevice(NetworkInterface intrface, int snaplen, boolean promics, int to_ms); JpcapCaptor captor=JpcapCaptor.openDevice(device[index], 65535, false, 20);
各个参数意义:
intrface 需要监听的网卡
snaplen 每次捕获的数据包最大长度(设置为IP包最大长度即可)
promics 是否过滤(Mac地址不是当前网卡的IP数据包)
to_ms 超时时间
|
3.通过捕捉器捕获数据:
有两种方式:
3.1.回调方法
3.1.1.实现一个方法处理器接口的类PacketReceiver,并将该类的一个对象,注册到捕获器中。(回调方法的实现, 其实就是监听器模型)
3.1.2.将消息处理器(PacketReceiver) 注册到捕获器(JpcapCaptor)有两种方式
captor.processPacket(int number,PacketReceiver reciver);//1 loopPacket(int number,PacketReceiver reciver);//2
参数意义:
第一个参数为需要捕获的IP包个数,-1表示一直捕获。
第二个参数表示需要注册的处理器。
|
processPacket() 和 loopPacket() 的区别:
Tutorial中给出的说法为:
Usually you might want to use processPacket() because it supports timeout and non_blocking mode, while loopPacket() doesn't.
可是,processPacket() 和 loopPacket() 两个方法明明都是通过回调方法实现的,回调方法使用监听器模型,不就是在某个模块被调用的时刻不确定,才使用的嘛?如果是这样,那么根本就没有block存在啊? 此处还请高手指点。 |
另外,自己做的测试中:使用loopPacket()的时候,会一直有回调,但是使用processPacket()程序直接执行完就结束了,对捕捉器设置了nonblock为flase也没用?
3.2.主动获取。
通过捕获器的getPacket() 可以主动的,一个数据包一个数据包的获取。
比较:
主动获取,可以每次需要处理数据包的时候,自己去主动获取。然后写出处理逻辑。但是因为不知道何时去产生数据包,而一直去调用getPacket() 的话,无疑效率是很低的。(主动获取,不管有没有包,都会一直执行循环去获取)
通过回调方法,可以在产生需要的数据包时,调用我们的处理逻辑,无疑更优美。
|
五。使用Jpcap能做的事
1.Jpcap是直接抓取经过数据链路层的数据包。 因此可以自己写IP数据包直接发送给数据链路层。
2.Jpcap会对抓取到的数据包进行一定程序的解析,根据数据包内容,将数据包封装为对应的对象()。
3.根据用户设定的信息,过滤数据包(其实就是在解析的时候,对不需要的数据直接丢弃,不解析)
4.Jpcap 只是直接从数据链路层上读取数据,并向数据链路层中发送数据,因此,Jpcap并不能操作 其他程序从数据链路层中读数据或者向网卡中发送数据。(IP层协议程序)
因此,我们可以使用Jpcap:
1.监控网络内容
2.自定义传输层乃至网络层网络协议(net包中,我们只能自定义引用此协议)
正在进行:使用Jpcap,进行ARP欺骗,从而使整个子网的IP包都发给我,于是,可以监控整个局域网。
分享到:
相关推荐
4. 至于配置教程,文档"jpcap配置教程.docx"应该会提供详细的步骤和示例代码,包括如何初始化jpcap,设置数据包过滤器,以及如何读取和解析捕获的数据包。 测试代码是验证安装和配置是否成功的关键。通常,一个简单...
《Jpcap:Java网络封包捕获库的深度解析》 Jpcap,全称为Java Packet Capture,是一个用于网络封包分析的开源库,专为Java编程语言设计。其核心功能是允许开发者在Java环境中捕获、过滤、分析以及回放网络数据包。...
jpcap教程 jpcap是一种Java网络嗅探工具库,它提供了一个强大的API来捕捉和处理网络数据包。在这个教程中,我们将学习如何使用jpcap来获取网络接口设备信息和打开网络接口设备。 获取网络接口设备 要捕捉网络...
标题 "64位jpcap.jar及对应jpcap.dll下载" 暗示了这是一个针对64位操作系统的Java库,主要用于网络数据包捕获和分析。jpcap是一个开源项目,它提供了Java接口来处理网络接口卡(NIC)的数据包捕获,类似于著名的...
《深入解析Jpcap库:基于jpcap-1.0.jar的网络数据包捕获与分析》 在计算机网络领域,数据包捕获和分析是至关重要的环节,它可以帮助我们深入了解网络通信的过程,排查故障,甚至进行网络安全研究。本文将详细探讨...
3. **实例教程**: 通过实例代码,演示如何初始化Jpcap,打开网络接口,设置过滤器,捕获、解析和发送数据包。 4. **错误处理与调试**: 提供了处理常见问题和调试技巧,帮助开发者解决遇到的问题。 **三、jpcap包**...
《Java网络通信与jpcap库详解》 在IT领域,网络通信是不可或缺的一部分,而Java作为一门跨平台的编程语言,提供了丰富的网络编程接口。本文将深入探讨使用Java进行网络通讯报文监听的关键技术——jpcap库,以及如何...
《Jpcap:Java平台上的数据包捕获与分析库》 Jpcap是一个专为Java平台设计的数据包捕获和分析库,它允许开发者在Java应用程序中实现网络监控和数据包处理功能。这个库的核心组件包括两个主要部分:`jpcap.jar`和`...
本教程将详细介绍如何在Eclipse环境下配置Jpcap,并解决可能遇到的问题,同时提供一个模拟sniffer的测试程序,帮助理解如何使用Jpcap进行抓包和文件操作。 首先,我们来了解一下Jpcap的基本概念。Jpcap是Java ...
**Jpcap.dll和jpcap.jar是Java网络包捕获库Jpcap的重要组成部分**。Jpcap是一个开源的Java库,它为Java程序员提供了网络数据包的捕获和分析功能,类似于知名的libpcap(在Unix系统上)和WinPcap(在Windows系统上)...
4. 使用教程:详细解释如何在Linux环境中配置和使用Jpcap,可能包括命令行示例和Java代码示例。 5. 示例程序:演示Jpcap的用法,帮助开发者了解如何在自己的项目中集成Jpcap进行网络抓包。 使用Jpcap的关键步骤: 1...
在提供的压缩包中,"Jpcap 网络抓包工具 - - ITeye技术网站.htm"和"Jpcap 网络抓包工具 - - ITeye技术网站_files"可能是关于jpcap的使用教程或示例代码。通过阅读这些资料,开发者可以快速了解如何使用jpcap进行...
《jpcap.jar和jpcap.dll:Java网络封包捕获库的解析与应用》 在计算机网络中,封包捕获(Packet Capture)是一项关键的技术,它允许开发者或网络管理员监控网络流量,分析数据传输,排查网络问题。本文将深入探讨...
标题中的"jpcap.jar jpcap.dll 32 64"指的是Jpcap库的相关文件,包括Java的jar包和Windows平台下的动态链接库(dll)文件,分别适用于32位和64位操作系统。Jpcap是一个用于网络数据包捕获和分析的开源库,它为Java...
**Jpcap** 是一个Java库,专门设计用于在应用程序中操作网络底层协议。这个库提供了丰富的功能,允许开发者捕获、分析、发送和修改网络数据包。它是一个跨平台的解决方案,可以在运行Java的任何操作系统上使用。...
**安装Jpcap详解** Jpcap是一款强大的网络数据包捕获库,它为Java开发者提供了接口,使得在Java环境中捕获和分析网络流量成为可能。这篇文章将详细讲解如何在Windows环境下,特别是在Win7专业版上,安装并配置Jpcap...
《jpcap.jar与jpcap.dll:网络数据包捕获与分析的利器》 在IT行业中,网络数据包的捕获与分析是一项至关重要的任务,对于网络安全、故障排查、性能优化等领域都有着广泛的应用。jpcap.jar和jpcap.dll就是这样的工具...
`Jpcap` 是一个用Java编写的库,专门用于捕获、分析和过滤网络数据包。本篇文章将详细探讨`Jpcap`库及其在Java中的应用,特别是如何实现数据链路层的包过滤。 首先,我们要理解`Jpcap`是什么。`Jpcap`是Java Packet...
4. **示例代码参考**:初学者可以通过查阅官方文档、开源示例代码或在线教程来快速了解如何使用Jpcap进行数据包的捕获和操作。 5. **安全与权限**:由于Jpcap涉及到网络访问,可能需要管理员权限才能正常工作。同时...
《深入理解64位jpcap.dl与jpcap.jar在抓包技术中的应用》 在信息技术领域,网络数据的捕获与分析是至关重要的一个环节,这涉及到网络安全、性能监控、故障排查等多个方面。jpcap作为Java平台上的一个网络包捕获库,...