本地保存更改的数据包

时间:2012-06-02 10:25:31

标签: java jpcap

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

事情是,当我打开输出文件时,我发现我所做的更改没有提交。 例如,我捕获了一个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);             
     }

我错过了什么?

1 个答案:

答案 0 :(得分:0)

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

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

如果您还有其他问题,请与我们联系。