【问题标题】:Is there a way to read packet information from a FIFO pipe into有没有办法将数据包信息从 FIFO 管道读取到
【发布时间】:2021-07-21 23:23:45
【问题描述】:

我尝试过使用类似的东西

Fifo = open(<file path to my fifo>, "r");
pcap = pcap_fopen_offline(Fifo, errbuf);

但我得到了: “未知文件格式”作为我的 errbuf 和 pcap_fopen_offline 中的错误返回 NULL。有谁知道解决这个问题的方法,或者是否有另一种方法可以使 libpcap 与 libpcap 一起运行?

【问题讨论】:

  • pcap 用于网络接口,而不是管道。
  • 管道中没有数据包。
  • 您希望它捕获什么?管道只是一个字节流,没有标头或数据包。也许您打算使用 Unix 域套接字?
  • 但我认为 pcap 也不适用于它们。见superuser.com/questions/484671/…
  • @Barmar 我目前有一个 FIFO 管道,通常由wireshark 读取(有点像wiki.wireshark.org/CaptureSetup/Pipes),因此它包含以字节为单位的数据包数据。我目前正在尝试编写一个从该管道读取的程序,以便我可以按我的方式解析数据。我认为 libpcap 可以做到这一点。

标签: c pipe fifo libpcap


【解决方案1】:

来自man pcap_open_offline

pcap_open_offline() 被调用来打开一个“保存文件”进行读取。

fname 指定要打开的文件的名称。该文件的格式与 tcpdump(1) 和 tcpslice(1) 使用的格式相同。

或者,您可以调用 pcap_fopen_offline() 从现有的打开流 fp 中读取转储数据。请注意,在 Windows 上,该流应以二进制模式打开。

您是否在使用tcpdump 数据?你在windows上吗(模式应该是“rb”)?

附言你有错字,不应该是fopen而不是open吗?

【讨论】:

  • 是的,抱歉,我会改正错字。我目前有一个通常由wireshark读取的FIFO管道,因此它包含以字节为单位的数据包数据。我目前正在尝试编写一个从该管道读取的程序,以便我可以按自己的方式解析数据。
  • 可能是 pcap - pcapng 问题吗?
  • “可能是 pcap - pcapng 问题吗?”仅适用于旧版本的 libpcap/WinPcap。我写了一个小程序来打开一个FIFO,然后用pcap_fopen_offline()为它获取一个pcap_t *,然后用pcap_loop(),不管我是用cat写一个pcap或pcapng文件到先进先出。
猜你喜欢
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 2017-11-13
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 2020-06-14
相关资源
最近更新 更多