【问题标题】:How to manipulate packet and write to pcap file using pcap4j如何使用 pcap4j 操作数据包并写入 pcap 文件
【发布时间】:2016-07-11 09:15:52
【问题描述】:

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

任何帮助将不胜感激。

【问题讨论】:

    标签: pcap libpcap packet-capture packet-sniffers


    【解决方案1】:

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

    在下面的 sn-p 中,我正在创建一个新的修改数据包(假设 replace() 包含您创建新 IP 地址的逻辑):

            Packet.Builder builder = p.getBuilder();
            builder.get(IpV4Packet.Builder.class)
                    .srcAddr(replace(srcAddr));
    
            Packet newPacket = builder.build();
    

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

            dumper.dump(newPacket);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多