显示数据包的IP地址

时间:2012-08-15 12:35:05

标签: java jpcap jnetpcap

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

我可以显示端口和协议,但不能显示pcap file的IP地址。

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

4 个答案:

答案 0 :(得分:3)

jnetpcap团队声明“虽然这些是本机C库教程,但你会发现调用的过程和顺序几乎相同。如果你知道C语言和java语言,你的翻译应该不会有太多麻烦这些教程适用于java和jNetPcap API。“尽管如此,请查看jnetpcap团队在其网站上推荐的this非常深入的教程。

看看接近结尾,在实际嗅探下,教程在内存中列出数据包内容并告诉您确切找到IP标头的位置。

其他解决方案:

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

答案 1 :(得分: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());

                    }}}

            };  

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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