有没有一种简单的方法让python脚本绑定到IP地址上的所有端口?

时间:2012-01-24 05:48:57

标签: python sockets bind

我正在编写一个Python脚本,它通过(超级复杂的)SOCKS / SSL隧道连接到远程主机。我能够在任何端口上建立远程Intranet中IP的连接。

我希望做的是设置这个python脚本,使用本地环回范围(127.0.xx)中的IP地址成为(可能在hosts文件的帮助下)远程系统的“副本” ,因此使我能够使用不支持代理的应用程序。问题是我并不总是知道他们想要连接到哪些端口。似乎解决这个问题的唯一方法是将套接字绑定到所有65536端口,这看起来有点疯狂。所以有两个问题:

  1. 这是疯了吗?我可以从1-65536设置一个python的套接字列表吗?
  2. 或者我有更好的方法吗?我能否以某种方式监控与IP的连接并在需要之前绑定端口?
  3. 如果可能的话,我想避免使用过多的平台相关或非python代码。

    编辑:澄清一下,我只是在这里写客户端 - 我无法控制服务器。相信我,如果我控制它的服务器端,我会使用SOCKS / SSL / CRAM:)

2 个答案:

答案 0 :(得分:1)

马特,

如果使用Windows,你最好的镜头就像隧道上的OpenVPN。 OpenVPN只需要一个TCP端口/流,并为您提供一对具有完全连接的虚拟接口。

[更新]

可以在客户端使用TUN/TAP驱动程序。有关创意,请参阅this unix版本。

答案 1 :(得分:1)

如何降低水平并连接为pycap等网络分析器设计的库?

通过这种方式,您可以检测所有连接尝试并查找需要公开的端口,或者您可以直接路由数据包,假设除了数据包检测之外的库也可以进行数据包注入(pypcap页面说这个功能是实验性的)。

这对IMO来说只适用于慢速应用程序而不是......

Pycap似乎是为linux开发的,但核心捕获是由libpcap完成的,对于windows,有一个类似的库winpcap