我正在侦听特定的网卡并使用jPcap库捕获TCP(仅TCP)数据包.但是,我需要拥有整个TCP会话,而不是单个数据包.
在Wireshark中,我可以选择“关注tcp流”,这样我就可以从头到尾完成整个对话.我想在Java中做到这一点.如何实时重建这些数据包?我想在侦听网卡和捕获新数据包的同时重建TCP会话.我怎样才能做到这一点?这是我捕获数据包的代码:
jpcap.NetworkInterface[] devices = JpcapCaptor.getDeviceList();
JpcapCaptor captor = JpcapCaptor.openDevice(devices[1], 65535, true, 1000);
JpcapWriter writer = JpcapWriter.openDumpFile(captor, "myNetworkDump");
captor.loopPacket(-1, new PacketPrinter(writer));
class PacketPrinter implements PacketReceiver {
private HashMap> sessions;
private BufferedWriter out;
private JpcapWriter writer;
Map bodies = new HashMap();
public PacketPrinter(JpcapWriter writer) {
this.writer = writer;
this.sessions = new HashMap>();
}
public void receivePacket(Packet packet) {
System.out.println(packet);
if (packet instanceof TCPPacket) {
TCPPacket tcppacl = (TCPPacket) packet;
byte[] body = addBodyData(tcppacl);
// System.out.println(new String(body));
}
}
}