0

我正在尝试开发一种软​​件,在该软件中,我从网络接口捕获数据包,更改它们,并将更改后的数据包写入本地磁盘(写入输出文件)。

事情是,当我打开输出文件时,我看到我所做的更改没有提交。例如,我捕获了一个IP数据包并将源IP地址更改为0.0.0.0。之后,我将更改后的数据包保存在输出文件中。当我打开输出文件时,我看到源 IP 地址与我更改之前的相同。

    if (packet instanceof TCPPacket) {
            try {   
                ((IPPacket)packet).src_ip = InetAddress.getByName("0.0.0.0");

            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
            System.out.println(packet);
            outputFile.writePacket(packet);             
     }

我错过了什么?

4

1 回答 1

0

JpcapWriter 的特点是它与 JpcapCaptor 一起运行,这就是为什么在初始化时需要给它一个 Captor 作为字段的原因。因此,当您遍历捕获器并抓取数据包时,即使您对其进行了更改,这些更改也只会存储在您在 java 中创建的对象中,并且捕获器会将未更改的数据包传递给编写器。

我遇到了类似的问题。所以我只是将数据包写入文件而不使用内置写入器。我提取我想要的数据并将其写为纯文本。唯一的缺点是它使重新加载捕获文件有点棘手。

如果您还有其他问题,请告诉我。

于 2012-06-07T21:55:50.053 回答