2016-02-24 35 views
0

我在Windows上使用Windows Filtering Platform標註來跟蹤TCP連接。 ALE上建立的過濾器和端點關閉層對於檢測連接的開始和結束非常有效。但是,我還需要知道每個方向的流量大小,最好是數據包數量,但我無法在封閉信息中找到它。Windows篩選平臺 - 查找TCP會話的字節數

可以使用流層來監視每個數據包,但是在內核空間中維護一個會話表並且不斷更新每個數據包的會話並不具有吸引力,因爲這會增加很多開銷和複雜性。

任何人都知道如何有效地獲得在Windows上使用WFP的TCP會話的字節數?替代建議也將受到歡迎。

回答

0

我也嘗試解決這個問題一次,但最終與以下。它僅適用於IPv4!

在FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4層可以使用FwpsFlowAssociateContext0 funtions創建自己的背景,後來,在DITNO_FIREWALL_STREAM_CALLOUT_V4和DITNO_FIREWALL_DATAGRAM_DATA_CALLOUT_V4層,增加字節計數器並保存任何元數據的上下文結構。

一旦調用了flowDeleteFn,它意味着流程結束,並且您的計數器已準備就緒。用於上下文的內存必須被釋放。

順便說一句,內核功能有什麼好運?