jpcap+API 使用

合集下载

调用api方法

调用api方法

调用api方法
调用API方法指的是使用编程语言中提供的API(应用程序接口)来调用特定的功能或服务。

API方法可以是预定义的函数或类,也可以是自定义的指令。

通过调用API方法,程序可以与外部服务或系统进行交互,获取数据或执行操作。

例如,使用Google Maps API可以获取地图数据并在自己的应用程序中显示地图。

使用Twitter API可以获取用户推文并在自己的应用程序中显示。

调用API方法的步骤通常包括以下几个步骤:
1. 注册API,并获取API密钥或访问令牌。

2. 查找API文档,了解可用的API方法和相应的参数。

3. 在编程语言中引入API库或包,并初始化API密钥或令牌。

4. 调用API方法,并传递所需的参数。

5. 处理API返回结果,并根据需要进行逻辑处理。

调用API方法可以加快开发速度,减少重复代码,提高程序的可扩展性和稳定性。

同时,需要注意API的使用限制和费用问题,避免超出使用限额或被收取高额费用。

- 1 -。

Jpcap_使用指南

Jpcap_使用指南

Jpcap 使用指南Keita Fujii原文出自:/kfujii/jpcap/doc/tutorial/index.html引言本文描述了如何使用Jpcap开发应用软件。

不仅解释了在Jpcap中定义的功能以及类,而且也通过一些程序代码实例对如何使用Jpcap来设计程序进行了全面的阐述。

最新的版本可以在/kfujii/jpcap/doc/tutorial/index.html找到。

Jpcap简介Jpcap是源自于Java应用的一个开源类库,主要用于捕获、发送网络数据包。

它提供以下功能:●捕获未加工的原始数据包。

●保存捕获到的数据包到本地文件,从本地文件读出先前捕获的数据包。

●自动分辨数据包的类型并产生相应的Java类(如:Ethenet、IPv4、IPv6、ARP/RARP、TCP、UDP和ICMP包)。

●根据用户在程序代码中指定的过滤规则过滤数据包。

●向网络发送各种数型的数据包利用Jpcap包能够开发以下几种类型的应用程序:●网络以及协议的分析器●网络监听器●网络流量记录器●网络流量发生器●用户级的网桥、路由●网络入侵检测系统●网络扫描器●网络安全工具箱Jpcap捕获、发送数据包是独立于主机协议(如:TCP/IP)的,这也就意味着Jpcap不能阻塞、过滤或操纵由宿主机上其他程序产生的网路流量。

因此它不支持诸如:流量调节器、QoS schedulers以及个人防火墙这一类应用。

Jpcap使用指南1.获取网络接口列表要想从网络中捕获数据包,第一件必须要做的事就是获取本机的网络接口列表。

Jpcap 提供了方法JpcapCaptor.getDeviceList()完成这个任务,该方法返回一组NetworkInterface对象。

NetworkInterface接口对象包含了对应网络接口的一些信息,例如:名称、描述、IP以及MAC地址以及数据链路层名称和描述。

例一:获取网络接口列表以及网络接口基本信息2.打开网络接口一旦有了网络接口列表就可以从选定用于捕获数据包的网络接口,可以使用方法JpcapCaptor.openDevice()来打开网络接口。

Jpcap包的安装与配置

Jpcap包的安装与配置

Jpcap包的安装与配置木子制作 2008年11月6日本人刚学Java不久,发现Java真的很有趣。

Java是一门网络编程语言,肯定与网络有关系。

这学期教我们Java(网络编程技术)的是谭院长,虽然我不认同他的教学方式,不过他如此教学肯定有他的理由,毕竟谭院长也教了很多优秀的学生。

谭院长要求我们DO,我呢,毕竟对Java也比较刚兴趣,所以就随着谭院长的课程,一点一点的DO,发现其中真的很有奥妙。

我第一次DO的内容就是安装Java,这在以前的博客中(Java的安装与配置)也说了,就不多说了,后面DO的就是如何使用Java开发工具Jcreator。

这一次我想说的就是如何DO---Jpcap包的安装与配置。

Jpcap包的安装与配置没有我们想象的那么简单,请听我慢慢道来。

我还是分两个部分来说吧,一个是如何在Jcreator的环境下使用Jpcap,一个是如何在Eclipse环境下使用。

一、Jcreator的环境下安装与配置Jpcap步骤:1)下载并安装JDK(以前已提供并介绍了环境变量的配置,所以就不啰嗦了);2)下载并安装winpcap(可以下载最新版本)(压缩包里已经是最新成熟的版本);3)配置Jpcap路径:这一步也是最重要的一步。

具体路径为,把Jpcap文件夹下lib文件夹里的Jpcap.dll复制到"C:\Program Files\Java\jdk1.5.0_16\jre\bin"文件夹里面(复制到你机器JDK文件夹->jre->bin,放到bin文件夹里面就可以了),再把Jpcap文件夹下lib文件夹里的Jpcap.jar复制到"C:\Program Files\Java\jdk1.5.0_16\jre\lib\ext"文件夹里面(复制到你机器JDK文件夹->jre->lib->ext放到ext文件夹里面就可以了),啰嗦了一点,一定够清楚了吧;注意点:配置Jpcap路径要正确不光这样,还有一点最重要的就是我们如果使用JDk1.5的话就不能使用Jpcap的最新版(0.7),最好使用0.5或者以前的(压缩包里提供能够兼容JDK1.5的Jpcap),我尝试过,发现如果使用高版本的Jpcap的话,程序有可能不支持一些过程了,毕竟Jpcap是一个很好的工具,当然需要跟着时代的步伐,不支持一些过程是因为提供了更高效率的过程(或对象)4)配置Jcreator的JDK环境,(一定需要),选择configure->options->JDKProfiles,在JDK Profiles选择框中选择相应的JDK版本,点Edit,选择ADD->ADD->Add Archive,选择你的Jpcap.jar包("C:\Program Files\Java\jdk1.5.0_16\jre\lib\ext"文件夹里),在ok就配置全部完成了;5)编写,调试,运行程序,这一步也是很需要的,有的时候程序编译没有错误,不过就是没有结果,我们应该上网找一些相关的知识,就拿我的程序来说吧,Jpcap正确安装与配置后,编译没有错误,不过没有结果,后面我查了一些资料,觉得有可能跟网卡设备的插槽有关,所以吧网卡设备号修改为1,就ok了。

jPcap网络流量数据采集模块实现

jPcap网络流量数据采集模块实现

如果上面的例子你理解了,那么统计流量数据将是一件非常简单的事;我们的需求就是怎么将这个小模块设计得更加紧凑以便其它对象调用。

流量采集器对外提供调用的类是Tcpdump.java,这个类要根据网卡个类启动对应的后台线程抓取统计数据---也就是说这个启只能启动一次所有线程,无论其它对象如何调用它。

因此我们将Tcpdump.java设计为单实例类;Tcpdump类所要启动的后台线程是LoopPacketThread.java,这个类是实现了Thread的线程,它的run方法中将运行对应的网卡数据统计调用; Tcpdump类中有一个Map,用以存放对应网卡上采集的数据,采集线程会将统计到的数据根据其对应的网卡名字放入到Map中保存。

首先我们看LoopPacketThread.java类的实现:Java代码/***统计某一个网卡上流线的线程* @author */class LoopPacketThread extends Thread{private JpcapCaptor jpcap ;private String ipAdd;/*** 构造器* @param jpcap:cap对象* @param ipAdd:网络地址名字*/public LoopPacketThread(JpcapCaptor jpcap,String ipAdd){ this.jpcap=jpcap;this.ipAdd=ipAdd;}public void run(){//-1表示永远抓取this.jpcap.loopPacket(-1, new DumpPacket(this.ipAdd));}}这个类很简单,关键是它的run方法中,在loopPacket时传入了DumpPacket对象,DumpPacket.java是实现了PacketReceiver接口的类,在其中对网卡数据进行统计,并将统计结果放入缓存:Java代码/*** 抓包监听器,实现PacketReceiver中的方法,当数据包到达时计数.* @author */class DumpPacket implements PacketReceiver {private String ipAdd;DumpPacket(String ipAdd){this.ipAdd=ipAdd;}//实现包统计public void receivePacket(Packet packet) {//将数据加入缓存表中待图片生成servlet提取Tcpdump.ins().putNetValue(ipAdd, packet.len);System.out.println(currentTime()+": "+ipAdd+" 收到长为:*"+ packet.len);System.out.println(packet);}/***日志时间信息* @return:日志内容时间*/private static String currentTime(){Date d = new Date();SimpleDateFormat kk=new SimpleDateFormat("mm:ss");String strTime=kk.format(d);return strTime;}}OK,接下来就是关键的Tcpdump类实现了:Java代码/*** 1.使用jpcap抓取网络流量的主类,* 2.这个类要根据网卡个数,启动线程分别抓取各个网卡上的流量入中* 3.生成图表的对象从流量表中取出数据* 4.这个类设计为单实例,在第一次调用时启动抓数据线程;* 5.目前没有设计停止抓取机制....* @author */public class Tcpdump {/*** 单实例调用:其它对象调用这个类的方法时,必须通过这个方法 * 这样,保证了流量统计线程的启动,且只启动了一次* */public synchronized static Tcpdump ins(){if(null==tcpdump){tcpdump=new Tcpdump();tcpdump.init();}return tcpdump;}/**生成报表的Servlet调用用于生成图表中数据*/public Map<String, Integer> getNameTrafficMap(){return nameTrafficMap;}/*** 根据网卡个数,启动统计线程* 注意:本地地址,即127.0.0.1上的不统计*/private void init() {try{//获取本机上的网络接口对象final NetworkInterface[] devices = JpcapCaptor.getDeviceL ist();for(int i=0;i<devices.length;i++){NetworkInterface nc=devices[i];//大与零则为有效网卡,不抓本机地址.if(nc.addresses.length>0){//一个网卡可能有多个地址,只取第一个地址String addr=nc.addresses[0].address.toString();// 创建某个卡口上的抓取对象,JpcapCaptor jpcap = JpcapCaptor.openDevice(nc, 200 0, true, 20);//创建对应的抓取线程并启动LoopPacketThread lt=new LoopPacketThread(jpcap,add r);lt.start();System.out.println( addr+"上的采集线程己启动************");}}}catch(Exception ef){ef.printStackTrace();System.out.println("start caputerThread error ! ! ! !"+ef);}}/**IP和抓到包的长度放入hash表中,用表中长度加入放入的长度*/void putNetValue(String name,int value){if(nameTrafficMap.containsKey(name)){value=nameTrafficMap.get(name)+value;nameTrafficMap.put(name, value);}else{nameTrafficMap.put(name, value);}}private Tcpdump(){}/**存入某个地址名字和流量统计值*/private Map<String, Integer> nameTrafficMap=new java.util .HashMap();//单实例private static Tcpdump tcpdump=null;}这个类除了要注意单实例设计模式个,关键的一个方法是:Java代码/**IP和抓到包的长度放入hash表中,用表中长度加入放入的长度*/ void putNetValue(String name,int value){if(nameTrafficMap.containsKey(name)){value=nameTrafficMap.get(name)+value;nameTrafficMap.put(name, value);}else{nameTrafficMap.put(name, value);}}这个方法保证了采集到的数据在内存中的连续性,生成图片的Servlet从这个map中每取一次对应网卡的数据,就将其历史统计值清零。

jbmp用户指南

jbmp用户指南

使用jBPM开发基于WEB的工作流,首先需要搭建好开发环境,经过一段时间的摸索,先将环境搭建的步骤做个简要说明:1.前提:Eclipse 3.2MyEclipse 5.0GAjBPM3.1.2(jbpm-starters-kit-3.1.2)Oracle 10gStruts1.2Hibernate32.至于数据库的脚本生成就不说了,有些参考资料讲得比较清楚,也有备份。

3.安装完JBPM的相关Eclipse插件以后,就可以使用Eclipse创建(new...)一个Process Project以及相关的ProcessDefinition,但这不是我们想要的。

我们想要的从步骤4开始。

4.使用Eclipse创建一个Web Project,加入必要的框架包,如Struts,JSTL等。

5.在构建路径中配置jBPM库,这也是环境搭建的重点。

由于使用默认的Process Project 可以帮我们创建好jBPM库,但没有帮我们创建WEB环境,因此,我们首先建立WEB工程,再来搭建JBPM库。

6.在工程的“Build Path”中选择配置构建路径(Config Build Path...)。

7.在打开的窗口中选择右边的Libraries标签库,通过Add Library选项,在打开的窗口中添加一个jBPM库。

8.可以看到没有所谓的jBPM库选项,因此要自己动手,选择User Library选项,创建一个自定义的用户库,取名为jBPM Library [jBPM Runtime]。

9.添加jar文件到我们自定义的User Library中,需要添加的内容是:jbpm-starters-kit-3.1.2\jbpm.3\lib目录下的所有jar包;jbpm-starters-kit-3.1.2\jbpm.3\build目录下的所有jar包。

OK,开发环境初步搭建完成,我们同样可以在新建的工程中自由的创建Process Definition 文件。

网络流量分析系统的设计与实现

网络流量分析系统的设计与实现

网络流量分析系统的设计与实现摘要:本文在明确网络流量分析重要性的基础上,设计了系统的网络布局结构,并详细研究了网络流量分析系统的实现,涉及到:数据的采集以及数据的分析。

关键词:网络流量;数据分析;网络安全 1 引言随着网络技术的发展和网络规模日益扩大,网络结构越来越复杂,网络设备种类和网络所承载的业务种类不断增多,这些都使得网络出现各种故障或性能问题的可能性大大增加[1]。

同时,用户服务质量的要求却在不断提高,这样就导致了网络管理的难度更大。

网络流量分析系统的目的是通过对网络设备和网络运行的流量进行监测,及时的发现网络中的异常情况,提醒网管人员采取必要措施以保证网络的正常运行。

2网络流量分析系统的网络布局设计本文研究的网络流量分析系统的网络布局如图2-1所示:图2-1 网络流量分析系统的网络布局图由图2-1可以知道,在本文研究的网络流量分析系统的网络布局中,我们将系统的分析与控制功能进行了分离,分为两个设备进行处理。

图2-1中的直路设备只负责完成流量的分光(镜像)和流量控制,由旁路设备负责网络数据流量的分析和流量控制策略的下放。

这种网络流量分析系统部署方式集中了旁路和直路的优势,由旁路设备进行深入的协议分析,把分析的结果告知直路设备,直路设备直接丢包进行流量控制[2]。

这样既免去了为每种需要控制的协议软件分析控制方案的工作量,节约了设备处理发送控制报文的性能同时直路设备只用处理丢包流程,一般也不会造成网络的瘫痪。

在具体的处理流程中,旁路设备部分进行数据的分析和其它处理,如果需要对数据进行控制,旁路设备按照事先的分析结果对简单的协议进行控制(减轻直路设备的压力),并将难于控制的协议的用户IP或帐号发送给直路设备,直路设备对其进行丢包达到控制的目的[3]。

一般选用防火墙作为直路设备。

3网络流量分析系统的实现3.1网络流量数据的采集在采集网络流量数据前先要查看机器网卡的配置情况,以及相关的信息。

这样有利于数据包的分析。

开放API使用方法:快速上手,轻松实现功能扩展(十)

开放API使用方法:快速上手,轻松实现功能扩展(十)

开放API使用方法:快速上手,轻松实现功能扩展随着互联网技术的快速发展,开放API(Application Programming Interface)成为了各类应用程序之间实现数据交互和功能扩展的重要手段。

无论是移动应用、网站,还是智能设备,都可以通过调用开放API,实现与其他应用程序的无缝对接。

本文将介绍开放API的使用方法,帮助读者快速上手,并轻松实现功能扩展。

一、了解API的基本概念在使用开放API之前,首先需要了解API的基本概念。

API是一组定义了应用程序之间如何互相访问和通信的规范和工具集合。

开放API是指供第三方开发者使用的API,通常由服务提供商开放给公众使用。

开放API提供了一系列的接口和方法,使得开发者可以在自己的应用程序中调用其他应用程序的功能和数据。

二、选择适合的开放API在选择使用开放API时,需要根据自己的需求来确定合适的API。

首先要明确自己的应用程序需要实现哪些功能,然后在各大开放API平台上搜索相应的API。

常见的开放API平台有谷歌开放平台、Twitter开放平台、Facebook开放平台等。

这些平台提供了丰富的API 资源,包括地图API、社交媒体API、支付API等,可以满足不同应用程序的需求。

三、获取API密钥在使用开放API之前,通常需要获取相应的API密钥。

API密钥是用于标识和验证开发者身份的密钥。

每个API都有自己的密钥生成方式,具体可以在开放API平台的开发者文档中查找。

获取API密钥通常需要注册开发者账号,并按照平台提供的步骤进行申请和验证。

四、阅读官方文档与示例代码获得API密钥后,需要详细阅读开放API的官方文档与示例代码。

官方文档提供了API的使用说明、接口参数、返回结果等信息,可以帮助开发者理解和正确使用API。

示例代码则可以帮助开发者快速上手,了解API的调用方式和参数设置。

五、使用API进行功能扩展在熟悉API的基本使用方法后,就可以开始使用API进行功能扩展了。

开放API使用方法:快速上手,轻松实现功能扩展(三)

开放API使用方法:快速上手,轻松实现功能扩展(三)

开放API使用方法:快速上手,轻松实现功能扩展引言:在当今数字化社会中,各种应用程序和软件的功能扩展变得越来越重要。

通过开放API(应用程序接口)的使用,开发者可以轻松地将不同的应用程序和服务进行互联和集成。

本文将介绍API的基本概念,并提供一些快速上手的方法,帮助读者在进行功能扩展时更加高效和便捷。

1. 什么是开放API开放API是一种允许开发者访问和使用其他应用程序或服务的编程接口。

它提供了一组规定的方法和协议,使不同的应用程序可以相互通信和交换数据。

通过使用开放API,不同的应用程序可以实现互联和集成,实现共享数据和功能。

2. 快速上手的方法API文档阅读使用开放API之前,首先要仔细阅读相关的API文档。

API文档提供了关于接口的详细信息,包括访问方法、参数列表、返回值等。

通过仔细阅读文档,开发者可以了解如何正确地调用API,并开始进行功能扩展。

授权和身份验证许多开放API都要求开发者进行授权和身份验证。

在使用API之前,开发者需要注册和获取相应的API密钥或令牌。

这些授权信息将用于验证开发者的身份,并确保API的正常使用。

授权和身份验证的过程可能因API的不同而有所变化,开发者需要仔细阅读相关文档并按要求进行操作。

调用API进行功能扩展一旦获得了相关的授权信息,开发者就可以开始调用API进行功能扩展。

通过调用API,开发者可以获取所需的数据、实现特定的功能,或与其他应用程序进行交互。

在调用API时,开发者需要按照API文档中的要求,正确设置参数,并处理返回的数据。

3. 开放API的优势和应用场景提高开发效率通过使用开放API,开发者可以利用已有软件和服务的功能,避免从零开始开发。

这可以大大提高开发效率,减少重复的劳动。

开发者可以重点关注自己的核心业务逻辑,而不需要关注底层的实现细节。

扩展功能和增加价值开放API允许不同的应用程序进行集成和互联,这为应用程序的功能扩展提供了无限的可能性。

api使用流程

api使用流程

api使用流程API(应用程序接口)使用流程通常涉及以下步骤:1. 了解API:首先,你需要了解你要使用的API是什么,它的功能是什么,以及它提供哪些资源。

这通常可以通过查看API的文档或开发者指南来完成。

2. 注册和获取API密钥:大多数API需要注册账号并获取API密钥,以便进行身份验证和跟踪请求。

3. 选择请求方法:根据API的功能,你可能需要使用GET、POST、PUT、DELETE等HTTP请求方法。

GET通常用于获取数据,POST用于创建新资源,PUT和DELETE用于更新或删除资源。

4. 构建请求URL:根据API的文档,构建正确的请求URL。

这通常包括API的基础URL、端点(endpoint)和任何必要的查询参数。

5. 发送请求:使用你选择的编程语言或工具,发送HTTP请求到API。

这通常涉及到设置请求头(如Content-Type和Authorization),并发送请求体(如果是POST或PUT请求)。

6. 处理响应:接收API的响应,并根据需要处理数据。

响应可能是JSON、XML或其他格式,具体取决于API的文档。

7. 错误处理和日志记录:对于任何请求,都应该处理可能出现的错误,并记录日志以供将来参考。

8. 遵守使用限制和速率限制:大多数API都有使用限制和速率限制,以确保服务的稳定性和防止滥用。

确保你的应用程序遵守这些限制。

9. 测试和调试:在将应用程序部署到生产环境之前,应该在测试环境中测试API的使用,并调试任何问题。

10. 维护和更新:随着时间的推移,API可能会更新或更改。

定期查看API 的文档,确保你的应用程序与最新的API版本保持一致。

以上是一个大致的流程,具体细节可能因不同的API而异。

务必仔细阅读API的文档,以获得最准确的信息。

jpcap 例子

jpcap 例子

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 ...
为了执行这个类,你必须确保虚拟机可以找到Jpcap的本地库。在Window上,如果jpcap.dll在库地址目录中,Java命令如下:
java -Djava.library.path=lib -cp lib\jpcap.jar;. JpcapTip
执行测试类的输出则如下(出于篇幅考虑进行了缩减):
捕获Java中的包并不是一种完美的Java应用,但是,在可能的情况下,最好还是了解其现有的功能。
[注意]我发的一些东东大家看起来未必有用,不过都曾是我需要的。当有人用搜索引擎搜索时或许会找到这里,这里不是在许多论坛可以看到的只有提问,而是解决方法,我想这样一点一滴的做会对论坛有帮助。大家不必支持我,支持论坛发展就可以了。
如果你想捕获Java程序中的网络包,那么你需要一些辅助工具,因为核心Java API不能访问底层的网络数据。但Jpcap是一种提供在Windows或UNIX系统上进行这种访问的Java API。
下面则是全部测试类的代码
下面则是全部测试类的代码:
下面则是全部测试类的代码:
import jpcap.JpcapHandler;

开放API使用教程:从入门到精通的实用指南(一)

开放API使用教程:从入门到精通的实用指南(一)

开放API使用教程:从入门到精通的实用指南引言:API(Application Programming Interface)是一种允许软件应用程序之间进行交互和通信的工具。

开放API则是指可以被外部开发者使用的API。

随着互联网的迅猛发展,开放API越来越受到重视,并成为了众多互联网公司的标配。

本文将介绍开放API的基本概念、使用入门和提升技巧,帮助读者从入门到精通开放API的使用。

一、了解开放API在开始使用开放API之前,我们需要了解什么是API。

API是一套规定了软件之间交互方式和数据传输格式的接口。

开放API则是指被第三方开发者所使用的API,通常由互联网公司提供。

开放API可以用于访问各种服务,比如社交媒体平台、地图服务、支付渠道等。

通过使用开放API,我们可以以各种方式调用这些服务,并拓展自己的应用功能。

二、入门使用开放API1.选择合适的开放API在开始使用开放API之前,我们需要选择适合自己需求的API。

不同的API有不同的功能和限制,我们需要根据自己的应用场景选择合适的API。

一般来说,我们可以参考互联网公司的文档和示例代码,以及开发者社区的反馈来进行选择。

2.注册和获取API密钥大部分开放API需要我们进行注册并获取API密钥。

API密钥是访问API的凭证,可以保证接口调用的安全性和可追溯性。

注册通常需要提供个人或公司的相关信息,并经过审核。

获取API密钥后,我们可以使用它进行接口调用。

3.理解API文档和示例代码在获得API密钥后,我们需要仔细阅读API的文档和示例代码。

API文档通常包含接口的调用方式、参数说明和返回结果等信息。

示例代码可以帮助我们快速上手和理解API的使用方法。

通常,互联网公司会提供多种语言的示例代码,我们可以选择适合自己的语言进行开发。

4.进行接口调用在理解API文档和示例代码后,我们可以开始进行接口调用。

接口调用的方式可以是HTTP请求、SOAP调用或者RPC调用等。

Jpcap 使用指南

Jpcap 使用指南

Jpcap 使用指南Keita Fujii原文出自:/kfujii/jpcap/doc/tutorial/index.html引言本文描述了如何使用Jpcap开发应用软件。

不仅解释了在Jpcap中定义的功能以及类,而且也通过一些程序代码实例对如何使用Jpcap来设计程序进行了全面的阐述。

最新的版本可以在/kfujii/jpcap/doc/tutorial/index.html找到。

Jpcap简介Jpcap是源自于Java应用的一个开源类库,主要用于捕获、发送网络数据包。

它提供以下功能:●捕获末加工的原始数据包。

●保存捕获到的数据包到本地文件,从本地文件读出先前捕获的数据包。

●自动分辨数据包的类型并产生相应的Java类(如:Ethenet、IPv4、IPv6、ARP/RARP、TCP、UDP和ICMP包)。

●根据用户在程序代码中指定的过滤规则过滤数据包。

●向网络发送各种数型的数据包利用Jpcap包能够开发以下几种类型的应用程序:●网络以及协议的分析器●网络监听器●网络流量记录器●网络流量发生器●用户级的网桥、路由●网络入侵检测系统●网络扫描器●网络安全工具箱Jpcap捕获、发送数据包是独立于主机协议(如:TCP/IP)的,这也就意味着Jpcap不能阻塞、过滤或操纵由宿主机上其他程序产生的网路流量。

因此它不支持诸如:流量调节器、QoS schedulers以及个人防火墙这一类应用。

Jpcap使用指南1.获取网络接口列表要想从网络中捕获数据包,第一件必须要做的事就是获取本机的网络接口列表。

Jpcap 提供了方法JpcapCaptor.getDeviceList()完成这个任务,该方法返回一组NetworkInterface对象。

NetworkInterface接口对象包含了对应网络接口的一些信息,例如:名称、描述、IP以及MAC地址以及数据链路层名称和描述。

例一:获取网络接口列表以及网络接口基本信息2.打开网络接口一旦有了网络接口列表就可以从选定用于捕获数据包的网络接口,可以使用方法JpcapCaptor.openDevice()来打开网络接口。

jpcap+API

jpcap+API

贵州大学2002级硕士研究生学年报告基于JPcap的网络流量分析研究与应用学科专业计算机软件与理论研究方向计算机软件导师李祥教授研究生赵新辉中国∙贵州∙贵阳2003 年6 月目录摘要第一章网络数据包捕获工具Jpcap1.1 Jpcap简介1.2Jpcap需求环境1.3Jpcap的安装1.4Jpcap类库的结构第二章Jpcap类库的分析与应用2.1 使用JpcapHandler接口2.2 使用DatalinkPacket类2.3 使用EthernetPacket类2.4 使用IPAddress类2.5 使用IPv6Option类2.6 使用Jpcap类2.7 使用Jpcap.JpcapInfo类2.8 使用JpcapSender类2.9 使用JpcapWriter类2.10 使用Packet类2.11 使用ARPPacket类2.12 使用IPPacket类2.13 使用ICMPPacket类2.14 使用TCPPacket类2.15 使用UDPPacket类第三章Jpcap在流量分析中的应用3.1 流量分析的研究概况3.1.1 流量分析概况3.1.2 国内研究状况3.1.3 网络流量自相似分析3.2 利用Jpcap实现网络流量图示分析3.3 利用Jpcap实现网络Ethereal工具参考文献摘要论文从JPcap的产生、发展到目前的最新版本,针对Jpcap 0.4版本,对类库中一个类做了必要的分析说明,列出了每个类的继承关系、数据成员、构造函数和成员函数,并对其的功能做了简要地说明。

针对类的功能,为每个类设计了一个Java程序,用实例说明该类的使用方法。

最后使用Jpcap类库设计了一个程序,实现了对局域网内用户上网的口令密码的监听,并做了实际的测试。

Jpcap是日本人Keita Fujiiy开发的一套能够捕获、发送网络数据包的java类库。

这个包用到了libpcap 和原始套接字API,Jpcap在FreeBSD 3.x, Linux RedHat 6.1, Solaris, and Microsoft Windows 2000/XP等系统上经过测试,并且支持Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP,ICMPv4协议。

使用JPCAP实现监听

使用JPCAP实现监听

使用JPCAP实现监听JPCAP是一种Java库,它提供了在Java程序中进行网络分析和封包捕捉的功能。

这个库可以用于捕捉、分析和操作网络流量。

JPCAP可以被用来实现各种网络应用,比如网络监控、数据分析和安全工具等。

本文将重点介绍如何使用JPCAP来实现网络监听。

1.安装和配置JPCAP库2.导入必要的类和包在Java代码中,你需要导入相应的类和包来使用JPCAP库的功能。

以下是一些常用的类和包:```import jpcap.*;import jpcap.packet.*;```3.设置网络设备和过滤器在开始监听之前,你需要指定要监听的网络设备和过滤器。

可以使用NetworkInterface类来获取可以监听的设备列表,并选择一个设备进行监听。

```NetworkInterface[] devices = JpcapCaptor.getDeviceList(;NetworkInterface device = devices[0]; //选择第一个设备//设置过滤器String filter = "tcp and port 80"; //监听TCP协议和80端口的流量```4. 创建JpcapCaptor实例使用选择的设备和过滤器创建一个JpcapCaptor对象实例,将其用于捕获网络流量。

```JpcapCaptor pcap = JpcapCaptor.openDevice(device, 2000, false, 20);```在这个例子中,我们创建了一个最大缓冲区为2000字节的JpcapCaptor对象。

第三个参数指定了是否设置混杂模式,第四个参数指定了超时时间。

5.监听网络流量一旦你创建了JpcapCaptor对象实例,你就可以开始监听网络流量了。

可以使用capturePacket(方法来捕获单个封包,或者使用processPacket(方法启动一个无限循环,以持续捕获流量。

jpcap packet解析

jpcap packet解析

jpcap packet解析
首先,jpcap库提供了一种方便的方式来捕获网络数据包。


过jpcap,开发人员可以编写程序来监听网络接口,捕获经过该接
口的数据包。

一旦捕获到数据包,开发人员就可以使用jpcap提供
的方法来解析这些数据包,提取出其中的各种信息,比如源IP地址、目标IP地址、协议类型、数据长度等等。

其次,jpcap库还提供了丰富的工具和方法来对捕获到的数据
包进行解析。

开发人员可以使用jpcap提供的方法来解析数据包的
各个部分,比如以太网帧头部、IP数据报头部、TCP/UDP数据报头
部等等。

通过解析这些部分,开发人员可以获取到数据包中的各种
信息,从而进行进一步的分析和处理。

另外,jpcap库还支持对数据包进行过滤和重组。

开发人员可
以使用jpcap提供的过滤器来筛选出他们感兴趣的数据包,从而减
少解析的工作量。

此外,jpcap还提供了方法来重组数据包,比如
将分片的IP数据报重组成完整的数据报,从而方便开发人员进行后
续的处理和分析。

总的来说,jpcap库为开发人员提供了一种方便而强大的工具
来捕获和解析网络数据包。

通过使用jpcap,开发人员可以编写程序来实现各种网络数据包的解析和分析功能,从而更好地理解和掌握网络通信过程中的各种细节。

希望这些信息能够对你有所帮助。

4.1.2 用Jpcap窃取数据包[共10页]

4.1.2 用Jpcap窃取数据包[共10页]

微博是这样炼成的:从聊天室到Twitter的技术实现2064.1.2 用Jpcap窃取数据包1.Jpcap说明与安装JDK中提供的API在操作TCP/UDP通信方面有较强的功能,但对于网络层以下的控制却是无能为力的。

如果在通信过程中,需要实现TCP或链路层数据包的抓取分析,利用JDK现有的API 是无法做到的。

Jpcap扩展包弥补了这一点,Jpcap是可以让Java工作在链路层的开源类库,调用Jpcap中的API可以“抓取”到通过机器网卡上的字节数据及数据包的相关信息。

当然,它的底层还是使用了本机API通过Jini调用在JavaAPI中得到数据。

Jpcap实际上并非真正去实现对数据链路层的控制,而是一个“中间件”,Jpcap调用wincap/libpcap,从而给Java语言提供一个公共的接口,实现了平台无关性。

Jpcap支持FreeBSD 3.x、Linux RedHat 6.1、Fedora Core 4、Solaris和Windows 2000/XP等系统。

Jpcap下载地址为:/kfujii/jpcap/doc/index.html。

用户可以从Jpcap网站上直接下载它的桌面应用程序进行测试,全面地统计本机的网络数据流量和查看收发的数据包。

本项目中使用的是Jpcap 0.6版本,从网站下载Source build后,可以看到如图4.6所示目录结构。

▲ 图4.6 下载后的目录结构其中文档、源码、例程及本机应用程序一应俱全,用户可以马上安装应用程序体验Jpcap的网格功能。

使用Jpcap可以编写出功能完备的网络嗅探程序。

本节中,只是使用其非常简单的一个功能:显示本机每块网卡上收发的数据。

特别注意:Jpcap运行时依赖WinCap的类库,使用前必须在本机安装WinCap (/)(如果是在linux系统上,则请到/下载)。

本节中Jpcap版本为0.6,WinCap版本为4.0,运行于Windows系统上。

jpcap教程

jpcap教程

3获取网络接口设备[网卡设备]想要捕捉网络数据包,首先要得到你电脑了的网络接口设备,也就是所谓的网卡设备.Jpcap包向我们提供了这一个类方法[静态方法]:JpcapCaptor.getDeviceList( ) ,从字面见就知道返回的是网络接口设备的列表,NetworkInterface类,网络接口类。

其封装了相应网络设口信息,比如:网卡名,网卡描述,网卡所处的数据链路层的名称,描述等等。

简单的应用代码如下:/*** @(#)GetDevices.java* 显示网络接口设备信息的Demo* @author scholar_ii* @version 1.00 2005/12/16*/import jpcap.*;public class GetDevices{public GetDevices(){}public static void ShowNeworkInterfaceDevices(){//获得网卡设备的实例列表NetworkInterface[] devices = JpcapCaptor.getDeviceList();//循环输出全部网卡设备对象相应的信息for (int i = 0; i < devices.length; i++){ //设备号,网卡名,网卡描述System.out.println(i+": "+devices[i].name + "(" + devices[i].description+")");//网卡所处数据链路层的名称与其描述System.out.println(" datalink: "+devices[i].datalink_name + "(" +devices[i].datalink_description+")");//网卡MAC地址System.out.print(" MAC address:");for (byte b : devices[i].mac_address)//JDK1.5以上版本的for语法的加强变种[循环遍历]&nbs欢迎光临学网,收藏本篇文章[1] [2]$False$p; //转化为十六进制的字串符表示System.out.print(Integer.toHexString(b&0xff) + ":");System.out.println(); //print out its IP address, subnet mask and broadcast address //输出网卡IP地址IPV4 IPV6 子网地址扩播地址for (NetworkInterfaceAddress a : devices[i].addresses)System.out.println(" address:"+a.address + " " + a.subnet + " "+ a.broadcast);} }public static void main(String[] args) {ShowNeworkInterfaceDevices();}}可能的运行结果如下(WindowsXP下):0: \Device\NPF_GenericDialupAdapter(Adapter for generic dialup and VPN capture)datalink: EN10MB(Ethernet)MAC address:0:0:0:0:0:0:1: \Device\NPF_{B7CE211D-CEA5-4010-9A39-B833BBEC772D}(Realtek RTL8139/810x Family Fast Ethernet NIC (Microsoft''s Packet Scheduler) )datalink: EN10MB(Ethernet)MAC address:0:e0:4c:87:a0:5a:address:/192.168.1.102 /255.255.255.0 /255.255.255.255注意:0号网卡是一个操作系统的虚拟网卡(有时在上面代码前有图形界面代码如JFrame 之类的代码)可能0号网卡得不到,我的实验结果是这样的在2000下不管怎样都可以得到0与网卡,XP下有图形代码的影响就得不到了。

使用jpcap编写抓包程序

使用jpcap编写抓包程序

使用jpcap编写抓包程序大致原理:winpcap提供底层工具,我们只需要使用它的函数就可以编程,然而很繁琐。

java就再封装一层,就出现JPcap这个中间件了。

使用对比之后,JPcap尼玛不要太方便。

附:工具:winpcap要安装,这个我就不说了。

JPcap作为中间件你需要下载,我没有安装。

1.将JPcap.dll动态链接库加入到我的 C:\Program Files\Java\jdk1.7.0_71\jre\bin 中。

2.Jpacp.jar我直接外部配置路径了。

不多说,贴可用代码主程序类,用于读取网卡接口,并开多线程从各个网卡上读取包package com.sock1;import java.util.Scanner;import jpcap.JpcapCaptor;import workInterface;import jpcap.PacketReceiver;import jpcap.packet.*;/*** 使用jpcap显示网络上的各种数据包* @author */public class sock_main {private static int model;//程序启动主方法public static void main(String args[]){try{System.out.println('请输入你需要抓取的类型包:');System.out.println('TCP包输入‘1’');System.out.println('UDP包输入‘2’');System.out.println('ICMP包输入‘3’');System.out.println('ARP包输入‘4’');Scanner in=new Scanner(System.in);model = in.nextInt();//获取本机上的网络接口对象数组final NetworkInterface[] devices = JpcapCaptor.getDeviceList();for(int i=0;i<devices.length;i ){NetworkInterface nc=devices[i];//创建某个卡口上的抓取对象,最大为2000个JpcapCaptor jpcap = JpcapCaptor.openDevice(nc, 2000, true, 20);startCapThread(jpcap); //线程执行抓包System.out.println('开始抓取第' i '个卡口上的数据');}}catch(Exception ef){ef.printStackTrace();System.out.println('启动失败: ' ef);}}//将每个Captor放到独立线程中运行public static void startCapThread(final JpcapCaptorjpcap ){JpcapCaptor jp=jpcap;ng.Runnable rnner=new Runnable(){ //创建线程public void run(){//使用接包处理器循环抓包jpcap.loopPacket(-1, new TestPacketReceiver(model)); //-1无限抓取包,抓包监听器获取包}};new Thread(rnner).start();//启动抓包线程}}抓包类,实现抓包功能,并输出信息package com.sock1;import jpcap.PacketReceiver;import jpcap.packet.ARPPacket;import jpcap.packet.DatalinkPacket;import jpcap.packet.EthernetPacket;import jpcap.packet.ICMPPacket;import jpcap.packet.Packet;import jpcap.packet.TCPPacket;import jpcap.packet.UDPPacket;/*** 抓包监听器,实现PacketReceiver中的方法:打印出数据包说明*/class TestPacketReceiver implements PacketReceiver {public int model;public TestPacketReceiver (int n){this.model = n;}/*** 实现的接包方法:*/public void receivePacket(Packet packet) {//Tcp包if(packet instanceof jpcap.packet.TCPPacket && model== 1){TCPPacket p=(TCPPacket)packet;String s='TCPPacket:| 目的ip及端口 ' p.dst_ip ':' p.dst_port '|源ip及端口 ' p.src_ip ':' p.src_port' |数据长度: ' p.len;System.out.println(s);}//UDP包else if(packet instanceof jpcap.packet.UDPPacket && model== 2){UDPPacket p=(UDPPacket)packet;String s='UDPPacket:| 目的ip及端口 ' p.dst_ip ':' p.dst_port '||源ip及端口 ' p.src_ip ':' p.src_port' |数据长度: ' p.len;System.out.println(s);}//ICMPPacket包else if(packet instanceof jpcap.packet.ICMPPacket && model== 3){ICMPPacket p=(ICMPPacket)packet;//ICMP包的路由链String router_ip='';for(int i=0;i<p.router_ip.length;i ){router_ip =' ' p.router_ip[i].getHostAddress();}String s='@ @ @ ICMPPacket:| 路由IP: ' router_ip' |redir_ip: ' p.redir_ip' |最大传输单元: ' p.mtu' |长度: ' p.len;System.out.println(s);}//ARP请求包else if(packet instanceof jpcap.packet.ARPPacket && model== 4){ARPPacket p=(ARPPacket)packet;//Returns the hardware address (MAC address) of the senderObject saa= p.getSenderHardwareAddress();Object taa=p.getT argetHardwareAddress();String s='* * * ARPPacket:| 发送硬件地址: ' saa'|目标硬件地址: ' taa' |长度: ' p.len;System.out.println(s);}//取得链路层数据头 :如果你想局网抓包或伪造数据包,嘿嘿DatalinkPacket datalink =packet.datalink;//如果是以太网包if(datalink instanceof jpcap.packet.EthernetPacket){ EthernetPacket ep=(EthernetPacket)datalink; String s=' 以太包: ''|目的MAC: ' ep.getDestinationAddress()'|源MAC: ' ep.getSourceAddress();System.out.println(s);}}}。

专题教程第4期:J-Scope波形软件使用方法(上)

专题教程第4期:J-Scope波形软件使用方法(上)

ZT0004 专题教程
1.2.2 不同版本 JLINK 的速度对比
不同版本 JLINK 的速度对比如下:
截图中的数据主要对于 HSS 模式说的,而 RTT 模式没有这些限制,基本 JLINK 速度支持到多大,RTT 就 可以达到多大。 对于 D 版 JLINK 来说,基本都是截图里面的 Other 选项,也就是说在 HSS 模式下支持 10 个变量采 集,速度 1KHz。
2017年10月24日
版本:1.0
第 9 页 共 19 页
武汉安富莱电子有限公司
ZT0004 专题教程
弹出的界面已经开始采集波形:
通过上面这四步就完成了 HSS 模式的数据显示,是不是很简单。
2017年10月24日
版本:1.0
第 10 页 共 19 页
武汉安富莱电子有限公司
1.2.3 HSS 模式获取数据
HSS 模式比较简单, 仅需大家将 MDK 生成的可执行文件 xxx.axf 或者 IAR 生成的可执行文件 xxx.out 文件加载到 JScope 软件里面即可。 优势 且随时随地都可以连接目标板,不影响目标板的正常功能,不需要额外资源。无需用户写目标板 代码。 不需要用到 SWO 引脚,使用标准的下载接口即可。以我们的开发板为例,用到 VCC,GND, SWDIO,SWCLK 和 NRST。大家使用三线 JLINK-OB 也是没问题的,仅需用到 GND,SWDIO 和 SWCLK。 劣势 相对 RTT 模式,速度慢。 采样速度基本固定在 1KHz 左右,速度较慢,仅适合采样变量变化速度低于 1KHz 的情况。
针对这些问题,SEGGER 推出 J-Scope 波形显示软件,傻瓜式,简单易上手。使用这个功能,可以不 需要用户在目标板上面添加任何代码,用户只需使用 J-Scope 加载 MDK 或者 IAR 的可执行文件即可,而 且随时随地都可以连接目标板,不影响目标板的正常功能,不需要额外资源。 这个软件不需要用到 SWO 引脚, 使用标准的下载接口即可。 以我们的开发板为例, 用到 VCC, GND, SWDIO, SWCLK 和 NRST。 大家使用三线 JLINK-OB 也是没问题的, 仅需用到 GND, SWDIO 和 SWCLK。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

贵州大学2002级硕士研究生学年报告基于JPcap的网络流量分析研究与应用学科专业计算机软件与理论研究方向计算机软件导师李祥教授研究生赵新辉中国•贵州•贵阳2003 年6 月目录摘要第一章网络数据包捕获工具Jpcap1.1 Jpcap简介1.2Jpcap需求环境1.3Jpcap的安装1.4Jpcap类库的结构第二章Jpcap类库的分析与应用2.1 使用JpcapHandler接口2.2 使用DatalinkPacket类2.3 使用EthernetPacket类2.4 使用IPAddress类2.5 使用IPv6Option类2.6 使用Jpcap类2.7 使用Jpcap.JpcapInfo类2.8 使用JpcapSender类2.9 使用JpcapWriter类2.10 使用Packet类2.11 使用ARPPacket类2.12 使用IPPacket类2.13 使用ICMPPacket类2.14 使用TCPPacket类2.15 使用UDPPacket类第三章Jpcap在流量分析中的应用3.1 流量分析的研究概况3.1.1 流量分析概况3.1.2 国内研究状况3.1.3 网络流量自相似分析3.2 利用Jpcap实现网络流量图示分析3.3 利用Jpcap实现网络Ethereal工具参考文献摘要论文从JPcap的产生、发展到目前的最新版本,针对Jpcap 0.4版本,对类库中一个类做了必要的分析说明,列出了每个类的继承关系、数据成员、构造函数和成员函数,并对其的功能做了简要地说明。

针对类的功能,为每个类设计了一个Java程序,用实例说明该类的使用方法。

最后使用Jpcap类库设计了一个程序,实现了对局域网内用户上网的口令密码的监听,并做了实际的测试。

Jpcap是日本人Keita Fujiiy开发的一套能够捕获、发送网络数据包的java类库。

这个包用到了libpcap 和原始套接字API,Jpcap在FreeBSD 3.x, Linux RedHat 6.1, Solaris, and Microsoft Windows 2000/XP等系统上经过测试,并且支持Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP,ICMPv4协议。

其最初版本是2000.6发布的Jpcap0.1版,此后几经修改,到2003.4发布了发布Jpcap0.4版。

Jpcap0.4版本共有1个接口14个类。

针对每个类的不同,文中阐述了每一个类的每一个数据成员和成员函数,并根据其所要实现的不同功能,为每个类设计了一个Java实例程序,做进一步说明。

并结合实际,利用Jpcap 的工作原理与模式,结合流量分析原理,设计并实现网络流量图示分析工具和网络Ethereal工具。

对网络流量的测量为网络研究和网络管理提供了重要的数据。

定期地对网络流量进行分析和调整,是及时了解当前网络性能,避免停运和提供发现早期问题的重要步骤。

通过网络流量分析及优化测试,可以及时获得各网段及关键网络设备的使用情况。

对网络流量研究重点在于通过分析实际环境中网络流量数据的特性,抽取其中对网络性能有深刻影响的因素并建立相应的网络流量模型。

对自相似理论的研究,开拓了对流量分析理论全新的研究领域。

分析流量的特征,目前建模可以利用以下理论:(1) 小波分析(Discrete Wavelet Transform)和分形理论(2) 分形和多重分形(Multifractal)模型并且重点分析了网络数据传输的自相似理论,阐述了自相似性的原理,产生自相似性的原因,并以实例说明了网络传输当中的自相似性。

设计的网络流量分析图示工具和网络Ethereal工具在Win2000下运行效果良好。

关键词:Jpcap,Libpcap,Winpcap,以太帧,TCP协议,IP协议,UDP协议,ARP协议中图分类号:TP393第一章网络数据包捕获工具Jpcap1.1 JPCAP简介Jpcap是一个能够捕获、发送网络数据包的java类库包。

这个包用到了Libpcap和原始套接字API,目前,Jpcap在FreeBSD 3.x, Linux RedHat 6.1, Solaris, and Microsoft Windows 2000/XP 系统上已经做过测试,并且支持Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP, ICMPv4协议。

Jpcap 是由在美国加利福尼亚大学Irvine分校(UCI)攻读博士学位的日本人Keita Fujiiy研制发布的,其主页为/kfujii/ 。

其最初版本是2000.6发布的Jpcap0.1版,此后几经修改,到2003.4发布了发布Jpcap0.4版。

主要发展如下:2000.6.25 Jpcap0.1版发布2000.7.29 Jpcap0.2版发布。

开始支持Microsoft Windows操作系统(包括Win 9x,Win2000和 WinNT)。

2000.9.14 发布Jpcap0.3版本,添加了ARPPacket类,开始支持ARP/ Reverse ARP数据包的捕获。

2003.4.1 发布Jpcap0.4版本。

1.2 JPCAP的需求环境安装Java2工作平台(java2 Runtime Environment)或者SDK(http://java.sun.com)安装最新版本的LibPcap(对于UNIX平台,/) 或者WinPcap (对于Windows 平台,http://winpcap.polito.it/)下载并解压缩Jpcap的最新版本(/kfujii/jpcap/doc/index.html )1.3 JPCAP的安装(A)Windows 9x,NT,20001)复制"lib\Jpcap.dll"到"[JRE directory]\bin"或"[JRE directory]\lib\ext\x86"。

2)复制"lib\jpcap.jar"到"[JRE directory]\lib\ext"。

3)如果安装了SDK,还需要拷贝"lib\jpcap.jar"到"[SDK directory]\jre\lib\ext"。

其中[JRE directory]是指JRE默认安装路径,一般来说是C:\Program Files\Java\j2re*;[SDK directory] 是指SDK的默认安装路径,一般来说是C:\j2sdk*。

打开JBuilder8的工程,选"Tools/Configure JDKs/ Add"将\lib中的文件jpcap.jar加入。

将\sample\tcpdump.java 加入,即可编译运行。

注意:在Windows下,Jpcap.dll和jpcap.jar两个文件需要放置的位置与您所安装JRE中设置的"home path"有极大的联系。

其中,Jpcap.dll文件必须放在您设置的"home path"的子目录中的bin文件夹中,jpcap.jar文件放的位置较为任意,一般是放到lib文件夹中,理论上可以放到任意地方,但是必须在jdk setting中加入该类库包的完整路径。

(B)UNIX1)在解压缩的Jpcap文件夹中,进入src/c目录,编辑Makefile文件,根据你安装的操作系统的类型修改编辑选项。

2)也许你必须修改Jpcap_sub.h文件,以使其可以支持IPV6。

3)运行make,产生libjpcap.so文件。

如果你看到错误信息:"structure has no member name sa_len...",则在Jpcap_sub.h中屏蔽#define HA VE_SA_LEN这一行。

4)拷贝文件libjpcap.so到java安装目录/jre/lib/<arch>. <arch>是"i386"或"sparc"(或者设置LD_LIBRARY_PATH包括libjpcap.so存在的路径)。

5)拷贝文件lib/jpcap.jar到扩展目录下,比如:…/jre/lib/ext(或者设置CLASSPATH包括jpcap.jar文件)。

1.4 JPCAP的类库结构Jpcap0.4版本共有1个接口14个类,分别简介如下:1、接口综述JpcapHandler :这个接口用来定义分析被捕获数据包的方法2、类综述ARPPacket :这个类描述了ARP/RARP包,继承了Packet类DatalinkPacket :这个抽象类描述了数据链路层的包,它继承了ng.ObjectEthernetPacket :这个类描述了以太帧包,继承DatalinkPacket类ICMPPacket :这个类描述了ICMP包,继承了IPPacket类IPAddress :继承了ng.Object,这个类描述了IPv4和IPv6地址,其中也包含了将IP 地址转换为域名的方法IPPacket :这个类描述了IP包,继承了Packet类,支持IPv4和IPv6IPv6Option :它继承了ng.Object,这个类描述了IPv6选项报头Jpcap :它用来捕获数据包,继承了ng.ObjectJpcap.JpcapInfo :Jpcap的内部类,它包含被捕获数据包的信息(在jpcap0.4修改部分BUG 之后不再使用这个类)JpcapSender :它用来发送一个数据包,继承了ng.ObjectJpcapWriter :它用来将一个被捕获的数据包保存到文件,继承了ng.ObjectPacket :这个类是所有被捕获的数据包的基类,继承了ng.ObjectTCPPacket :这个类描述TCP包,继承了IPPacket类UDPPacket :这个类描述了UDP包,继承了IPPacket类第二章Jpcap类库分析与使用2.1 使用JpcapHandler接口JpcapHandler接口是用来定义一个分析被捕获数据包的方法。

这个方法用在Jpcap.loopPacket()或者Jpcap.processPacket()中。

可以在表1.1中查找该接口的成员函数。

表 1.1 JpcapHandler接口的成员函数捕获到一个包时,JpcapHandler接口的方法handlePacket被自动调用来分析数据包。

运行结果如下:…………ARP REQUEST 00:80:2d:5f:be:86(210.40.7.129) -> 00:00:00:00:00:00(210.40.7.187)ARP REQUEST 00:80:2d:5f:be:86(210.40.7.129) -> 00:00:00:00:00:00(210.40.7.186)1051601819:6572991051601819:6575861051601820:2998981051601820:323588ARP REQUEST 00:80:2d:5f:be:86(210.40.7.129) -> 00:00:00:00:00:00(210.40.7.170)…………2.2 使用DatalinkPacket类DatalinkPacket类是抽象类,它继承于ng.Object类,如下所示层次图,其子类是EthernetPacket类。

相关文档
最新文档