畢業(yè)設(shè)計(論文)半打開端口掃描技術(shù)的實現(xiàn)_第1頁
畢業(yè)設(shè)計(論文)半打開端口掃描技術(shù)的實現(xiàn)_第2頁
畢業(yè)設(shè)計(論文)半打開端口掃描技術(shù)的實現(xiàn)_第3頁
畢業(yè)設(shè)計(論文)半打開端口掃描技術(shù)的實現(xiàn)_第4頁
畢業(yè)設(shè)計(論文)半打開端口掃描技術(shù)的實現(xiàn)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、半打開端口掃描技術(shù)的實現(xiàn)半打開端口掃描技術(shù)的實現(xiàn)摘摘 要要隨著互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)入侵行為日益嚴(yán)重,網(wǎng)絡(luò)安全日益成為人們關(guān)注的焦點。端口掃描技術(shù)是網(wǎng)絡(luò)安全掃描技術(shù)的重要技術(shù)之一。對目標(biāo)系統(tǒng)進(jìn)行端口掃描,是網(wǎng)絡(luò)系統(tǒng)入侵者進(jìn)入目標(biāo)系統(tǒng)的第一步。本文對端口掃描技術(shù)的原理和應(yīng)用進(jìn)行了闡述,并設(shè)計了一個簡單的基于windows平臺上的端口掃描系統(tǒng)。在論文中介紹了半打開掃描中的syn探測技術(shù),分析了這種掃描技術(shù)實現(xiàn)的原理和特點。實際設(shè)計中采用了掃描安全性和可行性較好的syn探測技術(shù)來實現(xiàn)端口掃描,并實現(xiàn)了端口列表自定義,掃描結(jié)果存儲等幾大模塊化功能。最后結(jié)合當(dāng)前的實際情況對端口掃描的未來發(fā)展方向提出了一

2、點個人的看法。關(guān)鍵詞關(guān)鍵詞:網(wǎng)絡(luò)安全;端口掃描;syn 探測 591 論文網(wǎng) www.591lw.comthe implementation of a port-scanning programbased on semi-opened port technologyabstractwith the quick development of the internet, network intrusion behavior becomes more and more serious; network security becomes the focus which people pay atten

3、tion to. port-scanning technology is one of the most important technologies of the safe scanning on internet. the first step that network system intruders enter the target system is the port scanning of the system. this essay explains the principle and application of the port scanning technology, an

4、d then designs a simple port-scan system which bases on the windows platform. the paper introduces the syn probe technology of the semi-open scan technologies, analyzes its implementing principle, approach and characters. in the real design it use the syn probe technology which has a better scanning

5、 security and feasibility to achieve the port scanning, then realize user-defined port list function, recording of the scanning result, and some other functional modules. at last, combined with the nowadays actual situation, the paper brings a few personal minds for the future direction of the devel

6、opment of the port-scanning.key words: network security;port scanning;syn probe 591 論文網(wǎng) www.591lw.com目目 錄錄論文總頁數(shù):22 頁1引言.11.1端口掃描概述.11.2端口掃描技術(shù)的國內(nèi)外研究現(xiàn)狀.11.3端口掃描原理.11.4端口掃描技術(shù)概要.21.5syn 技術(shù)詳解.31.5.1tcp 包探測原理.31.5.2syn 包探測.41.5.3分組時延.41.6端口掃描實現(xiàn)方法.42需求分析.42.1端口掃描器的總體要求.42.1.1設(shè)計背景.42.1.2用戶特點.42.1.3軟件開發(fā)及運行環(huán)境

7、.52.2端口掃描器的需求分析.53端口掃描器的實現(xiàn).53.1功能模塊簡介.53.2程序?qū)崿F(xiàn)流程.63.3syn 探測的實現(xiàn).63.4端口掃描功能模塊.153.4.1端口選擇模塊.153.4.2目標(biāo) ip 選取模塊.163.4.3終止掃描.173.4.4掃描結(jié)果存儲模塊.174測試環(huán)境及結(jié)果.184.1硬件環(huán)境.184.2軟件環(huán)境.184.3測試結(jié)果.185端口掃描技術(shù)的發(fā)展方向和趨勢.19結(jié) 論.19參考文獻(xiàn).20第 1 頁 共 22 頁1 1 引言引言1.11.1 端口掃描概述端口掃描概述網(wǎng)絡(luò)安全探測在網(wǎng)絡(luò)安全中起著主動防御的作用,占有非常重要的地位。網(wǎng)絡(luò)安全探測的所有功能都是建立在端口掃

8、描的基礎(chǔ)上,所以對端口掃描技術(shù)的研究有著非常重要的現(xiàn)實意義。每一個網(wǎng)絡(luò)主機都相當(dāng)于一個“房間”,黑客能否進(jìn)入“房間”,取決于是否發(fā)現(xiàn)了打開的“門窗”。也就是說,能否入侵網(wǎng)絡(luò)主機,或者網(wǎng)絡(luò)主機是否安全,關(guān)鍵在于能否查出網(wǎng)絡(luò)主機的系統(tǒng)信息。而端口是主機與外界通訊交流的數(shù)據(jù)出入口,即是“門窗”。端口分為硬件端口和軟件端口,所謂硬件端口又稱為接口,包括:usb 端口、串行端口、并行端口等。軟件端口一般指網(wǎng)絡(luò)中面向連接服務(wù)(tcp)和無連接服務(wù)(udp)的通訊協(xié)議的端口。一個端口就是一個潛在的通信通道,也就是一個入侵通道。對目標(biāo)計算機進(jìn)行端口掃描,能得到許多有用的信息。通過端口掃描,發(fā)現(xiàn)系統(tǒng)的安全漏洞。

9、它使系統(tǒng)用戶了解系統(tǒng)目前向外界提供了哪些服務(wù),從而為系統(tǒng)用戶管理網(wǎng)絡(luò)提供了一種手段。1.21.2 端口掃描技術(shù)的國內(nèi)外研究現(xiàn)狀端口掃描技術(shù)的國內(nèi)外研究現(xiàn)狀網(wǎng)絡(luò)的安全狀況取決于網(wǎng)絡(luò)中最薄弱的環(huán)節(jié),任何疏忽都可能引入不安全的因素,最有效的方法是定期對網(wǎng)絡(luò)系統(tǒng)進(jìn)行安全性分析,及時發(fā)現(xiàn)并修正存在的脆弱性,保證系統(tǒng)的安全。國外安全掃描技術(shù)的歷史可以追溯到 20 世紀(jì) 90 年代,當(dāng)時因特網(wǎng)剛剛起步,但是在過去的十多年內(nèi),掃描技術(shù)飛速發(fā)展,迄今為止,其掃描技術(shù)己經(jīng)非常完善,但是在全面性、隱蔽性和智能性上還有待提高。而安全掃描器從最初專門為 unix 系統(tǒng)而編寫的一些只有簡單功能的小程序發(fā)展到現(xiàn)在,己經(jīng)出現(xiàn)

10、了可以運行在多個操作系統(tǒng)平臺上的、具有復(fù)雜功能的系統(tǒng)程序。國內(nèi)的掃描技術(shù)是在國外掃描器基礎(chǔ)上發(fā)展起來的。其中有些專門從事安全技術(shù)的公司包括綠盟科技、啟明星辰等等。這些公司的掃描器以硬件為主,其特點是執(zhí)行速度快,不像軟件一樣受到安裝主機系統(tǒng)性能的限制。然而對于更多的基于主機的端口掃描器而言,簡單、實用、可靠才是它們的長處。1.31.3 端口掃描原理端口掃描原理端口掃描通常指用同一個信息對目標(biāo)主機的所有需要掃描的端口進(jìn)行發(fā)送探測數(shù)據(jù)包即掃描,然后,根據(jù)返回端口的狀態(tài)來分析目標(biāo)主機端口是否打開,是否可用。端口掃描通過與目標(biāo)主機的 tcp/ip 端口建立連接并請求某些服務(wù),記錄目標(biāo)主機的應(yīng)答,收集目標(biāo)

11、主機相關(guān)信息,從而發(fā)現(xiàn)目標(biāo)主機某些內(nèi)在的第 2 頁 共 22 頁安全弱點,并且確定該端口什么服務(wù)正在進(jìn)行并獲取該服務(wù)的信息。端口掃描也可以通過捕獲本地主機或服務(wù)器的流入流出 ip 數(shù)據(jù)包來監(jiān)視本地主機的運行情況,它僅能對接收到的數(shù)據(jù)進(jìn)行分析,幫助我們發(fā)現(xiàn)目標(biāo)主機的某些內(nèi)在的弱點,而不會提供進(jìn)入一個系統(tǒng)的詳細(xì)步驟。1.41.4 端口掃描技術(shù)概要端口掃描技術(shù)概要端口掃描途徑主要是掃描器。掃描器是一種自動檢測遠(yuǎn)程或本地主機安全性弱點的程序,通過使用掃描器可以不留痕跡的發(fā)現(xiàn)遠(yuǎn)程服務(wù)器的各種 tcp 端口的分配及提供的服務(wù)和它們的軟件版本。這就能讓我們間接的或直觀的了解到遠(yuǎn)程主機所存在的安全問題。掃描器

12、通過選用遠(yuǎn)程 tcp/ip 不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過這種方法,可以搜集到很多關(guān)于目標(biāo)主機的各種有用的信息。掃描器有三項功能:發(fā)現(xiàn)一個主機或網(wǎng)絡(luò)的能力;一旦發(fā)現(xiàn)一臺主機,有發(fā)現(xiàn)什么服務(wù)正運行在這臺主機上的能力;通過測試這些服務(wù),發(fā)現(xiàn)漏洞的能力。為了理解掃描以及它的工作原理,首先應(yīng)對 tcp 的三次握手機制有所了解。tcp 的報頭包含一個序列號和一些起著特殊作用的標(biāo)記位。這里僅提到其中的四個標(biāo)記位:syn(同步),ack(確認(rèn)),rst(復(fù)位)和 fin(完成)。它們四個的作用與這里討論的主題密切相關(guān)。當(dāng)系統(tǒng)間建立連接和釋放連接時,就會用到所謂的握手機制。本文中所提到的連接均指

13、的是發(fā)生在兩個 ip 地址間,有一定的端口號的連接。它的工作原理大致如下:握手的第一步,一臺計算機首先請求和另外一臺計算機建立連接,它通過發(fā)送一個 syn 請求來完成,也即前面提到的 syn 標(biāo)記位置位。兩臺計算機間每條信息都有一個由發(fā)送方產(chǎn)生的序列號,序列號的使用使得雙方知道他們之間是同步的,而且還可以起到丟失信息時或接收順序錯誤時發(fā)送警告信息的作用。握手的第二步,接收到 syn 請求的計算機響應(yīng)發(fā)送來的序列號,它會將ack 標(biāo)記位置位,同時它也提供自己的序列號。到現(xiàn)在為止,發(fā)起連接建立請求的計算機認(rèn)為連接已經(jīng)建立起來,然而對方卻并不這樣認(rèn)為,對方還要等到它自己的序列號有了應(yīng)答后才能確認(rèn)連接

14、建立起來。因此現(xiàn)在的狀態(tài)稱為“半連接”。如果發(fā)起連接請求的計算機不對收到的序列號做出應(yīng)答,那么這個連接就永遠(yuǎn)也建立不起來,而正因為沒有建立連接,所以系統(tǒng)也不會對這次連接做任何記錄。握手的第三步,發(fā)起連接請求的計算機對收到的序列號作出應(yīng)答,這樣,兩臺計算機之間的連接才算建立起來。兩臺計算機釋放連接時的情況與此類似:當(dāng)一臺計算機說沒有更多的數(shù)據(jù)第 3 頁 共 22 頁需要發(fā)送了,它發(fā)送一個 fin 信號(將 fin 標(biāo)記位置位)通知另一端,接收到fin 的另一端計算機可能發(fā)送完了數(shù)據(jù),也可能沒發(fā)送完,但它會對此作出應(yīng)答,而當(dāng)它真正完成所有需要發(fā)送的數(shù)據(jù)后,它會再發(fā)送一個自己的 fin 信號,等對方

15、對此作出應(yīng)答后,連接才徹底解除。1.51.5 synsyn 技術(shù)詳解技術(shù)詳解.1 tcptcp 包探測原理包探測原理高效的探測方法需要解決 3 個問題:(1)用幾個包判斷主機和端口狀態(tài);(2)占用雙方的資源少;(3)準(zhǔn)確的分組時延計算方法。如果不建立完整的 tcp 連接,直接用 tcp 包來檢測 tcp 應(yīng)用服務(wù)端口的狀態(tài),會有效地提高探測效率和準(zhǔn)確性。對于問題(1)和(2),可以借鑒 tcp 端口掃描技術(shù),發(fā)送特殊 tcp 包解決。對于問題(3),可以在仿照 ping 的方式在 tcp 某些字段或選項中嵌入時間戳來解決。tcp 端口掃描技術(shù)通過發(fā)送一些特殊的 tcp 包判斷目

16、標(biāo)主機和端口狀態(tài)。端口掃描通過掃描目標(biāo)主機的大量端口,發(fā)現(xiàn)系統(tǒng)的漏洞。而服務(wù)器的地址和端口一般都是公開的,如果只探測服務(wù)器的工作端口,不用探測其余的端口,可以向工作端口發(fā)送特殊的 tcp 包,根據(jù)返回包判斷目標(biāo)狀態(tài)。絕大多數(shù)tcp/ip 協(xié)議棧的實現(xiàn)遵循以下原則:(1)當(dāng)一個 syn 或者 fin 數(shù)據(jù)包到達(dá)一個關(guān)閉的端口,tcp 丟棄數(shù)據(jù)包同時發(fā)送一個 rst 數(shù)據(jù)包。(2)當(dāng)一個包含 ack 的數(shù)據(jù)包到達(dá)一個監(jiān)聽端口時,數(shù)據(jù)包被丟棄,同時發(fā)送一個 rst 數(shù)據(jù)包。(3)當(dāng)一個 syn 數(shù)據(jù)包到達(dá)一個監(jiān)聽端口時,正常的三階段握手繼續(xù),回答一個 syn|ack 數(shù)據(jù)包。(4)當(dāng)一個 fin 數(shù)

17、據(jù)包到達(dá)一個監(jiān)聽端口時,數(shù)據(jù)包被丟棄。“fin 行為”(關(guān)閉的端口返回 rst,監(jiān)聽端口丟棄包),在 urg 和 psh 標(biāo)志位置位時同樣要發(fā)生。所有的 urg,psh 和 fin,或者沒有任何標(biāo)記的 tcp 數(shù)據(jù)包都會引起“fin 行為”。一般 tcp 端口掃描根據(jù)以上方式的發(fā)包收包來判斷主機與端口狀態(tài)。因為 fin 包不能直接探測監(jiān)聽端口,所以通常選擇使用 syn 包或 ack 包探測監(jiān)聽端口。一些防火墻出于安全的考慮,將發(fā)現(xiàn)和攔截 ack 與 fin 探測包,但不會攔截 syn 包。通過網(wǎng)絡(luò)上別人的一些測試和實驗發(fā)現(xiàn),對 internet中發(fā)布的 60 個 http 代理服務(wù)器進(jìn)行探測。

18、其中,97%的服務(wù)器對 syn 包有應(yīng)答,只有 53%的服務(wù)器對 ack 包有應(yīng)答。實驗發(fā)現(xiàn)對 syn 包無應(yīng)答的主機對任何 tcp 包都無應(yīng)答。無論服務(wù)器有什么樣的安全處理規(guī)則,根據(jù)方式(1)(2),syn 請求都會得到應(yīng)答,所以選擇 syn 包作為探測包。第 4 頁 共 22 頁.2 synsyn 包探測包探測第一步:客戶端向服務(wù)器的工作端口發(fā)送 syn,服務(wù)器返回 syn|ack 包或 rst 包。如果客戶端收到 syn|ack,則可以肯定服務(wù)器活動和端口開啟。收到 rst 包,則說明服務(wù)器活動但端口關(guān)閉,客戶端不用執(zhí)行第二步。如果超時無應(yīng)答,則認(rèn)為包丟失。第二步:因為不

19、需要建立正常的 tcp 連接,所以對應(yīng)答 ack 包的服務(wù)器發(fā)送 rst 包,保證服務(wù)器端關(guān)閉半連接。因為只有少量報文對端口探測,不會引起安全系統(tǒng)的報警。使用 syn 包探測,可以檢測服務(wù)器和端口的狀態(tài)、分組時延、丟包率,又可以穿透防火墻,符合網(wǎng)絡(luò)對安全的要求。.3 分組時延分組時延假如用定時器來計算分組往返的時間,大量的定時器會造成資源極大消耗。雖然 tcp 協(xié)議規(guī)定了時間戳選項(類型 8),用該選項中嵌入時間戳,服務(wù)器返回包的選項部分含有發(fā)送的時間戳。然而,在具體 tcp/ip 協(xié)議實現(xiàn)中,有些tcp/ip 協(xié)議棧會忽略該選項,或者選項值置 0,無法得到往返時間。如果能像p

20、ing 一樣保證某一字段的數(shù)據(jù)在往返中不改變,就可以像 ping 一樣嵌入時間戳。但 tcp 的各字段不能保證往返數(shù)據(jù)一致。可以考慮用一種變通的方式嵌入時間戳。對于客戶機發(fā)送的 syn 報文,設(shè)序號 x,則服務(wù)主機返回報文的確認(rèn)序號等于 x+1。利用發(fā)送序號和確認(rèn)序號的關(guān)系來傳遞時間戳。設(shè)置 syn 包的發(fā)送序號為時間戳,收到的 syn|ack 包或 rst 包的確認(rèn)序號減 1 即可得到發(fā)送包的時間戳。用收到包的時間減去發(fā)送時間戳即得到分組時延。1.61.6 端口掃描實現(xiàn)方法端口掃描實現(xiàn)方法本文通過對基于半打開的端口掃描技術(shù)的實現(xiàn)來介紹了現(xiàn)在一些主流的端口掃描技術(shù),通過對程序的開發(fā)加深了對端口

21、掃描技術(shù)的認(rèn)識。經(jīng)過對端口掃描技術(shù)的了解和認(rèn)識,本文采用隱蔽性較好基于主機的 syn 刺探技術(shù)來實現(xiàn)。2 2需求分析需求分析2.12.1 端口掃描器的總體要求端口掃描器的總體要求.1 設(shè)計背景設(shè)計背景該端口掃描器是面向普通用戶使用,以期成為一個普通用戶用來檢測端口網(wǎng)絡(luò)主機端口并有效地保護(hù)自己。在采用 syn 刺探方式進(jìn)行掃描的基礎(chǔ)上成為一個基于半打開的實用、簡單、方便的端口掃描工具。.2 用戶特點用戶特點由于該端口掃描系統(tǒng)是一個基于半打開的端口掃描器,其面向的是普通的對于端口掃描有需求的用戶,因此需要提供一個簡潔、方便、高效的界面和功第 5 頁 共 22 頁能。

22、.3 軟件開發(fā)及運行環(huán)境軟件開發(fā)及運行環(huán)境系統(tǒng)開發(fā)工具:visual c+ 6.02.22.2 端口掃描器的需求分析端口掃描器的需求分析端口掃描器的一般需求:(1)隱蔽性需求作為掃描的一方來說,端口掃描除了要能掃出目標(biāo)主機的端口信息以外,還需要能有一定的隱蔽性,以最大的可能不在目標(biāo)主機留下訪問信息。如果仍然采用基于 tcp connect()的掃描則將很容易被目標(biāo)主機記錄,因此從隱蔽性上考慮 syn 半打開掃描或者 fin 掃描會是很好的選擇。(2)端口選擇需求當(dāng)我們在使用掃描軟件對目標(biāo)主機進(jìn)行掃描的時候,有的時候是有目的性地掃描目標(biāo)主機的某一個端口,然而在大部分時候卻需要掃描

23、批量端口或者是一些重要的指定端口。這個時候需要端口掃描系統(tǒng)具有自定義端口列表的功能。(3)掃描結(jié)果存儲需求在進(jìn)行完一次端口掃描之后,需要對結(jié)果進(jìn)行保存。無論是攻擊還是檢測,端口掃描器是需要與其他的一些工具配合到一起使用的,所以要求端口掃描器一定要具有存儲結(jié)果的功能,以將掃描得到的目標(biāo)主機端口信息保存下來。3 3端口掃描器的實現(xiàn)端口掃描器的實現(xiàn)3.13.1 功能模塊簡介功能模塊簡介3.23.2 程序?qū)崿F(xiàn)流程程序?qū)崿F(xiàn)流程3.33.3 synsyn 探測的實現(xiàn)探測的實現(xiàn) (5)原始套接字包發(fā)送完后,就可以接收目標(biāo)主機的回應(yīng)。當(dāng)發(fā)送原始套接字包時(如 tcp syn 數(shù)據(jù)包),操作系統(tǒng)核心并不知道,也

24、沒有此數(shù)據(jù)發(fā)送或者連接建立的記錄。因此,當(dāng)遠(yuǎn)端主機回應(yīng)時,系統(tǒng)核心就把這些包都全部丟掉,從而到達(dá)不了應(yīng)用程序上。所以,程序中不能簡單地使用接收函數(shù)來接收這些數(shù)據(jù)包。要達(dá)到接收數(shù)據(jù)包的目的,必須采用嗅探,接收所有通過的數(shù)據(jù)包,然后進(jìn)行篩選,留下符合需要的。為此可以表示接收所有的數(shù)據(jù)。通過設(shè)置原始套接字的 i/0 控制命令,便可以調(diào)用 sio_rcvall 接收返回的數(shù)據(jù)包,分析是不是掃描程序返回的。dword winapi listeningfunc(lpvoid lpvoid) /定義套接字 rawsock,以連接應(yīng)用程序和監(jiān)聽的本地網(wǎng)卡socket rawsock;sockaddr_in a

25、ddr_in=0;第 6 頁 共 22 頁int settimeout = 500;inforlisten* lp =(inforlisten*)lpvoid;int num = lp-num;*省略部分代碼*if(rawsock=socket(af_inet,sock_raw,ipproto_ip)=invalid_socket)/建立原始 ipproto_ip 套接字afxmessagebox(socket setup error!n);return false;addr_in.sin_family=af_inet;構(gòu)造 syn 包,最好選用較大的端口號作為發(fā)送端口,以免和應(yīng)用程序正在使用

26、的端口發(fā)生沖突。在這里我們選用的是 8288。另外在構(gòu)造 tcp 頭的時候,還添加了 tcp 選項 sack,保證 tcp 連接請求被接受。addr_in.sin_port=htons(8288); /設(shè)置接收的端口為 8288addr_in.sin_addr.s_un.s_addr=htonl(inaddr_any); /監(jiān)聽所有的本地ip 地址/對 rawsock 綁定本機 ip 和端口,當(dāng)系統(tǒng)收到目標(biāo)的返回信息時,便可以通過 rawsock 傳到應(yīng)用程序當(dāng)中。int ret=bind(rawsock, (struct sockaddr *)&addr_in, sizeof(addr_in

27、);if(ret=socket_error) afxmessagebox(bind false);程序使用兩次判斷來過濾 ip 包。首先判斷 ip 頭部,要求目的地址是本機、協(xié)議號是 tcp 協(xié)議。然后再判斷 tcp 頭部,要求目的端口等于選用端口號,控制標(biāo)志位為 syn|ack 或者rst。因為監(jiān)聽套接字會接收到所有的 ip 包,要保證能盡快處理分組,如圖 4所示。第 7 頁 共 22 頁圖 4 返回 ip 包的接收及過濾設(shè)置 sio_rcvall,包括延時和數(shù)據(jù)大小等信息,以接收所有的數(shù)據(jù)包。在收到返回信息的時候接受并分析數(shù)據(jù)包是否為應(yīng)用程序返回的信息。setsockopt(rawsock

28、,sol_socket,so_rcvtimeo, (char *)&settimeout, sizeof(int);dword lpvbuffer = 1; dword lpcbbytesreturned = 0; /設(shè)置一個套接口的模式,接受所有數(shù)據(jù)wsaioctl(rawsock, sio_rcvall, &lpvbuffer, sizeof(lpvbuffer), null, 0, &lpcbbytesreturned, null, null);*省略部分代碼*char recvbuf256=0;/接收數(shù)據(jù)包ret=recvfrom(rawsock,recvbuf,sizeof(recv

29、buf),0,(struct sockaddr*)&from,&size);if(ret!=socket_error)/分析數(shù)據(jù)包ipheader *lpipheader;lpipheader=(ipheader *)recvbuf;這里從接受到的數(shù)據(jù)中分離出 ip 報頭 lpipheader,接著又從 ip 報頭中繼續(xù)分離出源地址 sourceip,并判斷源地址是否在起始 ip 和結(jié)束 ip 的范圍內(nèi)和是否為遠(yuǎn)程開放端口返回的數(shù)據(jù)包。if(lpipheader-proto=ipproto_tcp& ntohl(lpipheader-sourceip)=startip & ntohl(lpip

30、header-sourceip)th_seq != 0 & lptcpheader-th_flag=0 x12)cstring strip = sourceip;*省略部分代碼*inserttotree (htree,strip,csport);(6)在掃描完成以后,使用函數(shù) inserttotree 將結(jié)果插入到結(jié)果樹中htree,并在結(jié)果樹中進(jìn)行排序,使得結(jié)果按照選擇的方式展開或合攏。void inserttotree (ctreectrl* htree,cstring csip,cstring csport)htreeitem a=htree-insertitem(csip,null,t

31、vi_last);htree-insertitem(csport,a,tvi_last);3.43.4 端口掃描功能模塊端口掃描功能模塊.1 端口選擇模塊端口選擇模塊選擇從端口范圍或默認(rèn)端口列表中獲取待掃描的端口,首先通過消息傳遞函數(shù) m_ischecked 來判斷是否得到了選取端口范圍的消息,如果是,則獲取起始端口和結(jié)束端口的數(shù)據(jù)并判斷起始端口是否不大于結(jié)束端口;如果沒有傳來消息,則嘗試調(diào)用 m_portlisttree.getnextitem 從自定義端口列表樹中得到當(dāng)前所選擇的默認(rèn)端口并從端口列表樹中繼續(xù)獲得下一個端口。bool clscanportdlg:readpor

32、ttoportlist()updatedata();第 9 頁 共 22 頁這里通過 m_ischecked 獲得選取端口范圍的消息,然后就判斷端口范圍是否符合規(guī)則,即起始端口不應(yīng)該大于結(jié)束端口。if ( m_ischecked )if ( m_portfrom m_portto )afxmessagebox(起始端口 不應(yīng)該大于 結(jié)束端口!);return false;while ( m_portfrom isblank() )afxmessagebox(ip 地址 不能為空!);return false;*省略部分代碼*afxmessagebox(ip 地址 不能為空!);return f

33、alse;pip-getaddress(m_endip);最后使用 if 循環(huán)來判斷 m_startip 和 m_endip,當(dāng) m_startip 大于 m_endip的時候,返回提示信息起始 ip 必須enablewindow(true),以使界面上的按鈕有效,可以重新開始掃描。.4 掃描結(jié)果存儲模塊掃描結(jié)果存儲模塊通過使用 onbuttonsaveresult 函數(shù),在得到保存結(jié)果的消息后首先判斷結(jié)果地址樹是否為空,如果有掃描結(jié)果則創(chuàng)建一個標(biāo)準(zhǔn)文件對話框以準(zhǔn)備存儲掃描結(jié)果。在創(chuàng)建成功以后將掃描結(jié)果列表樹上的數(shù)據(jù)寫入到文本框中以存儲本次掃描的結(jié)果。第 11 頁 共 22 頁

34、如果程序仍然處于掃描狀態(tài)中,將不能保存結(jié)果。通過全局變量判斷程序是否處于掃描狀態(tài),如果沒有則創(chuàng)建一個命為“result.txt”的文本文件來保存掃描結(jié)果。if ( :ok = true )afxmessagebox(失敗,還在掃描,請等待停止后再保存!);return;tchar prmax_path=0;getmodulefilename(null,pr,max_path);memset(pr+strlen(pr)-4,0,4);strcat(pr,result.txt);/創(chuàng)建標(biāo)準(zhǔn)文件對話框,用 fdlg.domodal()來顯示創(chuàng)建的對話框當(dāng)打開文件的時候?qū)傩栽O(shè)置為寫入,并將得到的掃描結(jié)

35、果保存到創(chuàng)建的文本文件當(dāng)中。file* fp = fopen(fname,w);if ( fp = null )afxmessagebox(寫入失敗!);return;fprintf(fp,portscanner 掃描結(jié)果如下:n);定義兩個結(jié)構(gòu)體 a 和 b,a 表示結(jié)果樹中的 ip 地址,b 表示每個 ip 下面掃描出來的端口信息。在對掃描結(jié)果進(jìn)行保存的時候,首先用 a 通過m_listtreeresult.getitemtext()得到一個掃描的 ip,然后將所有掃描這個 ip 得到的端口子屬性 m_listtreeresult.getnextsiblingitem()寫到 a 的下面。

36、如此循環(huán)便可以將所有的 ip 和掃描出來的端口保存到創(chuàng)建的文本文件中。*省略部分代碼*fclose ( fp);afxmessagebox(成功寫入!);第 12 頁 共 22 頁/創(chuàng)建標(biāo)準(zhǔn)文件對話框失敗 else if (nresponse = idcancel)return;4 4測試環(huán)境及結(jié)果測試環(huán)境及結(jié)果4.14.1 硬件環(huán)境硬件環(huán)境計算機:cpu:sempron2200+ oc 1.8g 內(nèi)存 512m網(wǎng)絡(luò)環(huán)境:局域網(wǎng)4.24.2 軟件環(huán)境軟件環(huán)境系統(tǒng)環(huán)境:windows xp 編譯工具:visual c+ 6.04.34.3 測試結(jié)果測試結(jié)果通過和寢室同學(xué)搭建的一個局域網(wǎng),對所設(shè)計

37、的端口掃描器進(jìn)行了實驗。在一開始的實驗中,發(fā)現(xiàn)掃描速度及結(jié)果的準(zhǔn)確率都不理想。在經(jīng)過編程測試后發(fā)現(xiàn)是延時設(shè)置過小的原因。接受包的延時本來設(shè)置為 1000 毫秒,但正是由于延時過小,所以不能及時接收返回的包,導(dǎo)致了結(jié)果準(zhǔn)確率不高,很多掃描的結(jié)果都不能顯示出來。發(fā)現(xiàn)這一問題后,將延時設(shè)置為 5000 毫秒,這時掃描速度及準(zhǔn)確度大大提高。5 5端口掃描技術(shù)的發(fā)展方向和趨勢端口掃描技術(shù)的發(fā)展方向和趨勢在未來,端口掃描將不僅僅作為一個簡單的工具,它會集成更多的功能,或是和別的工具結(jié)合起來,成為一個綜合的檢測工具。僅僅借助單一的漏洞掃描等工具進(jìn)行的安全評估是不完整的、有局限性的,它不能夠很好地表現(xiàn)信息系統(tǒng)的安全特征,因此需要一種既能夠有效收集系統(tǒng)中各主機的安全信息,又能夠及時發(fā)現(xiàn)網(wǎng)絡(luò)中發(fā)送信息的源地址相關(guān)信息的工具為安全評估提供支持。現(xiàn)在已有一些綜合掃描系統(tǒng)既能實現(xiàn)安全掃描,又能監(jiān)聽并分析系統(tǒng)中的數(shù)據(jù)包,提供網(wǎng)絡(luò)中的存在的漏洞及安全狀況,成為一個綜合掃描系統(tǒng)。綜合掃描系統(tǒng)是一種自動檢測遠(yuǎn)程或本地主機安全脆弱點的程序,通過使用掃描系統(tǒng),系統(tǒng)管理員能夠發(fā)現(xiàn)所維護(hù)的 web 服務(wù)器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論