`
java_mzd
  • 浏览: 579851 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Jpcap简易教程

阅读更多

Jpcap简易教程

 

 题记:首先,其实根本就没必要写Jpcap的教程,Jpcap官网的文档还是很详细很给力的,自己也几乎是对着官网文档学的,很快就上手了。 但自己的学习笔记一直存在word里面,始终不放心。(看着文件夹里30多个word的学习笔记,头都大,一直没弄博客上来)。 于是,就还是把它写到博客上来,就当是自己的学习笔记吧。

 

首先,使用Jpcap的几个小问题:

  1. 我们为什么需要Jpcap?
  2. 什么是Jpcap?Jpcap的工作原理是什么?
  3. 怎么配置Jpcap(Jpcap的安装)?
  4. Jpcap使用步骤
  5. 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包都发给我,于是,可以监控整个局域网。

6
3
分享到:
评论
5 楼 softor 2014-01-20  
请问,抓到一个包,能解析出它是来自那个http的请求url吗?
4 楼 thomastangweixin 2012-03-07  
写的好,
支持楼主!!!!
3 楼 nextw3 2012-01-10  
放在linux服务器上...
2 楼 hbdzhm 2011-04-19  
能过360不。。现在大不风机器都装360都开了ARP防火墙
1 楼 snake1987 2011-04-18  
这种东西没太大价值的,网上类似的代码通街都是了,关键是这个很难有深度,写得再好,也只是“练习”而已

相关推荐

    jpcap教程.pdf

    jpcap教程.pdf

    jpcap+winpcap及安装教程

    里面有jpcap.dll和jpcap.jar和winpcap的安装包以及配置教程和测试代码,按步骤执行应该就可以了

    JPcap_jpcap_

    Jpcap version 0.06.0

    jpcap.jar jpcap.dll

    java 网络通讯报文监听。。。。 jpcap.jar 和 jpcap.dll(32位动态库和64位动态库),需要安装wincap

    Jpcap-0.7_java

    Jpcap是用于捕获和发送网络数据包的Java库。 用Jpcap,你可以开发应用程序捕获数据包从一个网络接口和可视化/分析他们在java。您还可以开发Java应用程序通过网络接口发送任意数据包。 Jpcap已在微软视窗(98/2000/...

    jpcap分析IP数据包

    找了很长时间的jpcap知识,经过自己的努力,终于编辑了一个可用的jpcap代码。可以捕获和分析IP数据包,NETBEAN下运行通过。只要jpcap配置正确,保证可以运行。xixi代码,保证质量。谢谢大家长时间的支持!我会继续...

    Jpcap.dll和jpcap.jar

    jpcap的Jpcap.dll和jpcap.jar。有一篇原创博文的评论说:“为什么我下载的jpcap压缩包中没有jpcap.jar呢”,故上传该资源方便其下载。哈哈哈啦啦啦

    jpcap_x64.dll+jpcap.jar

    jpcap dll 64位 jpcap jar jpcap dll 64位 jpcap jar

    jpcap.jar+Jpcap.dll

    jpcap.jar+Jpcap.dll java版,能够抓取经过数据链路层的数据包,对抓取到的数据包进行一定程序的解析,可自己写IP数据包直接发送给数据链路层……

    jpcap配置文件,源程序(模拟sniffer),教程

    一、 Eclipse环境下安装与配置Jpcap 二、 配置Jpcap出现的问题 三、 Jpcap 测试程序,模拟sniffer。实现不同协议的抓包,写入文件和读文件。

    jpcap使用文档及jpcap.jar

    jpcap的开发API文档以及可使用的jar包,可供开发者使用

    jpcap for win & linux

    JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给 JAVA语言提供一个公共的接口,从而实现了平台无关性。在官方网站上声明,JPCAP支持FreeBSD 3.x, Linux RedHat ...

    Jpcap 64位,完整一套包括Winpcap,Jpcap,jpcap.dll,demo.

    Jpcap 64位,完整一套包括Winpcap,Jpcap,jpcap.dll,demo.

    jpcap.chm jpcap帮助文档 jpcapAPI

    java利用jpcap进行数据包的捕获与分析的重要资料

    JPCAP tester

    jpcap 发送、捕捉返回消息jpcap 发送、捕捉返回消息jpcap 发送、捕捉返回消息jpcap 发送、捕捉返回消息jpcap 发送、捕捉返回消息

    jpcap 32+64(jpcap.jar+Jpcap.dll)只有jar和dll

    Windows下亲测有效,使用方法,首先安装WinPcap,然后将jpcap.jar拷贝到${JAVA_HOME}/jre/lib/ext中,将Jpcap.dll拷贝到${JAVA_HOME}/jre/bin中,这样就可以在Java Project中使用jpcap了,Linux下libpcap+jpcap环境...

    jpcap.jar jpcap.dll 32 64

    jpcap.jar jpcap.dll 32位 64位 获取网络包,支持win7 32位 64位 xp ubuntu 等系统.

    安装jpcap.doc

    安装jpcap过了好久,不记得上次是怎么安装jpcap的, 他可以帮助我们捕获网络数据,当然,你如果够牛B,可以写出比你本人更牛B的程序来的(说明一点,jpcap给我们提供的功能太强大了),本人安装它可谓一波三折,犯了...

    jpcap-0.7源代码

    官网http://jpcap.gitspot.com/download.html下载的jpcap 0.7。lib文件夹中有Jpcap.dll和jpcap.jar。还自带示例代码。可以通过源代码来自行编译。

    win10 下的 64位 jpcap开发包 jpcap64位

    jpcap64位 win10 下的 64位 jpcap开发包,可以用来发送拦截地网络数据包

Global site tag (gtag.js) - Google Analytics