1.jpcap的下载
1.1建议去官网上下载 官网jpcap下载 如果打不开的话,文末我会提供网盘的下载链接的
官网下载完成,解压之后
1.2WinpPcap双击安装即可,jacap1和jpcap2随便选一个进入
1.3Jpcap.dll复制到java jdk的安装目录下的bin目录里
上面那个目录是默认安装的目录
2.eclipse导入jpcap.jar包
2.1这个jar的位置一般不要随便移动,所以我在eclipse的目录里新建了一个jar文件夹,把平时的jar包都存放到那里了
2.2 打开eclipse 右击你的java项目 Build Path --> Configure Bulide Path
2.2.1会打开一个窗口,选择你储存的目录
2.2.2选择之后,点击打开即可
点那个都行
2.2.3导入成功之后显示为
3.代码测试
import java.io.IOException;
import jpcap.*;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
public class Test {
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[1], 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("版本: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("----------------------------------------------");
}
}
}
}
正确的显示内容应该是
如果这有第一行,而没有下面的内容,修改一下代码的25行,
jpcap = JpcapCaptor.openDevice(devices[1], caplen, promiscCheck, 50);
devices[1]改成devices[0]再运行一下,就可以了。
PS:抓不到包,或者程序一直显示请稍等...... 解决办法:
电脑打开这个界面
看我的是第一个连接着网络,所以
jpcap = JpcapCaptor.openDevice(devices[1], caplen, promiscCheck, 50);
这行代码中的devices[1] 改为 devices[0],
如果还没有,电脑在后台浏览个网页之类的,产生点流量
如果还不行,不好意思 ,我也就不知道了,
百度网盘下载 Jpcap 提取码: 187k
文件内容: