gpt4 book ai didi

c++ - 在 linux 中拦截/重新路由 TCP SYN 数据包到 C++ 程序

转载 作者:可可西里 更新时间:2023-11-01 02:45:55 26 4
gpt4 key购买 nike

我正在尝试找到最简单的方法来拦截我的计算机在 C++ 程序中发送的 TCP SYN 数据包。我知道有几个选项。一种是监控所有流量,只选择性地处理 SYN 数据包,对其余数据包不做任何处理。我遇到的另一个选择是使用数据包过滤实用程序,它将 SYN 数据包转发到我的程序。有人建议我使用 netfilter对于相同的。

我想知道是否还有其他选择,或者我应该深入研究 netfilter。此外,关于如何使用 netfilter 执行此操作的任何指示都会有所帮助。

编辑:我想拦截 SYN 数据包,可能需要在将其重新注入(inject)网络之前对其进行修改(重新路由到不同的目的地、更改目标端口等)

编辑:我能够使用 iptables 和 libnetfilter_queue 的组合来做到这一点。我使用 ipfilter 将所有 TCP SYN 数据包重定向到特定队列(这是使用一个简单的命令)
然后在 C 程序中,我能够使用 libnetfilter_queue API 访问队列中的数据包,分析它们并将它们重新注入(inject)网络。

最佳答案

如果您只是想查看 数据包,请使用libpcap 和数据包过滤 - 这适用于大多数 UNIX 变体。

如果您想以某种方式拦截和重写数据包,请提供更多有关您尝试执行的操作以及之后数据包应该发生什么的信息。

正如您所建议的,这可能是 netfilter 及其 queue 的应用程序模块,尽管这需要 2.6.14 或更高版本的内核:

Main Features

  • receiving queued packets from the kernel nfnetlink_queue subsystem
  • issuing verdicts and/or reinjecting altered packets to the kernel nfnetlink_queue subsystem

关于c++ - 在 linux 中拦截/重新路由 TCP SYN 数据包到 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/594162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com