1、Winpcap下载
下载地址:官网
下载完成之后直接用exe安装,注意在设置启动时需要勾选自动启动
2、JPcap下载
下载地址:官网
百度云 提取码62xb
3、JPcap配置到Eclipse
下载完成后我们可以获得一个dll文件和一个jar包,首先我们需要将dll文件放在Eclipse的默认jdk目录下
win+r进入命令行,输入java -verbose获取java的默认jdk位置,在结果语句中的最后的路径大部分都是jdk的默认路径
也可以直接看最后的loading语句
打开当前路径的bin目录,将下载好的dll文件放入
放好之后打开Eclipse,右击Package Explorer,点击Build Path->Configure Build Path
进入路径配置,点击上栏的Library,再点击右侧的Add External JARS,找到下载好的jar包导入
这样就完成了Eclipse的配置
新建类,编入下面的代码,这个代码是我们计算机网络中的教学代码
import java.io.IOException;
import jpcap.*;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
public class Network {
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);
//0 或 1
} 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("a");
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("----------------------------------------------");
}
}
}
}
输出结果如图
如果只输出第一段内容,可以将代码中标注可改的代码中的device[0]改成device[1]再试一试
jpcap = JpcapCaptor.openDevice(devices[1], caplen, promiscCheck, 50);
结束