我想通过pcap
文件并转到每个数据包。然后获取IP地址并进行操作。最后,我将把它写入一个新的pcap
文件。
我使用pcap4j版本1.6.4及以下是我获取源IP地址的方法:
String fname = "FileName";
String dumpFile = "newFileName";
PcapHandle h = Pcaps.openOffline(fname);
PcapDumper dumper = h.dumpOpen(newFileName);
Packet p = null;
while ((p = h.getNextPacket()) != null) {
IpV4Packet ip = p.get(IpV4Packet.class);
Inet4Address srcAddr = ip.getHeader().getSrcAddr();
}
正如我所提到的,我获得了源IP地址,现在我不知道如何设置新的源IP地址并将其写入NewFileName。
任何帮助都将不胜感激。
答案 0 :(得分:1)
pcap4j中的数据包对象是不可变的。但是,您可以基于现有数据包创建新数据包,然后使用Builder对其进行修改。
在下面的代码片段中,我正在创建一个新修改的数据包(假设replace()包含创建新IP地址的逻辑):
Packet.Builder builder = p.getBuilder();
builder.get(IpV4Packet.Builder.class)
.srcAddr(replace(srcAddr));
Packet newPacket = builder.build();
然后您可以使用以下方式转储创建的数据包:
dumper.dump(newPacket);