如何使用pcap4j操作数据包并写入pcap文件

如何使用pcap4j操作数据包并写入pcap文件,pcap,libpcap,packet-capture,packet-sniffers,Pcap,Libpcap,Packet Capture,Packet Sniffers,我想通过一个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

我想通过一个
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


任何帮助都将不胜感激。

pcap4j中的数据包对象是不可变的。但是,您可以在现有数据包的基础上创建一个新数据包,然后使用

在下面的代码段中,我正在创建一个新的修改包(假设replace()包含创建新IP地址的逻辑):

然后,您可以使用以下方法转储创建的数据包:

        dumper.dump(newPacket);

pcap4j中的数据包对象是不可变的。但是,您可以在现有数据包的基础上创建一个新数据包,然后使用

在下面的代码段中,我正在创建一个新的修改包(假设replace()包含创建新IP地址的逻辑):

然后,您可以使用以下方法转储创建的数据包:

        dumper.dump(newPacket);