`
wankunde
  • 浏览: 158539 次
  • 性别: 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 arp jpcap

    java arp jpcap java arp jpcap java arp jpcap java arp jpcap java arp jpcap

    Java jpcap抓包

    用Java和jpcap写的一个抓包的程序。可以抓WiFi的包。

    jpcap java抓包必需jar包

    jPCAP在JAVA中,并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用winpcap/libpcap,给 JAVA语言提供一个公共的接口,从而实现了平台无关性。

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

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

    java jpcap 抓包

    jpcap是使用java实现的抓包工具。该资源有详细的说明使用文档,

    JPCAP网络抓包

    采用JPCAP开源库开发的一款网络抓包工具.简单易用.

    Jpcap详细使用说明

    Jpcap是一个能够捕获、发送网络数据包的java类库包。这个包用到了Libpcap和原始套接字API,目前,Jpcap在FreeBSD 3.x, Linux RedHat 6.1, Solaris, and Microsoft Windows 2000/XP系统上已经做过测试,并且支持...

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

    使用JAVA库JPCAP来在传输层构造TCP数据包发送,并在网络层捕获数据包!

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

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

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

    包含64位和32位的,请注意区分,请先安装winPcap。。。

    Jpcap-0.7_java

    用Jpcap,你可以开发应用程序捕获数据包从一个网络接口和可视化/分析他们在java。您还可以开发Java应用程序通过网络接口发送任意数据包。 Jpcap已在微软视窗(98/2000/XP/Vista)测试,Linux操作系统(Fedora的,的...

    网络抓包工具Jpcap_Java.zip

    Jpcap 是捕获和发送网络包的 Java 库。Jpcap 是基于 libcap 和 winpcap 的,所以 Jpcap 可以运行在任意支持 libcap 或者 winpcap 的平台上(Linux ,Windows,FreeBSD 和 Mac OS X)。Jpcap 支持以下的集中数据包...

    java 数据包捕获jpcap插件

    jpcap插件,在用java进行数据包捕获时,必不可少的插件。我空间里另有winpcap,jpcap.dll,欢迎下载

    java 的jpcap帮助文档

    java 的jpcap帮助文档 是java的外部jar文件的类的,帮助文档

    Jpcap_Filter.rar_java 数据包_jpcap_jpcap java_包过滤

    JAVA JPCAP 实现数据链路层过滤数据包

    在java调用pcap的jpcap库

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

    jpcap监听网络 收发数据包java

    可以模拟收发网卡数据,需要配置jpcap,默认设置收发了udp数据包可以自行更改

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

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

    JAVA抓包工具jpcap.zip

    JAVA抓包工具jpcap 32位 64位 86位合集 目前已测试64 和 86 可用 32位是我从官网下载的应该也可以 不过因为没用到所以32位没测试 目前是windows版本 x64的测试代码也在文件夹里面 目前正在试linux版本 后期成功以后...

    java jpcap小程序

    主要是针对初学jpcap的小demo,可以获取绑定网络设备,打印IP信息!

Global site tag (gtag.js) - Google Analytics