網(wǎng)絡(luò)端口掃描共工具的設(shè)計實現(xiàn)分析_第1頁
網(wǎng)絡(luò)端口掃描共工具的設(shè)計實現(xiàn)分析_第2頁
網(wǎng)絡(luò)端口掃描共工具的設(shè)計實現(xiàn)分析_第3頁
網(wǎng)絡(luò)端口掃描共工具的設(shè)計實現(xiàn)分析_第4頁
網(wǎng)絡(luò)端口掃描共工具的設(shè)計實現(xiàn)分析_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、-. z. 網(wǎng)絡(luò)端口掃描工具的設(shè)計與實現(xiàn)學生: 指導教師: 摘 要 本課程設(shè)計是在Windows系統(tǒng)中,通過軟件visual studio 2010使用C#語言完成的一個端口掃描程序。此程序主要利用TCP連接的三次握手特性,完成對指定主機端口的掃描。掃描能對指定IP的主機的常用端口進展掃描。掃描結(jié)果以列表的形式直觀地展現(xiàn)出來。通過對掃描結(jié)果的分析知道了,有哪些常用端口是開放的。關(guān)鍵詞 C#;端口掃描;TCP三次握手;網(wǎng)絡(luò)平安 1 引 言1.1本文主要容本文第二節(jié)主要說明本設(shè)計的背景及目的;第三節(jié)介紹了TCP端口掃描根本原理;第四節(jié)詳細描述了網(wǎng)絡(luò)端口掃描工具的設(shè)計步驟、局部源代碼以;第五節(jié)為相關(guān)

2、測試結(jié)果;第六節(jié)為完畢語以及末尾的相關(guān)參考文獻。1.2 設(shè)計平臺及設(shè)計語言本系統(tǒng)是在win7操作系統(tǒng)上,通過visual studio 2010軟件使用C#語言設(shè)計編寫完成的。1.3 設(shè)計背景及目的網(wǎng)絡(luò)中每臺計算機猶如一座城堡,這些城堡中,有些是對外完全開放的,有些卻是大門緊閉的。在網(wǎng)絡(luò)中,把這些城堡的城門稱之為計算機的端口。端口掃描是入侵者搜索信息的幾種常用方法之一,也正是這一種方法最容易暴露入侵者的身份和意圖。一般說來,掃描端口有以下目的:判斷目標主機上開放了哪些效勞判斷目標主機的操作系統(tǒng)如果入侵者掌握了目標主機開放了哪些效勞,運行何種操作系統(tǒng),他們就能使用相應(yīng)的手段實現(xiàn)入侵。而如果管理員

3、先掌握了這些端口效勞的平安漏洞,就能采取有效的平安措施,防相應(yīng)的入侵。2 設(shè)計原理2.1 端口的根本概念端口是由計算機的通信協(xié)議TCP/IP協(xié)議定義的。其中規(guī)定,用IP地址和端口作為套接字,它代表TCP連接的一個連接端,一般稱為Socket。具體來說,就是用IP端口來定位一臺主機中的進程。如果要和遠程主機A的程序通信,則只要把數(shù)據(jù)發(fā)向A端口就可以實現(xiàn)通信了。端口與進程是一一對應(yīng)的,如果*個進程正在等待連接,稱之為該進程正在監(jiān)聽,則就會出現(xiàn)與它相對應(yīng)的端口。由此可見,通過掃描端口,便可以判斷出目標計算機有哪些通信進程正在等待連接。端口是一個16 bit的地址,用端口號進展標識不同作用的端口。端口

4、一般分為兩類。熟知端口號:圍從0到1023,這些端口號一般固定分配給一些效勞。比方21端口分配給FTP效勞,25端口分配給SMTP效勞,80端口分配給 效勞,135端口分配給RPC效勞等等動態(tài)端口號:動態(tài)端口的圍從1024到65535,只要運行的程序向系統(tǒng)提出訪問網(wǎng)絡(luò)的申請,則系統(tǒng)就可以從這些端口號中分配一個供該程序使用。在關(guān)閉程序進程后,就會釋放所占用的端口號。2.2 端口掃描技術(shù)2.2.1 TCP connect()掃描這是最根本的TCP掃描。操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用,用來與每一個感興趣的目標計算機的端口進展連接。如果端口處于偵聽狀態(tài),則connect()就能成功。否則,這

5、個端口是不能用的,即沒有提供效勞。這個技術(shù)的一個最大的優(yōu)點是,你不需要任何權(quán)限,系統(tǒng)中的任何用戶都有權(quán)利使用這個調(diào)用。另一個好處就是速度,如果對每個目標端口以線性的方式,使用單獨的connect()調(diào)用,則將會花費相當長的時間,你可以通過同時翻開多個套接字,從而加速掃描。使用非阻塞I/O允許你設(shè)置一個低的時間用盡周期,同時觀察多個套接字。但這種方法的缺點是很容易被覺察,并且被過濾掉。目標計算機的logs文件會顯示一連串的連接和連接是出錯的效勞消息,并且能很快的使它關(guān)閉。2.2.2 TCP SYN掃描這種技術(shù)通常認為是半開放掃描,這是因為掃描程序不必要翻開一個完全的TCP連接。掃描程序發(fā)送的是一

6、個SYN數(shù)據(jù)包,好象準備翻開一個實際的連接并等待反響一樣參考TCP的三次握手建立一個TCP連接的過程。一個SYN|ACK的返回信息表示端口處于偵聽狀態(tài)。一個RST返回,表示端口沒有處于偵聽態(tài)。如果收到一個SYN|ACK,則掃描程序必須再發(fā)送一個RST信號,來關(guān)閉這個連接過程。這種掃描技術(shù)的優(yōu)點在于一般不會在目標計算機上留下記錄。但這種方法的一個缺點是,必須要有root權(quán)限才能建立自己的SYN數(shù)據(jù)包。2.2.3 TCP FIN掃描有的時候有可能SYN掃描都不夠秘密。一些防火墻和包過濾器會對一些指定的端口進展監(jiān)視,有的程序能檢測到這些掃描。相反,F(xiàn)IN數(shù)據(jù)包可能會沒有任何麻煩的通過。這種掃描方法的

7、思想是關(guān)閉的端口會用適當?shù)腞ST來回復FIN數(shù)據(jù)包。另一方面,翻開的端口會忽略對FIN數(shù)據(jù)包的回復。這種方法和系統(tǒng)的實現(xiàn)有一定的關(guān)系。有的系統(tǒng)不管端口是否翻開,都回復RST,這樣,這種掃描方法就不適用了。并且這種方法在區(qū)分Uni*和NT時,是十分有用的。2.2.4 IP段掃描這種不能算是新方法,只是其它技術(shù)的變化。它并不是直接發(fā)送TCP探測數(shù)據(jù)包,是將數(shù)據(jù)包分成兩個較小的IP段。這樣就將一個TCP頭分成好幾個數(shù)據(jù)包,從而過濾器就很難探測到。但必須小心。一些程序在處理這些小數(shù)據(jù)包時會有些麻煩。2.2.5 TCP反向ident掃描ident 協(xié)議允許(rfc1413)看到通過TCP連接的任何進程的

8、擁有者的用戶名,即使這個連接不是由這個進程開場的。因此你能,舉個例子,連接到 端口,然后用identd來發(fā)現(xiàn)效勞器是否正在以root權(quán)限運行。這種方法只能在和目標端口建立了一個完整的TCP連接后才能看到。2.3 本系統(tǒng)設(shè)計原理本系統(tǒng)采用的是TCP connect()掃描技術(shù)眾所周知,端口存在兩種,UDP和TCP。UDP協(xié)議由于是非面向連接的,對UDP端口的探測也就不可能像TCP端口的探測那樣依賴于連接建立過程,這也使得UDP端口掃描的可靠性不高。 而TCP由于其connection oriented的特性,為端口的掃描提供了根底。眾所周知,TCP建立連接時有三次握手。先是client端往ser

9、ver*端口發(fā)送請求連接的SYN包,server的該端口如果允許連接,會給client端發(fā)一個SYN+ACK回包,client端收到server的SYN+ACK包后再給server端發(fā)一個確認包ACK(ack=k+1 ,TCP連接正式建立?;谶B接的建立過程,可以想到,假設(shè)要掃描*一個TCP端口,可以嘗試與該端口進展TCP連接,如果該端口處于翻開狀態(tài),通過TCP三次握手就能成功建立連接,也就是說,如果連接成功,就可以判斷目標掃描出于翻開狀態(tài),否則,目標端口處于關(guān)閉狀態(tài)。這就是TCP端口掃描的根本原理。主機B主機AACK,SEQ=*+1,ACK=Y+1SYN,SEQ*SYN,ACK,SEQ=Y,

10、ACK=*+1連接請求確認確認圖2.1 TCP連接建立過程3 設(shè)計步驟3.1程序設(shè)計程序設(shè)計的總體思路:本系統(tǒng)要求掃描指定IP地址的主機的常用端口,首先在程序中要定義一個數(shù)組,用于指定常用端口包含的容;其次需要創(chuàng)立一個掃描方法,當用戶輸入指定IP后,循環(huán)調(diào)用該方法對指定IP的常用端口進展掃描,并將掃描結(jié)果以列表形式顯示。程序的大概執(zhí)行過程:第一步,用戶輸入指定IP地址,點擊掃描后,創(chuàng)立線程,并創(chuàng)立ThreadStart的委托對象;第二步,假設(shè)當前掃描端口數(shù)量未超過定義的數(shù)組上限值,調(diào)用掃描線程Scan()對該端口嘗試連接;第三步,循環(huán)掃描數(shù)組里定義的所有端口,記錄每個端口是否開放情況;第四步,

11、數(shù)組的所有端口掃描完成后,匹配過濾原則,顯示掃描完畢。流程圖如圖3.1所示圖3.1 程序流程圖3.2 程序?qū)崿F(xiàn)3.2.1 創(chuàng)立線程當用戶點擊掃描之后,執(zhí)行以下程序代碼,創(chuàng)立線程并創(chuàng)立線程ThreadStart委托對象,同時將顯示框初始化:privatevoid btnScan_Click(object sender, System.EventArgs e) /創(chuàng)立線程,并創(chuàng)立線程ThreadStart委托對象Thread process = newThread(newThreadStart(PortScan); process.Start(); /顯示框初始化lbResult.Items.Cl

12、ear(); lbResult.Items.Add(端口掃描器1.0.);lbResult.Items.Add();3.2.2 TCP掃描方法此段代碼實現(xiàn)了對指定端口掃描功能,此次安城定義了一個臨時變量port_now,當該線程被調(diào)用后,創(chuàng)立TcpClient對象,嘗試對指定端口進展TCP連接,并將結(jié)果顯示在顯示框:privatevoid Scan() int port_now = port; doneport_now = true; Addr = t*tAddr.Te*t; /創(chuàng)立TcpClient對象TcpClient objTCP = null;try /用TcpClient對象掃描端口

13、,連接成功表示端口開放/連接不成功表示端口未開放或防火墻過濾objTCP = newTcpClient(Addr, scan_portport_now); lbResult.Items.Add(端口 + scan_portport_now.ToString() + 開放); catch lbResult.Items.Add(端口 + scan_portport_now.ToString() + 未開放); 3.2.3 端口掃描主函數(shù)此段代碼通過調(diào)用Scan()方法,實現(xiàn)了對指定端口組個掃描功能。當執(zhí)行時,首先對當前掃描端口進展過濾原則匹配,假設(shè)掃描端口排序超過定義數(shù)組最大值,則顯示掃描完畢;反

14、之,調(diào)用Scan()線程對該端口進展掃描。此段代碼中還定義了當未完成掃描,強行退出時,直接終止執(zhí)行程序:privatevoid PortScan() lbResult.Items.Add(開場掃描. (可能需要您等待幾分鐘); lbResult.Items.Add(); Addr = t*tAddr.Te*t;for (int i = 0; i 16; i+) port = i;/使用該端口的掃描線程 scanThread = newThread(newThreadStart(Scan); scanThread.Start();/使線程睡眠 System.Threading.Thread.Sl

15、eep(100); /未完成時情況while (!OK) OK = true;for (int i = 0; i 16; i+) if (!donei) OK = false;break; System.Threading.Thread.Sleep(1000); lbResult.Items.Add(掃描完畢!); 3.3 測試結(jié)果程序開場執(zhí)行時,主界面初始化,用戶可在左邊文本框中輸入想要掃描的主機的IP地址,點擊掃描,則掃描開場。主界面如圖3.2所示。 圖3.2 系統(tǒng)主界面當用戶輸入指定IP,本測試使用本地主機作為測試,輸入,點擊掃描,掃描結(jié)果以列表的形式顯示在右邊的文本框中。測試結(jié)果如圖3

16、.3所示。圖3.3 端口掃描測試截圖4 完畢語本次課程設(shè)計的課題是設(shè)計實現(xiàn)一個簡單的端口掃描工具,此次課程設(shè)計程序在VS2010軟件中使用C#編寫,該工具可掃描局域網(wǎng)的*計算機常用端口是否烤房,并以本地主機作為測試。經(jīng)過這兩個星期的課程設(shè)計,通過圖書館和網(wǎng)上查找資料,順利完成了設(shè)計和開發(fā),端口掃描系統(tǒng)開發(fā)完畢。系統(tǒng)根本符合要求,但是鑒于此系統(tǒng)是基于TCP三次握手過程實現(xiàn)端口掃描,該系統(tǒng)掃描時花費時間偏長。在整個設(shè)計過程中,出現(xiàn)過很多的問題,得到了教師和同學的幫助,在不斷學習的過程中我體會到這次課程設(shè)計是一個不斷學習的過程,從設(shè)計初的模糊認識到最后能夠順利完成,我體會到在實踐中學習的重要性。設(shè)計過程中,由于要實現(xiàn)*些功能,網(wǎng)上資源解決了我的問題。多借鑒網(wǎng)絡(luò)資源也是一種很好的學習方法總之,通過這次課程設(shè)計,我深刻體會到要做好一個完整的系統(tǒng),需要有系統(tǒng)的思維方式和方法,對待一個新的問題,要耐心、要善于運用已有的資源來

溫馨提示

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

評論

0/150

提交評論