Я использую следующий очень простой код JNetPacp. Однако код только «работает» каждый раз.
System.out.println("ANALYZING: " + this.pcapFilename);
StringBuilder errbuf = new StringBuilder();
Pcap pcap = Pcap.openOffline(this.pcapFilename, errbuf);
if (pcap == null) {
throw new IOException(errbuf.toString());
}
System.out.println(pcap.toString());
JPacketHandler<StringBuilder> packetHandler = new JPacketHandler<StringBuilder>() {
final Tcp tcp = new Tcp();
final Http http = new Http();
@Override
public void nextPacket(JPacket packet, StringBuilder user) {
System.out.println("Next Packet");
}
};
pcap.loop(-1, packetHandler, errbuf);
pcap.close();
System.out.println("Error Buffer: " + errbuf.toString());
Я всегда анализирую один и тот же файл PCAP (tmp.pcap). Иногда он правильно читает записанные пакеты:
run:
ANALYZING: H:\tmp.pcap
WinPcap version 4.1.3 (packet.dll version 4.1.0.2980), based on libpcap version 1.0 branch 1_0_rel0b (20091008)
Next Packet
Next Packet
Next Packet
Next Packet
*[...]*
Next Packet
Next Packet
Next Packet
Next Packet
Next Packet
Error Buffer:
BUILD SUCCESSFUL (total time: 3 seconds)
, а иногда нет:
run:
ANALYZING: H:\tmp.pcap
WinPcap version 4.1.3 (packet.dll version 4.1.0.2980), based on libpcap version 1.0 branch 1_0_rel0b (20091008)
Error Buffer:
BUILD SUCCESSFUL (total time: 0 seconds)
Я понятия не имею, что мне не хватает.
Любая помощьоценили.