`
wankunde
  • 浏览: 162352 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

在Java中用Jpcap捕获网络包[转载]

阅读更多

在Java中用Jpcap捕获网络包


如果你想捕获Java程序中的网络包,那么你需要一些辅助工具,因为核心Java API不能访问底层的网络数据。但Jpcap是一种提供在Windows或UNIX系统上进行这种访问的Java API。

Jpcap不是一种纯粹的Java解决方案;它依赖本地库的使用。在Windows 或 UNIX上,你必须有必要的第三方库,分别是WinPcap或libpcap。

Jpcap的工作原理 


Jpcap使用一个事件模型来让你处理包。首先你必须创建一个执行接口jpcap.JpcapHandler的类。

public class JpcapTip implements JpcapHandler {
public void handlePacket(Packet packet){
System.out.println(packet);
}


为了捕获包,你需要告诉Jpcap你想用哪个网络设备来监听。API提供了jpcap.Jpcap.getDeviceList()方法以满足这一目的。这个方法返回一列字符串,你可以象如下使用它:

String[] devices = Jpcap.getDeviceList(); 



一旦你有了一个设备名称的目录,你必须选取一个用来监听:

String deviceName = devices[0]; 



选择一个设备之后,通过Jpcap.openDevice()方法打开它。openDevice()方法需要四个参数:即将打开的设备名,从设备上一次读取的最大字节数,说明是否将设备设为混杂模式的Boolean值,和以后调用processPacket()方法要使用到的超时值。

Jpcapjpcap = Jpcap.openDevice(deviceName, 1028, false, 10000); 



openDevice()方法将一个参数返回到用以捕获的Jpcap对象。既然有了Jpcap实例,你可以调用processPacket() 或loopPacket()开始监听了。这两种方式都带有两个参数:捕获的最大包数可以是-1(说明没有限制);执行JpcapHandler的一个类的实例。



如果你调用processPacket(),那么Jpcap将一直捕获包,直到超过openDevice中规定的时限或达到了规定的最大包数。loopPacket()则将一直捕获包,直到达到最大包数,如果没有最大数限制,它将永远运行下去。就像下面这样调用:

jpcap.loopPacket(-1, new JpcapTip()); 

下面则是全部测试类的代码:

import jpcap.JpcapHandler;
import jpcap.Jpcap;
import jpcap.Packet;

public class JpcapTip implements JpcapHandler {
public void handlePacket(Packet packet){
System.out.println(packet);
}

public static void main(String[] args) throws java.io.IOException{
String[] devices = Jpcap.getDeviceList();
for (inti = 0; i < devices.length; i++) {
System.out.println(devices[i]);
}
String deviceName = devices[0];
Jpcapjpcap = Jpcap.openDevice(deviceName, 1028, false, 1);
jpcap.loopPacket(-1, new JpcapTip());
}




为了执行这个类,你必须确保虚拟机可以找到Jpcap的本地库。在Window上,如果jpcap.dll在库地址目录中,Java命令如下:

java -Djava.library.path=lib -cp lib\jpcap.jar;. JpcapTip



执行测试类的输出则如下(出于篇幅考虑进行了缩减):

ARP REQUEST 00:06:5b:01:b2:4d(192.168.15.79) 
00:00:00:00:00:00(192.168.15.34)
ARP REQUEST 00:06:5b:01:b2:4d(192.168.15.79) 
00:00:00:00:00:00(192.168.15.34)
1052251329:525479 192.168.15.103->255.255.255.255 protocol(17) priority(0) 
hop(
offset(0) ident(59244) UDP 1211 1211

分享到:
评论

相关推荐

    Java jpcap抓包

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

    jpcap java抓包必需jar包

    3. **实时数据包捕获**:jpcap能够实时捕获网络接口上的数据包,支持多种网络协议,包括TCP、UDP、IP、ICMP等。 4. **数据包过滤**:jpcap支持BPF(Berkeley Packet Filter)语法,可以设置过滤规则,只捕获满足...

    JPCAP网络抓包

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

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

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

    jpcap监听网络 收发数据包java

    【标题】"jpcap监听网络 收发数据包java" 涉及的主要知识点是Java编程中的网络数据包捕获和发送,其中jpcap库是一个关键工具。jpcap是一个开源的Java库,它提供了对网络接口的低级访问,能够用于捕获、过滤、发送和...

    java arp jpcap

    Java ARP (Address Resolution Protocol) 和 jpcap 是网络编程领域中的关键概念,它们在实现网络嗅探、数据包捕获和网络分析时起着重要作用。本文将深入探讨这两个概念及其结合使用的方式。 ARP(地址解析协议)是...

    Java调用jpcap获取本机所有get请求

    Java调用jpcap库获取本机所有GET请求是一个实用的技术点,特别是在网络监控、数据分析或者测试场景下。jpcap是一个开源的Java库,它提供了对网络接口数据包捕获和分析的能力,类似于C语言的libpcap库。下面我们将...

    Jpcap_Filter.rar_java 数据包_jpcap_jpcap java_包过滤

    `Jpcap`是Java Packet Capture的简称,它为Java开发者提供了一个强大的工具,能够访问和操作网络接口,以便捕获网络上的数据包。这个库支持多种操作系统,包括Windows、Linux和Mac OS X,使得跨平台的网络数据包分析...

    Java抓包工具 jpcap WinPcap

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

    Jpcap 0.7.rpm 捕获Java程序中的网络包 Linux

    捕获Java程序中的网络包,是需要一些辅助工具,因为核心Java API不能访问底层的网络数据。Jpcap是一种提供在Windows或UNIX系统上进行这种访问的Java API。

    java jpcap小程序

    Jpcap是一个强大的Java库,允许开发者捕获、分析和过滤网络数据包,这对于网络监控、安全分析以及性能调试等工作至关重要。 Jpcap库提供了丰富的API,可以方便地访问网络接口信息,包括但不限于设备列表、网络...

    jpcap依赖包及代码

    2. **实时数据包捕获**:可以实时捕获网络上的数据包,并且可以选择性地过滤特定类型的包。 3. **数据包解析**:提供了各种网络协议(如TCP、UDP、IP等)的数据包解析器。 4. **数据包构造和发送**:除了捕获,jpcap...

    java下进行抓包使用的jpcap.dll和jpcap.rar资源

    它提供了API,允许开发者在Java程序中捕获网络接口上的原始数据包,类似于Windows平台下的Wireshark或Linux下的tcpdump工具。Jpcap库的核心功能包括: 1. **数据包捕获**:通过Jpcap,你可以访问操作系统底层的网络...

    java抓包工具jpcap

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

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

    4. 数据包捕获:解释如何使用JPCAP捕获网络流量,包括设置过滤器和解析数据包。 5. 实验结果与分析:展示实验过程中的数据和观察,可能包括发送和接收的数据包示例,以及一些性能指标。 6. 结论与展望:总结项目成果...

    jpcap-0.7包

    1. 包捕获:jpcap可以实时捕获网络接口上的数据包,包括TCP、UDP、IP以及其他各种协议的数据包。 2. 数据包过滤:通过定义过滤规则,jpcap可以筛选出符合特定条件的网络包,例如只捕获特定端口或IP地址的通信。 3. ...

    在java调用pcap的jpcap库

    jpcap链接库(SDK)打包下载 jpcap是java下调用pcap的一个链接库

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

    1. 数据包捕获:jpcap能够实时捕获网络接口上的数据包,支持多种网络协议,如TCP/IP、UDP、ICMP等。 2. 数据包过滤:提供强大的数据包过滤机制,可以根据协议字段、端口号、IP地址等条件筛选捕获的数据包。 3. ...

    java 数据包捕获jpcap插件

    2. **数据包捕获**:`jpcap`提供了一系列API,允许开发者设置过滤规则,按照特定条件捕获网络数据包。这些数据包可以是TCP、UDP、ICMP等各种协议类型。 3. **数据包解析**:捕获到的数据包可以被`jpcap`解析成结构...

    jpcap抓包java代码以及依赖

    标题中的“jpcap抓包java代码以及依赖”指出,这个压缩包包含了使用Java进行网络数据包捕获(抓包)所需的相关资源和代码。jpcap是一个Java库,允许开发者在Java应用程序中实现网络数据包捕获和分析功能。在IT领域,...

Global site tag (gtag.js) - Google Analytics