端口掃描設計過程(一) 收藏

端口掃描設計過程(一)

 

目標


或許在有像nmap這樣功能強大的掃描工具的今天,我們根本沒必要考慮再設計一個功能可能不成熟的掃描工具。但是當你希望做到下面的幾點時你就有必要進一步思考一個掃描工具的設計過程或者繼續閱讀這篇文檔。

 

•我希望這個掃描工具的開發過程是易理解的,我即使不用閱讀文檔都能完全看懂源代碼。良好的設計是可以做到這一點,這也是這個項目的主要目標之一;


•我希望瞭解掃描技術,操作系統的安全策略,防火牆針對掃描的安全策略。雖然這一系列的文章目標不在於提供安全策略的詳細描述,但是隻要是與項目有關的技術,文章中都會有所介紹。


•我希望低成本地定製自己的開發環境,以簡化我的開發過程。系列文章中會介紹一些作者認爲較好的開源框架在針對該項目的應用。
如果你有上述的需求,我強烈建議閱讀這系列的文章。而且,我希望你能隨時向作者提供反饋,只有大家的反饋,作者纔會有繼續寫下去的動力。

 

適宜讀者


很遺憾,這一系列的文章不是所有人都適宜閱讀的,作者假設你具備下面的基礎。

•Java語言及面向對象技術
•設計模式,UML
•TCP/IP協議簇,接入互聯網技術
•操作系統,尤其是Windows系統
•常見防火牆


不過,絕對不要認爲你需要一下子精通上面的所有的基礎知識,作者會在不同的文檔中要求讀者有不同的相應技術基礎,你可以在每篇文檔的“適宜讀者”一小節中獲取該文檔的知識基礎。而且,針對那些不同需求的人閱讀這一系列文章中,可能只會對特定的文檔感興趣。對於他們,具備的基礎知識只要是他感興趣的就可以了。

 

開發前的幾句話


測試驅動開發與模型驅動開發


我們是採用極限編程中推薦的測試驅動開發,還是基於UML的模型驅動開發呢?這一個問題會貫穿於該系列的文檔中。基本思路是當面對複雜的問題時,我們會先建立模型,然後再編碼。而針對簡單的問題,或者可以從複雜的問題解脫出來獲得一個簡單的原型時就會對其先寫單元測試,然後實現它,並不斷重構代碼。

 

並行處理


如果我們的目標是掃描大型網絡,並希望結合各種掃描技術以做到高確度的掃描。此時,我就必須引進並行處理,並會爲掃描任務建模,從而做到均分任務,同時項目的目標是任務能協作完成。即沒完成的任務,可以獲取已完成任務的資源繼續運行。而且,項目的目標還包括可以在分佈式環境下完成掃描任務。不過,這不容易,到目前爲止,作者已經嘗試了很多種並行處理解決方案。主要的難點就是:同步數據,任務模型的確定或/以及對已有的解決方案的集成工作。

 

界面,數據持久化


在項目的目標中,強調軟件的核心模塊不依賴於特定的界面,也不依賴於特定的數據持久化解決方案。所以開發過程中會對軟件核心與界面,數據持久化的映射工作大做文章。

 

對界面的目標是能快速的從命令行程序轉化爲桌面、Web應用。對數據持久化的主要方向將是XML。

 

掃描技術


項目的目標不是實現當今社會的所有掃描技術,也沒有打算探索新的掃描技術。而是,希望通過軟件設計方法提供一個可以與並行處理機制相互兼容的同時又可擴展的掃描技術框架。不難分析出,很多的掃描技術它們是極其相似,或者它們在發送包或對響應包的處理中某個部分是極其相似的。很多掃描技術是以前的掃描技術的變種。我們完全可以利用良好的設計來減少代碼的重複並提高易讀性。

 

但這並不容易。所有的掃描技術都依賴於特定的操作系統、特定的網絡環境及特定的用戶權限。我們必須將依據上述的不同情況分門別類進行處理。而且,很多掃描技術的依賴條件可以提前統一分析。比如,確定操作系統就可以在分配到目標IP就可以開始進行,而不應該細分到在特定的IP與端口之後再確定。這就使得並行處理的事務精度更加難以確定。顯然,不能把針對一個IP、一個端口、一種掃描技術的掃描作爲並行處理調度的最小單位!

 

工具


項目的目標不是讓軟件從0開始進行開發,而是利用大量現有的工具簡化開發流程。開發過程中所使用的所有工具都是來自網絡的開源項目,系列文章中更加關注的是如何集成這些開源項目。其中就包括,工具的選擇、擴展、集成等問題。使用這些工具,將解決並行處理、命令解析、數據訪問等問題。

 

反饋


“開發前的幾句話”,這一小節是本文最需要反饋的部分。希望大家能提供寶貴意見,以讓我及時更新本文,使其更加成熟,使本文具有活躍的生命力。

 

下一篇


下一篇將蒐集用戶素材,並對其進行整理。這是爲了做需求分析而進行的準備工作。或許,通過用戶素材我們可以看到軟件的結構。

 

聯繫作者


你可以通過郵件:[email protected]聯繫到我。歡迎大家,把反饋意見發到我到的郵箱中。


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ruyun126/archive/2009/09/11/4542756.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章