我正试图找到最简单的方法来截获我的电脑在C++程序中发送的TCP SYN数据包。我知道有几个选项。一个会监视所有的流量,并且只是有选择地处理SYN数据包而对其他数据无所作为。我遇到的另一个选择是使用包过滤实用程序将SYN数据包转发到我的程序。有人建议我使用netfilter。截取/重新编程TCP SYN数据包到Linux中的C++程序
我想知道是否有其他选择,或者我应该钻研netfilter。另外,关于如何使用netfilter做到这一点的任何指针都会有所帮助。
编辑:我想拦截SYN包,可能需要对其进行修改再注入回网络
编辑之前(重新路由到不同的目的地,改变目的端口等):我是能够做到这一点使用iptables和libnetfilter_queue的组合。我用ipfilter将所有TCP SYN数据包重定向到一个特定的队列(这是使用一个简单的命令)
然后在一个C程序中,我能够使用libnetfilter_queue API来访问队列中的数据包并分析它们并将它们重新注册回网络。
请说明你是否确实要重新路由 - 你建议你做主题,但不要在问题 – Alnitak 2009-02-27 10:01:30
中提到我想拦截SYN数据包,可能需要修改它(重新路由到不同的目的地,改变目标端口等),然后将其重新注入网络 – 2009-02-27 10:22:05