Sky*_*eSM 5 c++ sockets udp multiplexing
如何在C++中创建客户端UDP套接字,以便它可以侦听另一个应用程序正在侦听的端口?换句话说,如何在C++中应用端口多路复用?
我只想监听一个端口
您可以使用嗅探器来做到这一点。只需忽略来自不同端口的数据包即可。
我可能需要阻止它发送一些特定的数据包,因为我的程序将发送它而不是原始应用程序
好吧,在这里我建议你放弃嗅探器,并使用MITM技术。
您需要依靠 PREROUTING 防火墙规则将数据包转移到“代理”应用程序。假设 UDP、Linux、iptables 和“代理”运行在同一主机上,以下是“代理”实际需要执行的操作:
1.添加防火墙规则以转移数据包(如果您愿意,可以手动执行):
iptables -t nat -A PREROUTING -i <iface> -p <proto> --dport <dport>
-j REDIRECT --to-port <newport>
Run Code Online (Sandbox Code Playgroud)
2.绑定并监听<newport>。
3.中继 2 个端点(客户端和原始目的地)之间的所有流量。如果您在不同的主机上运行“代理”,请使用getsockopt来SO_ORIGINAL_DST检索原始目标地址。
这可能听起来很棘手,但是......是的,那是因为它有点棘手:-)如果我的假设有分歧,请查阅您的防火墙文档。