【问题标题】:Filter Ethernet packets with C++ in linux Ubuntu在 Linux Ubuntu 中使用 C++ 过滤以太网数据包
【发布时间】:2016-07-14 11:01:47
【问题描述】:

我想过滤接收(或发送)是网络的数据包,我不想要它们的副本,我想过滤数据包并在必要时丢弃该数据包。所以我想在以太网层访问那个数据包,我也想过滤像ARP这样的数据包。

我想在 linux ,Ubuntu 中执行此操作,并且我使用 C++ ,QT。

任何人都可以在图书馆或其他方面帮助我吗?或者做这件事的书或杂志。我之前搜索过 NETFilter,但这对我没有帮助。

谢谢

【问题讨论】:

  • 你想实现wireshark吗?你可以使用 pcap 库.. 无论如何这是一个太宽泛的问题,它将被关闭
  • 伙计们,我想编写具有窗口管理器和权限控制的操作系统,请提供库以及如何在 c++ 中进行操作
  • @otopolsky 为什么会被关闭?没有 woteshark 是只显示数据包的东西,我想在进入操作系统之前控制数据包,如果我愿意,丢弃它们。
  • stackoverflow.com/help/on-topic 第 4 点,@nosbor 很好:D
  • 你需要为linux写一个以太网驱动

标签: c++ linux qt ubuntu networking


【解决方案1】:

Qt 没有为链路层实现数据包捕获功能。您可以使用libpcap 在 Linux 上捕获数据包。您的程序几乎肯定需要 root 权限才能以这种方式使用网络接口。

【讨论】:

  • 这是在以太网层吗?
  • @ArianB 是的,以太网在 tcpdump 和 OSI 模型方面是链路层协议。
【解决方案2】:

您需要为 linux 编写以太网网络驱动程序。在套接字级别,您附加一个过滤器,以便仅接受与过滤器规则匹配的数据包并将其传递给套接字。 这个link 将是一个好的开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 2014-07-29
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2010-09-23
    相关资源
    最近更新 更多