PacketCapture: loading native library jpcap.. ok
Exception in thread "main" java.lang.UnsatisfiedLinkError: findDevice
at net.sourceforge.jpcap.capture.PacketCapture.findDevice(Native Method)
at subjectprogram.CapturePacketTest.main(CapturePacketTest.java:57)
求各位指点,谢谢。
Exception in thread "main" java.lang.UnsatisfiedLinkError: findDevice
at net.sourceforge.jpcap.capture.PacketCapture.findDevice(Native Method)
at subjectprogram.CapturePacketTest.main(CapturePacketTest.java:57)
求各位指点,谢谢。
import net.sourceforge.jpcap.net.*;
import java.util.*;
import java.io.*;public class CapturePacketTest implements RawPacketListener, PacketListener { // public Vector<String> CaptureVec = new Vector<String>();
public static FileOutputStream fos = null; public void rawPacketArrived(RawPacket rawPacket) {
// System.out.println("rawPacket=" + rawPacket);
} public void packetArrived(Packet packet) {
try {
if (packet instanceof TCPPacket) {
TCPPacket tcppacket = ((TCPPacket) packet);
// System.out.println("Packet=" + packet);
// System.out.println("window size=" +
// tcppacket.getWindowSize());
// System.out.println("Packet=" +
// ((TCPPacket)packet).toColoredVerboseString(true));
// if(tcppacket.getDestinationPort() == 110 ||
// tcppacket.getSourcePort() == 110) // pop3
if (tcppacket.getDestinationPort() == 80
|| tcppacket.getSourcePort() == 80) { // http
String captureStr = new String(tcppacket.getTCPData());
System.out.println(">>" + captureStr);
fos.write(tcppacket.getTCPData());
fos
.write(new String(
"**********************************************************\n")
.getBytes());
// fos.close();
// CaptureVec.addElement(captureStr);
}
}
} catch (Exception ioe) {
System.out.println("Exception occurred:" + ioe);
}
} public static void main(String[] args) throws Exception {
// Print copyright info
System.out.println();
System.out
.println("Capture Ethernet packet Ver 0.01, author yanqlv(maomao).");
System.out
.println("Copyright (c) 2005 yanqlv of Luoyang Normal College, all Rights Reserved.");
System.out.println(); // Determin which capture device to use
PacketCapture pcap = new PacketCapture();
String defaultDevice = pcap.findDevice();
StringTokenizer st1 = new StringTokenizer(defaultDevice, "\n");
String defaultDeviceStr = st1.nextToken();
int default_num = 1; String[] capDevices = pcap.lookupDevices();
int capdevice_num = capDevices.length;
System.out.println("There " + (capdevice_num > 1 ? "are" : "is") + " "
+ capdevice_num + " device" + (capdevice_num > 1 ? "s" : "")
+ " found!");
System.out
.println("*****************************************************************************");
for (int i = 0; i < capdevice_num; i++) {
// System.out.println("*****capture device["+ i
// +"]="+capDevices[i]);
StringTokenizer st = new StringTokenizer(capDevices[i], "\n");
String capStr = st.nextToken();
String capDesc = st.nextToken();
if (defaultDeviceStr.equals(capStr))
default_num = i + 1;
System.out.println("[" + (i + 1) + "] " + capStr + "\n(" + capDesc
+ ")");
}
System.out
.println("*****************************************************************************"); System.out.println("(default to use " + default_num + ")"); int selectn = 1;
if (capdevice_num > 1) {
System.out.print("Please select [");
for (int i = 0; i < capdevice_num; i++) {
System.out.print(i + 1);
if (i != capdevice_num - 1)
System.out.print(" or ");
}
System.out.print("]:");
String readstr = new DataInputStream(System.in).readLine();
selectn = Integer.parseInt(new String(readstr));
}
// System.out.println("selectn="+selectn); // Want to save capture result to file
fos = new FileOutputStream("D:/TDdownload/capture.txt"); // Begin capture
pcap.open((new StringTokenizer(capDevices[selectn - 1], "\n"))
.nextToken(), true);
CapturePacketTest t1 = new CapturePacketTest();
pcap.addRawPacketListener(t1);
pcap.addPacketListener(t1);
pcap.capture(-1);
}}
你用什么包的啊
我的是jpcap+winpcap 肯定行
NetworkInterface[] devices = jpcap.JpcapCaptor.getDeviceList();
JpcapCaptor cap = jpcap.JpcapCaptor.openDevice(devices[1],1028,true,100000);
cap.processPacket(-1,object);