3

我想要一个接口出站流量的源 IP 地址列表。如何使用 libpcap 找到数据包的方向,无论它是入站还是出站读取流量?我不知道任何一方的子网信息。并且两边都有客户端/服务器,所以我不能依靠端口号范围来过滤流量。

为什么 libpcap 数据包标头中没有关于方向的信息,或者像pcap-filterinbound中的过滤选项?

4

4 回答 4

1

Netsniff-NG 虽然不依赖 libpcap,但支持 Linux 内核数据包类型扩展。他们记录 在这里

其中一种数据包类型是传出的,并被注释为“任何类型的传出”。以下示例将捕获离开您的接口的所有数据包。

$ netsniff-ng --in eth0 --out outgoing.pcap --type outgoing

使用它,您可以利用其他命令行工具来读取 PCAP 文件并提取所有源地址。也许像这样的*nix-ey:

$ tcpdump -nnr outgoing.pcap  | cut -d " " -f3 | cut -d . -f1-4

注意:我没有在路由器上试过这个。

于 2013-04-25T00:01:33.683 回答
1

您可以使用“ether src”或“ether dst”来过滤数据包方向。这需要你知道接口的mac地址。

于 2013-06-15T02:20:51.617 回答
1

您可以选择一个方向,数据包将被捕获调用pcap_setdirection()之前pcap_loop()

例如,要捕获传入的数据包,您只需要编写:

handle = pcap_open_live("eth0", 65535, 1, 0, errbuf);
pcap_setdirection(handle, PCAP_D_IN);
pcap_loop(handle, -1, process_packet, NULL);

可能的方向是:PCAP_D_IN, PCAP_D_OUT, PCAP_D_INOUT

参见tcpdump.org/manpages/pcap_setdirection.3pcap.txt

于 2016-12-11T14:55:41.667 回答
0

PCAP 文件格式不包含保存捕获期间使用的接口的字段。话虽如此,Wireshark 和 Tshark 目前使用的较新的 PCAP-NG 文件格式支持它以及数据包方向。

现有的 pcap-ng 功能:

  • 丢包数
  • 注释(评论)
  • 本地 IP 地址
  • 界面与方向
  • 主机名 <-> IP 地址数据库

电容率

听起来您是从路由器或防火墙捕获的,因此以下内容不起作用。

ip src 192.168.1.1

将流量捕获到流中可能是一种选择,但它仍然不会为您提供方向信息。不过,您将能够轻松确定源地址和目标地址。如果您有现有的 pcap,您可以将其转换为 ARGUS 格式:

argus -r capture.pcap -w capture.argus
ra -nnr capture.argus

可以轻松获取端点/主机的其他工具(一些带有示例)是:

ntop -f capture.pcap
tcpprof -nr capture.pcap

Wireshark端点

流工具

你必须解析出你想要的信息,但我认为这不会太麻烦。如果您无法使用它,我建议您查看 PCAP-NG。

于 2013-01-22T17:22:38.507 回答