`

java利用Jpcap实现抓包

 
阅读更多

1.准备工作

 

Jpcap是一个可以监控当前网络情况的中间件,弥补了java对网络层以下的控制,

可以达到抓包的效果。

Jpcap运行需要依赖winCap和Jpcap的dll动态库和Jpcap.jar包。

这个我贴出来两个exe文件,一 一安装后

http://note.youdao.com/noteshare?id=040315a1e04a6146d4f950017f52e83c&sub=FAF884B3EE0E4912AAFA05B56459F87B

http://note.youdao.com/noteshare?id=af8fa2323b41fa8164096cc6a04f85ad&sub=49EEC856E57241E8805A0348A273034B

jdk-->bin目录会多了一个Jpcap.dll

 

jre-->bin目录会多了一个Jpcap.dll

 

jre-->lib-->ext会多一个Jpcap的jar包

 

在eclipse中修改jre的环境

 

 

常用类

JpcapHandler :这个接口用来定义分析被捕获数据包的方法

ARPPacket :这个类描述了ARP/RARP包,继承了Packet类

DatalinkPacket :这个抽象类描述了数据链路层

EthernetPacket :这个类描述了以太帧包,继承DatalinkPacket类

ICMPPacket :这个类描述了ICMP包,继承了IPPacket类

IPAddress :这个类描述了IPv4和IPv6地址,其中也包含了将IP地址转换为域名的方法

IPPacket :这个类描述了IP包,继承了Packet类,支持IPv4和IPv6

IPv6Option :这个类描述了IPv6选项报头

Jpcap :用来捕获数据包

Jpcap.JpcapInfo :Jpcap的内部类, 它包含被捕获数据包的信息(在jpcap0.4修改部分BUG之后不再使用这个类)

JpcapSender :它用来发送一个数据包

JpcapWriter :它用来将一个被捕获的数据包保存到文件

Packet :这个类是所有被捕获的数据包的基类

TCPPacket :这个类描述TCP包,继承了IPPacket类

UDPPacket :这个类描述了UDP包,继承了IPPacket类

 

常用api

 

 

 

 

2.1 代码实现

 

import java.io.IOException;

import java.util.Scanner;

 

import jpcap.JpcapCaptor;

import jpcap.NetworkInterface;

import jpcap.NetworkInterfaceAddress;

import jpcap.PacketReceiver;

import jpcap.packet.Packet;  

 

/**

 * Jpcat实现抓包

 * @date 2018年2月7日

 */

public class NetFetcher implements PacketReceiver{  

  

    @Override  

    public void receivePacket(Packet arg0) {  

        System.out.println(arg0);  

    }  

      

    public static void main(String[] args){  

          

        //获得网卡设备列表  

        NetworkInterface[] devices = JpcapCaptor.getDeviceList();  

        if(devices.length==0){  

              

            System.out.println("无网卡信息!");  

            return;  

        }  

        //输出网卡信息  

        for(int i=0;i<devices.length;i++){  

              

            System.out.println("网卡"+i+"信息:"+devices[i].name);  

            for(NetworkInterfaceAddress address:devices[i].addresses){  

                  

                System.out.print(address.address+" ");  

            }  

            System.out.println("\n");  

        }  

          

        Scanner scan = new Scanner(System.in);  

        System.out.println("请选择您要监听的网卡序号:");  

        int index = scan.nextInt();  

          

        //监听选中的网卡  

        try {  

            JpcapCaptor jpcapCaptor = JpcapCaptor.openDevice(devices[index], 2000, false, 20);  

            jpcapCaptor.loopPacket(-1, new NetFetcher());  

        } catch (IOException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        }  

    }  

}  

 

 

分享到:
评论

相关推荐

    Java jpcap抓包

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

    用JAVA实现的抓包程序

    这是一款用java实现的抓包程序,你需要下载Jpcap7.0并安装后方可使用,另外本程序以sql2000做为数据的存储数据库。

    Java抓包程序实现(附说明文档)

    压缩包内包含了Java抓包用到到两个重要的软件,winpcap和jpcap,可以直接安装使用,本人亲测,windows 7环境下完美运行,JDK用的是1.7,需要配置下jpcap.dll到JDK的bin目录下。 另外还包含了一个Java程序(参考了...

    Java抓包程序

    java的抓包程序,带窗体的。网上查的时候发现带窗体的java抓包程序几乎都一样,用网上的代码改进了一个。一个渣,程序可能有些小毛病,无视吧。

    jpcap-0.7包

    捕获Java程序中的网络包 如果是XP,直接wincap.rar里面的wincap 绿色安装,否则用win7,需要重启.

    jpcap.chm jpcap帮助文档 jpcapAPI

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

    基于Jpcap的网络数据抓包程序

    基于Jpcap提供的API,利用java在myeclipse 开发的。 所涵盖的功能有网卡的获取,网卡的选定、过滤器的设置、数据包的抓取及解析,数据包以文件形式的保存,数据包保存文件的读取... ... (以控制台的形式展现)

    支持支持64位的Jpcap.dll

    支持64位的Jpcap.dll 用于在64位系统上运行jpcap抓包服务。 如果用32位的Dll,将会出现如下错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jre7\bin\Jpcap.dll: Can't ...

    java开源包4

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    Jpcap资料与应用

    利用Jpcap所写Java抓包解析程序,附上课设报告&Jpcap安装包(32位64位均有)&Jpcap帮助文档

    用java开发snmp包的发送和接收以及抓包

    网络管理的课程设计 用Eclipse开发,其中要用到snmp4j的软件包和jpcap软件包(附带在资源里)。

    java开源包8

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包3

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包101

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包6

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包11

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包9

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包5

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包10

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    jpcap及其依赖的驱动等文件

    这是我整理的可以用来开发基于JAVA的抓包工具(当然也可以做为别的用途,你懂得),里面包含必要的jar包及依赖的动态链接库(包括windows版本和linux版本),同时还提供了windows版本所需的驱动安装程序(在windows...

Global site tag (gtag.js) - Google Analytics