我使用 Android 的 ToyVpnClient 建立隧道并拦截传入和传出的数据包。我想将存储在 ByteBuffer 中的此隧道中的这些数据包写入 pcap 文件。我查看了 jpcap 和 jnetpcap,但它们似乎只支持从使用这些库捕获的数据包创建 pcap 文件,以首先侦听设备的网络接口。
是否有任何可用的 api 可以帮助我从存储在 ByteBuffer 中的隧道数据包数据创建 pcap 文件?如果我要创建自己的 pcap 编写器,我将如何从隧道中解析这个数据包并将其放入 pcap 格式?(我看过但没有找到任何例子)
以下是来自 ToyVpnClient 的相关代码示例:
...
DatagramChannel tunnel = DatagramChannel.open();
// Connect to the server.
tunnel.connect(server);
// Packets to be sent are queued in this input stream.
FileInputStream in = new FileInputStream(mInterface.getFileDescriptor());
// Packets received need to be written to this output stream.
FileOutputStream out = new FileOutputStream(mInterface.getFileDescriptor());
// Allocate the buffer for a single packet.
ByteBuffer packet = ByteBuffer.allocate(32767);
// keep forwarding packets till something goes wrong.
while (true) {
// Read the outgoing packet from the input stream.
int length = in.read(packet.array());
if (length > 0) {
// Write the outgoing packet to the tunnel.
packet.limit(length);
tunnel.write(packet);
//How to write to pcap file here?
packet.clear();
}
...
}
谢谢