2009-08-29 140 views
0

我打算在.net中開發一個windows應用程序,它將像防火牆/代理服務器一樣工作。但我沒有iea從哪裏開始。任何幫助?使用.net的防火牆

基本上我想通過我的電腦監視所有傳出的HTTP流量。

回答

3

我可能是錯的,因爲你對你需要做什麼的定義有點模糊,但是恐怕你會對.NET感到失望:你必須把手放在非託管的骯髒世界中代碼,因爲afaik沒有.NET包裝所需的功能。其實,它遠比這個糟糕:沒有「官方」的win32包裝所需的功能;你必須對系統調用做一些醜陋/冒險的修改,或者使用第三方工具來代替系統調用醜陋/危險的混亂工具(並且我正在談論系統調用的地址存儲並更改地址以指向您的功能)。

我一直在尋找類似iptables for windows的東西,並且找不到任何東西;我查看了免費和商業軟件的代碼(當然,我還沒有試過全部可用軟件,但我花了相當長的時間看),他們都通過做骯髒的事情來實現鉤子。

+1

關於如何做到這一點的最好解釋是由Anthony Jones和Jim Ohlund撰寫的「Microsoft Windows網絡編程」(Anthony是MS的當前winsock開發人員)。它已經絕版,但你仍然可以找到副本:http://www.amazon.com/Network-Programming-Microsoft-Windows-Professional/dp/0735605602 示例代碼有一個框架LSP實現,你可以破解你自己的因爲這是大多數人所做的。 – 2009-08-29 10:33:17

0

命名空間System.Net可能是一個很好的開始。

0

要監視所有流量,您必須插入具有所需功能的分層服務提供程序(LSP)。你用C編寫一個,甚至一個寫得很好的LSP看起來像垃圾。我聽說winsock團隊中的人也抱怨這些事情。我知道System.Net沒有任何東西可以直接讓你這樣做(我在寫System.Net的團隊中,因此相信我)。您可以使用System.Net.NetworkInformation查詢系統的網絡信息,如打開的連接,使用的地址,網絡接口的枚舉等,但這不會讓您監控流量。

如果你只想寫一個代理服務器,然後System.Net將可能是因爲其他任何你能找到有用,但你將不得不實現超越讀請求和寫響應自己所有的代理功能。