【发布时间】:2021-07-29 01:32:00
【问题描述】:
我必须查看相当大的 PCAP,大约 40GB。我现在正在做的是使用 PCAP++ 一次解析一个 PCAP 并处理其中的数据。该数据被放入缓冲区以供查看。为了节省内存,当您继续通过 PCAP 时,我会丢弃旧数据。这使我一次只能使用大约 150MB。但是,如果用户想返回并查看太远的数据,他们不能,因为它已被丢弃。
如果用户想回头看,有什么方法可以查看 PCAP 文件并转到存储数据的数据包并重新处理数据?似乎如果我想获取某些数据包,我将不得不重新加载文件并再次查看每一个数据部分,或者将 pcap 文件拆分成大量的小块。
【问题讨论】:
-
我对PCAP++一无所知,但你能确定你的PCAP文件中的原始数据包边界吗?如果是这样,您可以在通过文件向前工作时将这些偏移量存储在一个向量中,然后,如果您想要向后移动,您可以重新读取解码数据包所需的原始数据包数据有问题。
-
@PaulSanders 如果我错了,请纠正我,但你所说的建议在我构建对象时,存储与每个对象对应的数据包范围,然后当我需要重新加载对象,再次加载 pcap 文件并仅读取 pcap 文件的该部分。我会尝试看看这是否可能,但这让我回到了如何获得那些特定的数据包。
-
是的,这就是我的建议。基本上,您只需要存储范围。恐怕我对 PCAP++ 的了解不够多,无法进一步评论,但这似乎是一种值得探索的方法。
-
@PaulSanders Gotcha,我会继续努力,感谢您的帮助 :)
标签: c++ pcap pcapplusplus