【问题标题】:Inbound/outbound not supported on linktype 1 when reading savefiles读取保存文件时,链接类型 1 不支持入站/出站
【发布时间】:2018-06-16 01:45:27
【问题描述】:

从 pcap 文件中获取传入的数据包。我在 pcap_compile() 中设置了“入站”过滤器,这里是部分代码。

  pcap = pcap_open_offline("test.pcap", errbuf);
  if (pcap == NULL)
  {
    fprintf(stderr, "error reading pcap file: %s\n", errbuf);
    exit(1);
  }

  char filter_exp[] = "inbound";
  struct bpf_program pgm;
  if (pcap_compile(pcap, &pgm, filter_exp, 0, PCAP_NETMASK_UNKNOWN) == -1) {
    printf("Bad filter - %s\n", pcap_geterr(pcap));
    return 1;
  }

  if (pcap_setfilter(pcap, &pgm) == -1) {
    printf("Error setting filter - %s\n", pcap_geterr(pcap));
    return 1;
  }

但是这里有错误信息。

过滤器错误 - 读取保存文件时链接类型 1 不支持入站/出站

我刚刚搜索了一下,找到了可能的解决方案。

How to filter the inbound packet by libpcap in C:

“入站”过滤器不适用于以太网链路类型(例如,熟化的捕获会有它)。过滤目标 MAC 或 IP 地址是否足以满足您的需求?

How to determine packet direction using libpcap:

源或目标 IP 地址就足够了。如果源是本地的,则它是出站的。如果目标是本地的,则它是入站的。如果两者都不是,那就是混杂的嗅探。

看起来唯一的方法是确定数据包的目标 IP 地址是否是本地的。但是如何从 pcap 文件中知道本地 IP 地址呢?

【问题讨论】:

  • 除非其中一台设备是您运行程序的机器,否则您无法判断,然后您可以获得所有接口的 MAC 地址。
  • 所以没有办法从 pcap 文件中确定以太网链路类型的入站数据包?
  • 这就是你引用的文档所说的。
  • 感谢您的回复。你知道数据包中是否还有其他信息可以知道它的方向吗?
  • 如果您的 pcap 文件包含无线数据包,您可以使用the DS flag

标签: c linux wireshark pcap libpcap


【解决方案1】:

Barmar 是正确的,因为您无法确定 IP 地址是否仅来自您的 pcap 文件是本地的。但是,如果您知道 pcap 不是在混杂接口上捕获的,您可以尝试猜测接口的地址

您可以猜测 IP 或以太网地址。以太网地址可能是最好的,因为您的 pcap 文件中可能不只有 IP 数据包。然而,您的接口是哪个以太网地址可能不太清楚,因为网关的地址也会出现在大量数据包中。


猜测接口的以太网地址

$ tshark -r tmp.pcap -T fields -e eth.src -e eth.dst | grep -Po "(\w{2}:){5}\w{2}" | sort | uniq -c
     11 01:00:5e:00:00:01
     41 01:00:5e:00:00:fb
     11 01:00:5e:00:00:fc
     27 01:00:5e:7f:ff:fa
     34 00:00:00:00:00:01
     31 00:00:00:00:00:fb
  11815 00:00:d9:97:5b:37
    905 00:00:eb:12:48:d6
  11115 00:00:b0:7b:ce:08
     80 ff:ff:ff:ff:ff:ff

显示每个以太网地址及其包含的数据包数量(作为源或目标)。数据包数量最多的以太网地址可能是您的接口的。第二大的是可能网关的。

以接口地址为目的的数据包是入站数据包,反之亦然。


猜测接口的 IP 地址

tshark -r tmp.pcap -T fields -e ip.src -e ip.dst ip | grep -Po "(\d+.){3}\d+" | sort | uniq -c

同样的原理,你应该看到一个IP地址有大量的数据包。这可能是你的界面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多