【问题标题】:Write an array of bytes representing an IP packet to a pcap file将表示 IP 数据包的字节数组写入 pcap 文件
【发布时间】:2018-05-17 12:53:24
【问题描述】:

我在ToyVpn 之类的应用程序中捕获了一个 IPv4 数据包,以确保我正确处理读取的数据包I was told 以保存它以及我创建的对 pcap 文件的响应并在 WireShark 中打开它。

我用jnetpcap-1.3.0-1.win64

至于写入文件,我在https://stackoverflow.com/a/19170377/1065835找到了答案

http://jnetpcap.com/node/69 的两个示例都在这里抛出相同的 NPE:

PcapDumper dumper = pcap.dumpOpen(ofile); // output file

有可能做我想做的事吗?

这是我的代码:

StringBuilder errbuf = new StringBuilder();
String fname = "test-afs.pcap";
new File(fname).createNewFile();
Pcap pcap = Pcap.openOffline(fname, errbuf);

String ofile = "tmp-capture-file.cap";
new File(ofile).createNewFile();
PcapDumper dumper = pcap.dumpOpen(ofile); // output file

pcap.loop(10, dumper); // Special native dumper call to loop

File file = new File(ofile);
System.out.printf("%s file has %d bytes in it!\n", ofile, file.length());

dumper.close(); // Won't be able to delete without explicit close
pcap.close();

【问题讨论】:

    标签: java wireshark packet


    【解决方案1】:

    JavaDoc for Pcap.dumpOpen() 状态

    参数fname - 指定要打开的文件名;目前 jNetPcap 不支持通过使用“-”作为字符串打开标准输出的 libpcap 选项

    您正在创建 Pcap 将在下一个 LoC 中打开的文件。我认为那是行不通的……:

    String ofile = "tmp-capture-file.cap";
    new File(ofile).createNewFile();
    PcapDumper dumper = pcap.dumpOpen(ofile); // output file - BUT IT EXISTS!
    

    在任何一种情况下,您都可能会很幸运地用try-catch 包围该行,看看Pcap.getErr()catch 子句中是否有任何意义,但我赌的是一个已经存在的问题.

    干杯,

    【讨论】:

    • 文件路径问题是什么意思?分隔符 char /?我添加了我的代码。
    • 我在使用之前创建了要使用的文件。请看我的代码
    • 完全修改答案 - 看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    相关资源
    最近更新 更多