我正在尝试开发一种软件,我正在从我的网络接口捕获数据包,更改它们,并将更改的数据包写入我的本地光盘(到输出文件)。< / 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);
}
我错过了什么?
答案 0 :(得分:0)
关于JpcapWriter的事情是它与JpcapCaptor一起运行,这就是为什么你需要在初始化时给它一个captor作为字段。因此,当您遍历捕获器并抓取数据包时,即使您对其进行了更改,这些更改也只存储在您在java中创建的对象中,并且捕获者将未更改的数据包传递给编写器。
我遇到了类似的问题。所以我只是将数据包写入文件而不使用内置编写器。我提取我想要的数据并将其写为纯文本。唯一的缺点是它使重新加载捕获文件有点棘手。
如果您还有其他问题,请与我们联系。