2012-01-24 24 views
3

我在寫一個Python腳本,它通過一個(超級複雜的)SOCKS/SSL隧道連接到遠程主機。我能夠在任何端口的遠程Intranet上建立到IP的連接。有沒有簡單的方法讓python腳本綁定到IP地址上的所有端口?

我希望做的是設置這個python腳本,使用本地回送範圍(127.0.xx)中的IP地址(可能在主機文件的幫助下),遠程的「副本」系統,因此使我能夠使用不支持代理的應用程序。問題是我並不總是知道他們試圖連接的端口。看起來解決這個問題的唯一方法是將套接字綁定到所有65536端口,這似乎有點瘋狂。所以有兩個問題:

  1. 這是瘋了嗎?我可以只設置一個從1-65536的套接字列表嗎?
  2. 或者有更好的方法我應該這樣做?我能否以某種方式監控與IP的連接,並在需要之前綁定端口?

我想避免使用太多的平臺相關或非Python代碼,如果可能的話。

編輯:澄清,我只在這裏寫客戶端 - 我無法控制服務器。相信我,如果我有控制它的服務器端我會做它用SOCKS/SSL/CRAM :)

+1

如果你運行的是Linux,我敢肯定你可以設置'iptables'來爲你做轉發,這比轉發流量的Python腳本有更好的性能。 – kindall

+0

我不認爲綁定所有端口是一個好主意,這會引入太多的資源開銷。 – ciphor

+2

是的,這太瘋狂了。爲什麼不是一個簡單的SOCKS/SSL VPN而不是一個超級複雜的SOCKS/SSL隧道?嗅覺未經授權的防火牆穿孔... –

回答

1

怎麼樣去更低的水平和接口的網絡分析儀設計的圖書館,如pycap

這樣你可以檢測到所有的連接嘗試,並找到你需要暴露的端口,或者你可以直接路由數據包,假設庫除了數據包檢測還可以做數據包注入(pypcap頁面說這個功能是實驗性的)。

這IMO意義在python僅供但是緩慢的應用...

Pycap似乎對Linux的開發,但核心捕獲是由libpcap的完成和Windows有一個類似的庫winpcap

+0

我在悄悄地希望避免在我的代碼中使用數據包捕獲:)我已經非常廣泛地使用Wireshark來查看SOCKS數據,所以我會看看pycap和Wireshark可以爲loopback適配器做些什麼,看看我能否縮小我需要綁定的端口數量。 –

1

馬特,

如果使用Windows您最好的拍攝是一樣的東西上的OpenVPN隧道。 OpenVPN只需要一個TCP端口/流,併爲您提供一對具有完整連接的虛擬接口。

[更新]

它可以使用在客戶端側上的驅動器TUN/TAP是可能的。有關想法,請參閱this unix版本。

+0

謝謝,但它不是我所追求的 - 我只能寫客戶端。我已經更新了這個問題來說明問題。 –

+0

在我意識到回送適配器有一個完整的範圍(我以前認爲它只是127.0.0.1)之前,我正在研究TUN/TAP獲取一些我可以綁定的IP。我不想安裝驅動程序來讓我的代碼工作,但我會研究它(如下面的pycap),看看它是否可以告訴我有關某些應用程序使用的端口。 –

相關問題