如何从数据包中显示IP地址。
我可以显示端口和协议,但不能显示pcap file
的IP地址。
我正在使用jnetpcap
。有什么帮助吗?
答案 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