網(wǎng)絡(luò)端口掃描共工具的設(shè)計(jì)與實(shí)現(xiàn)樣本_第1頁(yè)
網(wǎng)絡(luò)端口掃描共工具的設(shè)計(jì)與實(shí)現(xiàn)樣本_第2頁(yè)
網(wǎng)絡(luò)端口掃描共工具的設(shè)計(jì)與實(shí)現(xiàn)樣本_第3頁(yè)
網(wǎng)絡(luò)端口掃描共工具的設(shè)計(jì)與實(shí)現(xiàn)樣本_第4頁(yè)
網(wǎng)絡(luò)端口掃描共工具的設(shè)計(jì)與實(shí)現(xiàn)樣本_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

網(wǎng)絡(luò)端口掃描工具設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名: 指引教師:摘要本課程設(shè)計(jì)是在Windows系統(tǒng)中,通過(guò)軟件visualstudio使用C#語(yǔ)言完畢一種端口掃描程序。此程序重要運(yùn)用TCP連接三次握手特性,完畢對(duì)指定主機(jī)端口掃描。掃描能對(duì)指定IP主機(jī)慣用端口進(jìn)行掃描。掃描成果以列表形式直觀地呈現(xiàn)出來(lái)。通過(guò)對(duì)掃描成果分析懂得了,有哪些慣用端口是開(kāi)放。核心詞C#;端口掃描;TCP三次握手;網(wǎng)絡(luò)安全1引言1.1本文重要內(nèi)容本文第二節(jié)重要闡明本設(shè)計(jì)背景及目;第三節(jié)簡(jiǎn)介了TCP端口掃描基本原理;第四節(jié)詳細(xì)描述了網(wǎng)絡(luò)端口掃描工具設(shè)計(jì)環(huán)節(jié)、某些源代碼以;第五節(jié)為有關(guān)測(cè)試成果;第六節(jié)為結(jié)束語(yǔ)以及末尾有關(guān)參照文獻(xiàn)。1.2設(shè)計(jì)平臺(tái)及設(shè)計(jì)語(yǔ)言本系統(tǒng)是在win7操作系統(tǒng)上,通過(guò)visualstudio軟件使用C#語(yǔ)言設(shè)計(jì)編寫(xiě)完畢。1.3設(shè)計(jì)背景及目網(wǎng)絡(luò)中每臺(tái)計(jì)算機(jī)猶如一座城堡,這些城堡中,有些是對(duì)外完全開(kāi)放,有些卻是大門(mén)緊閉。在網(wǎng)絡(luò)中,把這些城堡“城門(mén)”稱(chēng)之為計(jì)算機(jī)“端口”。端口掃描是入侵者搜索信息幾種慣用辦法之一,也正是這一種辦法最容易暴露入侵者身份和意圖。普通說(shuō)來(lái),掃描端口有如下目:

判斷目的主機(jī)上開(kāi)放了哪些服務(wù)

判斷目的主機(jī)操作系統(tǒng)

如果入侵者掌握了目的主機(jī)開(kāi)放了哪些服務(wù),運(yùn)營(yíng)何種操作系統(tǒng),她們就能使用相應(yīng)手段實(shí)現(xiàn)入侵。而如果管理員先掌握了這些端口服務(wù)安全漏洞,就能采用有效安全辦法,防范相應(yīng)入侵。

2設(shè)計(jì)原理2.1端口基本概念端口是由計(jì)算機(jī)通信合同TCP/IP合同定義。其中規(guī)定,用IP地址和端口作為套接字,它代表TCP連接一種連接端,普通稱(chēng)為Socket。詳細(xì)來(lái)說(shuō),就是用IP端口來(lái)定位一臺(tái)主機(jī)中進(jìn)程。如果要和遠(yuǎn)程主機(jī)A程序通信,那么只要把數(shù)據(jù)發(fā)向A端口就可以實(shí)現(xiàn)通信了。端口與進(jìn)程是一一相應(yīng),如果某個(gè)進(jìn)程正在等待連接,稱(chēng)之為該進(jìn)程正在監(jiān)聽(tīng),那么就會(huì)浮現(xiàn)與它相相應(yīng)端口。由此可見(jiàn),通過(guò)掃描端口,便可以判斷出目的計(jì)算機(jī)有哪些通信進(jìn)程正在等待連接。端口是一種16bit地址,用端標(biāo)語(yǔ)進(jìn)行標(biāo)記不同作用端口。端口普通分為兩類(lèi)。熟知端標(biāo)語(yǔ):范疇從0到1023,這些端標(biāo)語(yǔ)普通固定分派給某些服務(wù)。例如21端口分派給FTP服務(wù),25端口分派給SMTP服務(wù),80端口分派給HTTP服務(wù),135端口分派給RPC服務(wù)等等動(dòng)態(tài)端標(biāo)語(yǔ):動(dòng)態(tài)端口范疇從1024到65535,只要運(yùn)營(yíng)程序向系統(tǒng)提出訪問(wèn)網(wǎng)絡(luò)申請(qǐng),那么系統(tǒng)就可以從這些端標(biāo)語(yǔ)中分派一種供該程序使用。在關(guān)閉程序進(jìn)程后,就會(huì)釋放所占用端標(biāo)語(yǔ)。2.2端口掃描技術(shù)2.2.1TCPconnect()

掃描這是最基本TCP掃描。操作系統(tǒng)提供connect()系統(tǒng)調(diào)用,用來(lái)與每一種感興趣目的計(jì)算機(jī)端口進(jìn)行連接。如果端口處在偵聽(tīng)狀態(tài),那么connect()就能成功。否則,這個(gè)端口是不能用,即沒(méi)有提供服務(wù)。這個(gè)技術(shù)一種最大長(zhǎng)處是,你不需要任何權(quán)限,系統(tǒng)中任何顧客均有權(quán)利使用這個(gè)調(diào)用。另一種好處就是速度,如果對(duì)每個(gè)目的端口以線性方式,使用單獨(dú)connect()調(diào)用,那么將會(huì)耗費(fèi)相稱(chēng)長(zhǎng)時(shí)間,你可以通過(guò)同步打開(kāi)各種套接字,從而加速掃描。使用非阻塞I/O容許你設(shè)立一種低時(shí)間用盡周期,同步觀測(cè)各種套接字。但這種辦法缺陷是很容易被發(fā)現(xiàn),并且被過(guò)濾掉。目的計(jì)算機(jī)logs文獻(xiàn)會(huì)顯示一連串連接和連接是出錯(cuò)服務(wù)消息,并且能不久使它關(guān)閉。2.2.2TCPSYN掃描這種技術(shù)普通以為是“半開(kāi)放”掃描,這是由于掃描程序不必要打開(kāi)一種完全TCP連接。掃描程序發(fā)送是一種SYN數(shù)據(jù)包,好象準(zhǔn)備打開(kāi)一種實(shí)際連接并等待反映同樣(參照TCP三次握手建立一種TCP連接過(guò)程)。一種SYN|ACK返回信息表達(dá)端口處在偵聽(tīng)狀態(tài)。一種RST返回,表達(dá)端口沒(méi)有處在偵聽(tīng)?wèi)B(tài)。如果收到一種SYN|ACK,則掃描程序必要再發(fā)送一種RST信號(hào),來(lái)關(guān)閉這個(gè)連接過(guò)程。這種掃描技術(shù)長(zhǎng)處在于普通不會(huì)在目的計(jì)算機(jī)上留下記錄。但這種辦法一種缺陷是,必要要有root權(quán)限才干建立自己SYN數(shù)據(jù)包。2.2.3TCPFIN

掃描有時(shí)候有也許SYN掃描都不夠秘密。某些防火墻和包過(guò)濾器會(huì)對(duì)某些指定端口進(jìn)行監(jiān)視,有程序能檢測(cè)到這些掃描。相反,F(xiàn)IN數(shù)據(jù)包也許會(huì)沒(méi)有任何麻煩通過(guò)。這種掃描辦法思想是關(guān)閉端口會(huì)用恰當(dāng)RST來(lái)回答FIN數(shù)據(jù)包。另一方面,打開(kāi)端口會(huì)忽視對(duì)FIN數(shù)據(jù)包回答。這種辦法和系統(tǒng)實(shí)既有一定關(guān)系。有系統(tǒng)不論端口與否打開(kāi),都回答RST,這樣,這種掃描辦法就不合用了。并且這種辦法在區(qū)別Unix和NT時(shí),是十分有用。2.2.4IP段掃描這種不能算是新辦法,只是其他技術(shù)變化。它并不是直接發(fā)送TCP探測(cè)數(shù)據(jù)包,是將數(shù)據(jù)包提成兩個(gè)較小IP段。這樣就將一種TCP頭提成好幾種數(shù)據(jù)包,從而過(guò)濾器就很難探測(cè)到。但必要小心。某些程序在解決這些小數(shù)據(jù)包時(shí)會(huì)有些麻煩。2.2.5TCP

反向

ident掃描ident合同容許(rfc1413)看到通過(guò)TCP連接任何進(jìn)程擁有者顧客名,雖然這個(gè)連接不是由這個(gè)進(jìn)程開(kāi)始。因而你能,舉個(gè)例子,連接到http端口,然后用identd來(lái)發(fā)現(xiàn)服務(wù)器與否正在以root權(quán)限運(yùn)營(yíng)。這種辦法只能在和目的端口建立了一種完整TCP連接后才干看到。2.3本系統(tǒng)設(shè)計(jì)原理本系統(tǒng)采用是TCPconnect()掃描技術(shù)眾所周知,端口存在兩種,UDP和TCP。UDP合同由于是非面向連接,對(duì)UDP端口探測(cè)也就不也許像TCP端口探測(cè)那樣依賴(lài)于連接建立過(guò)程,這也使得UDP端口掃描可靠性不高。而TCP由于其connectionoriented特性,為端口掃描提供了基本。眾所周知,TCP建立連接時(shí)有三次握手。先是client端往server某端口發(fā)送祈求連接SYN包,server該端口如果容許連接,會(huì)給client端發(fā)一種SYN+ACK回包,client端收到serverSYN+ACK包后再給server端發(fā)一種確認(rèn)包ACK(ack=k+1),TCP連接正式建立?;谶B接建立過(guò)程,可以想到,如果要掃描某一種TCP端口,可以嘗試與該端口進(jìn)行TCP連接,如果該端口處在打開(kāi)狀態(tài),通過(guò)TCP三次握手就能成功建立連接,也就是說(shuō),如果連接成功,就可以判斷目的掃描出于打開(kāi)狀態(tài),否則,目的端口處在關(guān)閉狀態(tài)。這就是TCP端口掃描基本原理。主機(jī)B主機(jī)B主機(jī)AACK,SEQ=X+1,ACK=Y+1SYN,SEQ=XSYN,ACK,SEQ=Y,ACK=X+1連接祈求確認(rèn)確認(rèn)圖2.1TCP連接建立過(guò)程3設(shè)計(jì)環(huán)節(jié)3.1程序設(shè)計(jì)程序設(shè)計(jì)總體思路:本系統(tǒng)規(guī)定掃描指定IP地址主機(jī)慣用端口,一方面在程序中要定義一種數(shù)組,用于指定慣用端口包括內(nèi)容;另一方面需要?jiǎng)?chuàng)立一種掃描辦法,當(dāng)顧客輸入指定IP后,循環(huán)調(diào)用該辦法對(duì)指定IP慣用端口進(jìn)行掃描,并將掃描成果以列表形式顯示。程序大概執(zhí)行過(guò)程:第一步,顧客輸入指定IP地址,點(diǎn)擊掃描后,創(chuàng)立線程,并創(chuàng)立ThreadStart委托對(duì)象;第二步,若當(dāng)前掃描端口數(shù)量未超過(guò)定義數(shù)組上限值,調(diào)用掃描線程Scan()對(duì)該端口嘗試連接;第三步,循環(huán)掃描數(shù)組里定義所有端口,記錄每個(gè)端口與否開(kāi)放狀況;第四步,數(shù)組內(nèi)所有端口掃描完畢后,匹配過(guò)濾原則,顯示掃描結(jié)束。流程圖如圖3.1所示圖3.1程序流程圖3.2程序?qū)崿F(xiàn)3.2.1創(chuàng)立線程當(dāng)顧客點(diǎn)擊掃描之后,執(zhí)行如下程序代碼,創(chuàng)立線程并創(chuàng)立線程ThreadStart委托對(duì)象,同步將顯示框初始化:privatevoidbtnScan_Click(objectsender,System.EventArgse) { //創(chuàng)立線程,并創(chuàng)立線程ThreadStart委托對(duì)象 Threadprocess=newThread(newThreadStart(PortScan)); process.Start(); //顯示框初始化 lbResult.Items.Clear(); lbResult.Items.Add("端口掃描器1.0."); lbResult.Items.Add(""); }3.2.2TCP掃描辦法此段代碼實(shí)現(xiàn)了對(duì)指定端口掃描功能,本次安城定義了一種暫時(shí)變量port_now,當(dāng)該線程被調(diào)用后,創(chuàng)立TcpClient對(duì)象,嘗試對(duì)指定端口進(jìn)行TCP連接,并將成果顯示在顯示框:privatevoidScan() {intport_now=port;done[port_now]=true;Addr=txtAddr.Text; //創(chuàng)立¨TcpClient對(duì)象 TcpClientobjTCP=null; try { //用TcpClient對(duì)象掃描端口,連接成功表達(dá)端口開(kāi)放//連接不成功表達(dá)端口未開(kāi)放或防火墻過(guò)濾 objTCP=newTcpClient(Addr,scan_port[port_now]); lbResult.Items.Add("端口"+scan_port[port_now].ToString()+"開(kāi)放"); } catch {lbResult.Items.Add("端口"+scan_port[port_now].ToString()+"未開(kāi)放"); }}3.2.3端口掃描主函數(shù)此段代碼通過(guò)調(diào)用Scan()辦法,實(shí)現(xiàn)了對(duì)指定端口組個(gè)掃描功能。當(dāng)執(zhí)行時(shí),一方面對(duì)當(dāng)前掃描端口進(jìn)行過(guò)濾原則匹配,若掃描端口排序超過(guò)定義數(shù)組最大值,則顯示掃描結(jié)束;反之,調(diào)用Scan()線程對(duì)該端口進(jìn)行掃描。此段代碼中還定義了當(dāng)未完畢掃描,強(qiáng)行退出時(shí),直接終結(jié)執(zhí)行程序:privatevoidPortScan(){lbResult.Items.Add("開(kāi)始掃描...(也許需要您等待幾分鐘)");lbResult.Items.Add("");Addr=txtAddr.Text;for(inti=0;i<16;i++){port=i;//使用該端口掃描線程scanThread=newThread(newThreadStart(Scan));scanThread.Start();//使線程睡眠System.Threading.Thread.Sleep(100);}//未完畢時(shí)狀況while(!OK){OK=true;for(inti=0;i<16;i++){if(!done[i]){OK=false;break;}}System.Threading.Thread.Sleep(1000);}lbResult.Items.Add("掃描結(jié)束!");}3.3測(cè)試成果程序開(kāi)始執(zhí)行時(shí),主界面初始化,顧客可在左邊文本框中輸入想要掃描主機(jī)IP地址,點(diǎn)擊掃描,則掃描開(kāi)始。主界面如圖3.2所示。圖3.2系統(tǒng)主界面當(dāng)顧客輸入指定IP,本測(cè)試使用本地主機(jī)作為測(cè)試,輸入,點(diǎn)擊掃描,掃描成果以列表形式顯示在右邊文本框中。測(cè)試成果如圖3.3所示。圖3.3端口掃描測(cè)試截圖4結(jié)束語(yǔ)本次課程設(shè)計(jì)課題是設(shè)計(jì)實(shí)現(xiàn)一種簡(jiǎn)樸端口掃描工具,本次課程設(shè)計(jì)程序在VS軟件中使用C#編寫(xiě),該工具可掃描局域網(wǎng)某計(jì)算機(jī)慣用端口與否烤房,并以本地主機(jī)作為測(cè)試。通過(guò)這兩個(gè)星期課程設(shè)計(jì),通過(guò)圖書(shū)館和網(wǎng)上查找資料,順利完畢了設(shè)計(jì)和開(kāi)發(fā),端口掃描系統(tǒng)開(kāi)發(fā)完畢。系統(tǒng)基本符合規(guī)定,但是鑒于此系統(tǒng)是基于TCP三次握手過(guò)程實(shí)現(xiàn)端口掃描,該系統(tǒng)掃描時(shí)耗費(fèi)時(shí)間偏長(zhǎng)。在整個(gè)設(shè)計(jì)過(guò)程中,浮現(xiàn)過(guò)諸多問(wèn)題,得到了教師和同窗協(xié)助,在不斷學(xué)習(xí)過(guò)程中我體會(huì)到這次課程設(shè)計(jì)是一種不斷學(xué)習(xí)過(guò)程,從設(shè)計(jì)初模糊結(jié)識(shí)到最后可以順利完畢,我體會(huì)到在實(shí)踐中學(xué)習(xí)重要性。設(shè)計(jì)過(guò)程中,由于要實(shí)現(xiàn)某些功能,網(wǎng)上資源解決了我問(wèn)題。多借鑒網(wǎng)絡(luò)資源也是一種較好學(xué)習(xí)辦法總之,通過(guò)這次課程設(shè)計(jì),我

溫馨提示

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

評(píng)論

0/150

提交評(píng)論