2011-04-15 92 views
6

我在問什麼是「如何爲Windows製作軟件防火牆」,但其實並不那麼複雜。我很驚訝,在搜索這個時候我能找到這麼一點,只是偶爾提到鉤子。所以,如果有人能指引我朝着正確的方向,我將非常感激。製作攔截Windows中網絡流量的程序

我希望能用C來做到這一點(儘管如果還有另一種語言你認爲會更好,我全都是耳朵)。我想製作一個監視網絡流量的應用程序,可以提取IP地址(傳入源,傳出目標源),並可以阻止所述網絡活動。

這似乎是在內核中做起來容易得多的事情,但我不想在那裏閒蕩,也不能在Windows中訪問它。我並不擔心效率,也不想製作個人防火牆。這只是一個關於IP地址的實驗。

任何指針?

注意:我能夠阻止網絡特定的網絡活動,而不僅僅是監視它

回答

5

DIY方式將採用內核模式,使用filter-hook drivers(適用於Windows 2000-XP)或WFP Callout Drivers

如果您想讓其他人在內核模式下執行骯髒的工作,WinPcap驅動程序/庫會包含大量低級網絡功能,包括您需要的功能,您可以在用戶模式下使用它們(請注意,使用WinPcap你不能丟包)。

+0

我應該在原始問題中做得更清楚,但丟棄數據包(我認爲我需要做的是阻止網絡流量),這是一個重要的要求。有幾個人建議WinPcap,但它沒有這種能力?在那種情況下,我應該查看那些過濾鉤子驅動程序。 – cost 2011-04-15 22:42:56

+0

@cost:不,它沒有這樣的功能,正如常見問題解答頁面中所述。 – 2011-04-15 22:45:15

1

你想看看libpcap and tcpdump是很重要的。

+2

tcpdump和libpcap不能在Windows上運行。我認爲你的意思是WinPcap和WinDump。 – 2011-04-15 22:24:55

0

嘗試winpcap。作爲「帶有GUI的tcpdump」,你可以試試wireshark

+0

我想能夠阻止潛在的流量,wireshark可以做到這一點嗎? – cost 2011-04-15 22:25:57

+0

@cost據我所知,沒有 – 2011-04-15 22:26:37

1

我認爲你要找的是一個數據包嗅探器,它將攔截幾乎所有通過網絡的通信。如果你想使用圖書館,請查看WinPCap,這正是爲了這個目的。

此外,如果你認爲你只是想要預先寫好的東西,只想修改它,請查看Wireshark。儘管閱讀代碼通常比編寫代碼更困難。

3

這聽起來像你要找的是Winsock Service Provider Interface(SPI)Layered Service Provider(LSP)。從你所說的話來看,如果你使用的是Vista或更新的版本,你可能想要實現一個LSP_INSPECTOR類的實例。對於舊版本的Windows,該類並不完全適用,但總體思路相同。在Vista/7上,您可以使用WSCSetApplicationCategory爲您的應用程序設置類別(類)。要安裝您的提供商,請填寫WSAPROTOCOL_INFO結構,然後通過致電WSCInstallProvider進行註冊。

+0

這看起來像是最好的解決方案。它是否可以攔截已經編譯的程序中發送到TCP套接字的數據? – Navin 2013-12-22 09:25:35