2010-01-03 104 views
4

我正在尋找一個小程序,它將攔截網絡數據包(在本地計算機上),並在網絡出去之前對其進行修改。我需要能夠修改標題,而不僅僅是數據。Windows網絡數據包修改

我已經瀏覽了幾種可能性,但我不確定哪一種最適合追求。那裏有開源數據包過濾器,但過濾似乎只能允許或拒絕數據包,而不是其他數據包。

另一種解決方案是編寫一個NDIS中間驅動程序,但寫驅動程序是一個超越我。即使WinDDK中的簡單pass-thru示例也有數千行。我也不希望不斷重新安裝驅動程序並重新啓動以測試我的代碼。

我理想地喜歡該程序是自包含的,而不是依賴第三方驅動程序/軟件/任何安裝。

所以,如果你們可以指引我正確的方向,用我的方式扔一些有用的鏈接,無論如何,我會很感激。

回答

4

取決於你想過濾/修改什麼樣的數據包。

如果您是在應用程序級別篩選之後,並希望掌握HTTP或類似的數據包,那麼您最好的選擇可能是LSP。但請注意,遵循此路徑有一定的缺點。第一個MS似乎試圖擺脫這種技術,而IIRC是Windows 7徽標要求的一部分,「你的產品沒有LSP」,他們似乎在推銷Windows Filtering Platform。其次,對於您在第三方LSP兼容性方面遇到的麻煩,您會感到非常驚訝。第三,一個非常虛擬LSP仍然在2KLOC左右:)

如果你是在IP層數據包過濾後,你需要去驅動程序。

Windows Filtering Platform爲您提供兩種情況下所需的功能。但是,它僅適用於Windows Vista和更高版本的產品,因此沒有XP。需要考慮的另一件事是,WFP只能在用戶區域允許/拒絕數據包,如果需要修改它們,則需要進入內核模式。 (至少現在的情況是什麼,也許他們現在已經改進了一些東西)。

2

恕我直言,如果你想修改數據包,你需要與硬件,某種驅動程序交談。如果你不想使用你自己的,你應該得到一個第三方驅動程序互操作。

爲了過濾,有像winpcap或libpcap這樣的庫。

也可以看看這裏:http://www.ntkernel.com/w&p.php?id=7

另一個鏈接:http://bittwist.sourceforge.net/

希望這有助於!

2

winpcap只能過濾預編譯條件的數據包。你需要的是編寫LSP級網絡驅動程序。每次重新安裝時都不需要重新啓動,但它可以在數據包發送到網絡之前真正修改數據包。 更多的信息在這裏:http://blogs.msdn.com/wndp/archive/2006/02/09/529031.aspx或這裏:http://www.microsoft.com/msj/0599/LayeredService/LayeredService.aspx

+1

LSP不是一個驅動程序,它是一個不起眼的用戶級DLL。 – Dmitry 2010-01-03 13:39:19

2

我不是專家,但我想在我的局域網上做類似的事情。我想攔截來自單個固定IP的數據包,並在他們進入我的路由器之前修改它們,然後再上網。我還希望捕獲並修改返回的數據包,然後讓它們通過我的主機。我設想的方法是這樣的...

  1. ARP毒害主機和路由器,所以我的嗅探機器已經通過它的所有數據包。
  2. 分析我將來要修改的數據包,並查找這些數據包的獨特特性,以便我可以捕獲它們。
  3. 編寫一個實時查找所述特徵的宏/腳本,然後在發送它的方式之前進行修改。

我知道凱恩& Abel for Windows能夠(哈哈)ARP毒害,但我不知道它是否可以提供數據包內容的原始轉儲。 Wireshark能夠轉儲所有,但不知道它是否可以ARP毒化,以便獲得我後來的,如果不是,那麼我可以通過以太網輕鬆地將我想攔截的主機連接到我的嗅探器,然後通過共享互聯網嗅探器,以便所有數據包無論如何都會通過嗅探器。

因此,第1步可以完成,我不知道所說的程序是否有能力根據細節進行過濾,但我猜他們是這樣做的。

這就和我一樣。希望這對某人有幫助,也許別人可以進一步採取這種做法?