VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 878|回复: 5

IP数据包监控程序中出现的问题

[复制链接]

2

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-25 16:00:01 | 显示全部楼层 |阅读模式
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)


求各位指点,谢谢。
回复

使用道具 举报

2

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-2-14 13:30:01 | 显示全部楼层
源程序如下:

package subjectprogram;

import net.sourceforge.jpcap.capture.*;
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);
        }

}
回复

使用道具 举报

0

主题

18

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-2-17 13:00:01 | 显示全部楼层
你用的是什么包?出错的地方在哪?
至少标出来呀,这样怎么看
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-4-4 08:00:01 | 显示全部楼层
pcap.findDevice();找不到设备的错误吧
你用什么包的啊  
我的是jpcap+winpcap  肯定行
NetworkInterface[] devices = jpcap.JpcapCaptor.getDeviceList();
JpcapCaptor cap = jpcap.JpcapCaptor.openDevice(devices[1],1028,true,100000);
cap.processPacket(-1,object);
回复

使用道具 举报

0

主题

18

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-4-11 09:30:01 | 显示全部楼层
有点难度
UP下
回复

使用道具 举报

0

主题

21

帖子

19.00

积分

新手上路

Rank: 1

积分
19.00
发表于 2020-5-2 11:15:01 | 显示全部楼层
lz 估计是没装winpcap吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表