Thursday, June 24, 2010

Echeneidae IDS 顛倒架構 & IPv4 碎片重組模組

IP碎片重組一直是Echeneidae IDS中重要的部分,顯然也是個大問題。
我從開發早期就開始構思IP碎片重組模組,不過直到今天我才真正的實踐了它。

從前天開始著力於開發它時,才發現原本的封包解析架構並不適合它,應該說架構上顛倒了。
原本架構在OSI 7模型中,是由下到上,由最底層開始解析。但是接觸IP碎片重組後,發現我對TCP封包的理解有所錯誤(TCP和UDP之類的應該是可以由一個或多個IP封包組成),因此我做了一個重大的決定,重新改寫解析架構,改為由上往下,TCP解析時可以要求多個IP封包傳回,進行重組

不幸的是,我今天連續遇到了兩個極為奇怪又簡單的Bug,分別是陣列少加了[XXX]和多了一個break; ,我都透過逐步檢查才找到並解決它,當然過程耗費了數個小時,是令人抓狂的一件事(尤其在找到那一剎那,才發覺自己浪費了多少時間)

不過令人高興的是,IPv4碎片重組模組已經順利的通過了由8000多片碎片組成的TCP封包測試,對於數小時的Debug來說,是個不錯的結果

圖中 TCP test [192, 168, 2, 3]:-19513 -> [192, 168, 2, 254]:71 為碎片重組規則偵測結果

No comments:

Post a Comment