如何使用 qt c++ 管理来自本地计算机的网络流量



如何使用qt c++管理来自本地机器的网络流量?我找到了数据包捕获的解决方案,例如libpcap,但它们不能阻止或操纵流量。我需要创建类似于代理切换器的东西,但找不到正确的起点。有什么想法吗?

Qt不提供嗅探或阻止网络流量的方法。在Windows上,您可以使用WinPcap,它是libpcap的端口,并提供许多低级网络功能,包括您需要的功能,您可以从用户模式使用。WinPcap由一个驱动程序和一个库组成,用于轻松访问低级网络层。一些网络工具,如Wireshark,Nmap,Snort,ntop使用WinPcap。在 Linux 上,您可以使用 libPcap 嗅探网络数据包,但为了阻止,我认为您需要内核空间驱动程序或类似的东西。

Qt不提供过滤功能。要过滤 Linux 上的流量,您应该使用 iptables。

apt-get install iptables-dev

http://www.netfilter.org/projects/libnetfilter_queue/doxygen/group__Queue.html

选择数据包的决定后,必须通过调用 nfq_set_verdict() 或 nfq_set_verdict2() 来做出判断。判定决定数据包的命运,如下所示:

  • NF_DROP丢弃了数据包
  • NF_ACCEPT数据包通过,则继续迭代
  • NF_STOLEN走了
  • NF_QUEUE将数据包注入不同的队列(目标队列号位于判定的高 16 位中)
  • NF_REPEAT再次迭代相同的循环
  • NF_STOP接受,但不继续迭代

最新更新