将字节数组写入新的PCAP文件

时间:2019-03-28 23:58:18

标签: java jdbc byte pcap

我正在使用Java 8,Spring Rest API和Angular。我有byte [] binaryData,它是从数据类型为varbinary的DB(Postgres)中的列中检索的。我想创建一个新的“ .pcap”文件作为sample.pcap并返回此文件作为响应,以便将该文件下载到浏览器中。

我得到的字节[]为:

byte[] binaryData = resultSet.getBytes("col_name");

我使用jnetpcap库编写了一个函数:

byte[] binaryData = resultSet.getBytes("col_name");

使用jnetpcap库编写函数:

private void pcapFile(Detail detail){

    List<PcapIf> alldevs = new ArrayList<PcapIf>();
    StringBuilder errbuf = new StringBuilder();

    int r = Pcap.findAllDevs(alldevs, errbuf);
    if (r != Pcap.OK || alldevs.isEmpty()) {
        throw new DataNotFoundException("Unable to create PCAP file");
    }
    PcapIf device = alldevs.get(0);

    int snaplen = 64 * 1024; // Capture all packets, no trucation
    int flags = Pcap.MODE_PROMISCUOUS; // capture all packets
    int timeout = 5 * 1000; // 10 seconds in millis
    Pcap pcap =
            Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf);
    if (pcap == null) {
        throw new DataNotFoundException("Unable to create PCAP file");
    }

    String ofile = "sample.cap";
    PcapDumper dumper = pcap.dumpOpen(ofile);

    ByteBufferHandler<PcapDumper> dumpHandler = new ByteBufferHandler<PcapDumper>() {

        public void nextPacket(PcapHeader header, ByteBuffer buffer,
                               PcapDumper dumper) {

            dumper.dump(header, buffer);
        }
    };

    pcap.loop(10, dumpHandler, dumper);

    File file = new File(ofile);

}

我不了解PcapDumper的工作方式。

我无法触及可以创建和归档并成功返回文件的部分。

如何获取我的binaryData(byte [])解析为新的pcap文件?

PS:请不要将其标记为重复,或者我已经浏览完所有问题的内容。他们中的许多人都没有答案,或者解决方案都不适合我的问题,即使在某些情况下,指向解决方案的链接也已删除。

0 个答案:

没有答案