如何使用eclipse,配置jpcap。并且运行jdumper,还有自己写的抓包示例代码

这次是计算机网络的实验;首先我们需要jdk环境默认大家有的,当然了jpcap使用的是32位的系统,所以我们的jre、jdk也应该是32位的,如果你的jdk不是32位,那么自行百度下载32位jdk吧!
我们是基于eclipse环境下的
我们需要的是:自行百度下载或者留言问我要
安装winPcap
Jpcap.jar包
jdumper源代码

还有一个辅助我们导入JpcapSetup-0.7.exe。 给个链接:https://jpcap.software.informer.com/download/
然后我们可以开始了;
我们先运行Jdumper,在编写示例代码,首先解压好我们下载的Jdumper源代码。
1、首先打开eclipse,导入工程:
在这里插入图片描述
2、导入jpcap.jre包
新建一个lib文件夹,然后复制jpcap.jre包进去,然后右键,点击Build Path ,add to Build Path。

3、把Jpcap文件夹里面lib里面的Jpcap.dll文件放到你用的jre/bin目录中;
或者可以使用那个JpcapSetup-0.7.exe软件来导入;

4、运行jdumper包;

注意点:因为Jpcap是32位的,所以我们一定要使用32位的 jre 来作为工程的 system Library

编写抓包示例代码部分:

直接上代码:

package demo;

import java.io.IOException;  

import jpcap.*;  
import jpcap.packet.IPPacket;  
import jpcap.packet.Packet;  

public class GetPacket {

	public static void main(String[] args) {
	
	NetworkInterface[] devices = JpcapCaptor.getDeviceList();
	for(NetworkInterface n : devices)  
    {  
        System.out.println(n.name + "     |     " + n.description);  
    }  
    System.out.println("-------------------------------------------");  
      
    JpcapCaptor jpcap = null;  
    int caplen = 1512;  
    boolean promiscCheck = true;  
      
    try{  
        jpcap = JpcapCaptor.openDevice(devices[0], caplen, promiscCheck, 50);  
    }catch(IOException e)  
    {  
        e.printStackTrace();  
    }  
      
    /*----------第二步抓包-----------------*/  
    int i = 0;  
    while(i < 10)  
    {  
        Packet packet  = jpcap.getPacket();  
        if(packet instanceof IPPacket && ((IPPacket)packet).version == 4)  
        {  
            i++;  
            IPPacket ip = (IPPacket)packet;//强转  
              
            System.out.println("版本:IPv4");  
            System.out.println("优先权:" + ip.priority);  
            System.out.println("区分服务:最大的吞吐量: " + ip.t_flag);  
            System.out.println("区分服务:最高的可靠性:" + ip.r_flag);  
            System.out.println("长度:" + ip.length);  
            System.out.println("标识:" + ip.ident);  
            System.out.println("DF:Don't Fragment: " + ip.dont_frag);  
            System.out.println("NF:Nore Fragment: " + ip.more_frag);  
            System.out.println("片偏移:" + ip.offset);  
            System.out.println("生存时间:"+ ip.hop_limit);  
              
            String protocol ="";  
            switch(new Integer(ip.protocol))  
            {  
            case 1:protocol = "ICMP";break;  
            case 2:protocol = "IGMP";break;  
            case 6:protocol = "TCP";break;  
            case 8:protocol = "EGP";break;  
            case 9:protocol = "IGP";break;  
            case 17:protocol = "UDP";break;  
            case 41:protocol = "IPv6";break;  
            case 89:protocol = "OSPF";break;  
            default : break;  
            }  
            System.out.println("协议:" + protocol);  
            System.out.println("源IP " + ip.src_ip.getHostAddress());  
            System.out.println("目的IP " + ip.dst_ip.getHostAddress());  
            System.out.println("源主机名: " + ip.src_ip);  
            System.out.println("目的主机名: " + ip.dst_ip);  
            System.out.println("----------------------------------------------");  
        }  
    }  
	}
}

2、结果截图:
在这里插入图片描述

发布了32 篇原创文章 · 获赞 0 · 访问量 3462

猜你喜欢

转载自blog.csdn.net/qq_43213352/article/details/90181844
今日推荐