Чтение информации заголовка из пакета pcap
Я использовал следующий код для чтения исходного и целевого IP из пакета, сохраненного в файле pcap. public void nextPacket(пакет PcapPacket, пользователь String) {
Ip4 ip = new Ip4();
Ethernet eth=new Ethernet();
String sIP;
String dIP;
int totalLength=0;
if (packet.hasHeader(ip) == false){
return;
}
totalLength = totalLength+ ip.getPayloadLength();
sIP = org.jnetpcap.packet.format.FormatUtils.ip(ip.source());
dIP = org.jnetpcap.packet.format.FormatUtils.ip(ip.destination());
System.out.println("SIP = "+sIP+" "+"destIP = "+dIP+" "+"Payload Length = "+ip.getPayloadLength());
System.out.println("Total Length = "+totalLength);
}
но это ничего не показывает, есть пакеты с заголовками. Пожалуйста, помогите мне.
2 ответа
PcapPacketHandler<String> jpacketHandler = new PcapPacketHandler<String>() {
final Ip4 ip = new Ip4();
public void nextPacket(PcapPacket packet, String user) {
if(packet.hasHeader(Ip4.ID)){
packet.getHeader(ip);
byte[] dIP = new byte[4], sIP = new byte[4];
dIP = packet.getHeader(ip).destination();
sIP = packet.getHeader(ip).source();
String sourceIP = FormatUtils.ip(sIP);
String destinationIP = FormatUtils.ip(dIP);
System.out.printf("tcp.ip_src=%s%n",sourceIP);
System.out.printf("tcp.ip_dest=%s%n",destinationIP);
}
}
};
Что вы имеете в виду, что это ничего не показывает? Это просто возврат, потому что пакет не имеет заголовка или он печатает нуль в коде на вашем конце? Я должен был предположить с этой маленькой информацией, что у пакета нет заголовка ip.