1

如何从数据包中显示 IP 地址。

我能够显示端口和协议,但不能显示来自pcap file.

我正在使用jnetpcap. 有什么帮助吗?

4

4 回答 4

3

jnetpcap 团队表示“虽然这些是本地 C 库教程,但您会发现调用的过程和顺序几乎相同。如果您了解 C 和 java 语言,那么将这些教程翻译成 java 和 jNetPcap 应该不会有太大问题API。 ”话虽如此,看看jnetpcap 团队在他们的网站上推荐的这个非常深入的教程。

看看最后,在实际嗅探下,教程列出了内存中的数据包内容,并告诉您在哪里可以找到 IP 标头。

其他解决方案:

如果您能够获得 pcap 文件,您应该能够使用本机DatagramPacket类来满足您的需要。DatagramPacket 有一个名为getSocketAddress()的方法,它可以获取 IP 地址和端口号。

于 2012-08-15T13:20:24.627 回答
1
PcapPacketHandler<String> jpacketHandler = new PcapPacketHandler<String>() {  

        final Tcp tcp=new Tcp();

    final Ip4 ip = new Ip4(); 

                public void nextPacket(PcapPacket packet, String user) {  


                    final Tcp tcp=new Tcp();
                        if(packet.hasHeader(tcp)){
                        if(packet.hasHeader(ip)){

                        packet.getHeader(tcp);
                        System.out.printf("Received packet at %s caplen=%-4d len=%-4d %s %s\n",  
                        new Date(packet.getCaptureHeader().timestampInMillis()),   
                        packet.getCaptureHeader().caplen(),  // Length actually captured  
                        packet.getCaptureHeader().wirelen(), // Original length   
                        user,FormatUtils.ip(ip.source())                              // User supplied object  
                        );  
                        //JBuffer buffer = packet;
                        //int size=packet.size();
                        byte[] arr=packet.getByteArray(0, packet.size());

                    }}}

            };  
于 2014-02-09T16:01:31.767 回答
0

wireshark 能够显示(和捕获)数据。我将研究 jnetpcap。

编辑:我查看了教程(http://jnetpcap.com/tutorial/usage)。请参见第 72 行(创建返回对象)和第 108-112 行(填充和读取返回对象)。

于 2012-08-15T12:38:54.867 回答
0

我能够使用以下 Github 示例从 PCAP 获取源端点和目标端点的 IP 地址和端口号:

https://github.com/arisath/Pcap-dissection/blob/master/PcapDissector.java

于 2018-07-14T18:09:54.660 回答