




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
網(wǎng)絡(luò)端口掃描工具設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名: 指引教師:摘要本課程設(shè)計(jì)是在Windows系統(tǒng)中,通過軟件visualstudio使用C#語言完畢一種端口掃描程序。此程序重要運(yùn)用TCP連接三次握手特性,完畢對指定主機(jī)端口掃描。掃描能對指定IP主機(jī)慣用端口進(jìn)行掃描。掃描成果以列表形式直觀地呈現(xiàn)出來。通過對掃描成果分析懂得了,有哪些慣用端口是開放。核心詞C#;端口掃描;TCP三次握手;網(wǎng)絡(luò)安全1引言1.1本文重要內(nèi)容本文第二節(jié)重要闡明本設(shè)計(jì)背景及目;第三節(jié)簡介了TCP端口掃描基本原理;第四節(jié)詳細(xì)描述了網(wǎng)絡(luò)端口掃描工具設(shè)計(jì)環(huán)節(jié)、某些源代碼以;第五節(jié)為有關(guān)測試成果;第六節(jié)為結(jié)束語以及末尾有關(guān)參照文獻(xiàn)。1.2設(shè)計(jì)平臺及設(shè)計(jì)語言本系統(tǒng)是在win7操作系統(tǒng)上,通過visualstudio軟件使用C#語言設(shè)計(jì)編寫完畢。1.3設(shè)計(jì)背景及目網(wǎng)絡(luò)中每臺計(jì)算機(jī)猶如一座城堡,這些城堡中,有些是對外完全開放,有些卻是大門緊閉。在網(wǎng)絡(luò)中,把這些城堡“城門”稱之為計(jì)算機(jī)“端口”。端口掃描是入侵者搜索信息幾種慣用辦法之一,也正是這一種辦法最容易暴露入侵者身份和意圖。普通說來,掃描端口有如下目:
判斷目的主機(jī)上開放了哪些服務(wù)
判斷目的主機(jī)操作系統(tǒng)
如果入侵者掌握了目的主機(jī)開放了哪些服務(wù),運(yùn)營何種操作系統(tǒng),她們就能使用相應(yīng)手段實(shí)現(xiàn)入侵。而如果管理員先掌握了這些端口服務(wù)安全漏洞,就能采用有效安全辦法,防范相應(yīng)入侵。
2設(shè)計(jì)原理2.1端口基本概念端口是由計(jì)算機(jī)通信合同TCP/IP合同定義。其中規(guī)定,用IP地址和端口作為套接字,它代表TCP連接一種連接端,普通稱為Socket。詳細(xì)來說,就是用IP端口來定位一臺主機(jī)中進(jìn)程。如果要和遠(yuǎn)程主機(jī)A程序通信,那么只要把數(shù)據(jù)發(fā)向A端口就可以實(shí)現(xiàn)通信了。端口與進(jìn)程是一一相應(yīng),如果某個進(jìn)程正在等待連接,稱之為該進(jìn)程正在監(jiān)聽,那么就會浮現(xiàn)與它相相應(yīng)端口。由此可見,通過掃描端口,便可以判斷出目的計(jì)算機(jī)有哪些通信進(jìn)程正在等待連接。端口是一種16bit地址,用端標(biāo)語進(jìn)行標(biāo)記不同作用端口。端口普通分為兩類。熟知端標(biāo)語:范疇從0到1023,這些端標(biāo)語普通固定分派給某些服務(wù)。例如21端口分派給FTP服務(wù),25端口分派給SMTP服務(wù),80端口分派給HTTP服務(wù),135端口分派給RPC服務(wù)等等動態(tài)端標(biāo)語:動態(tài)端口范疇從1024到65535,只要運(yùn)營程序向系統(tǒng)提出訪問網(wǎng)絡(luò)申請,那么系統(tǒng)就可以從這些端標(biāo)語中分派一種供該程序使用。在關(guān)閉程序進(jìn)程后,就會釋放所占用端標(biāo)語。2.2端口掃描技術(shù)2.2.1TCPconnect()
掃描這是最基本TCP掃描。操作系統(tǒng)提供connect()系統(tǒng)調(diào)用,用來與每一種感興趣目的計(jì)算機(jī)端口進(jìn)行連接。如果端口處在偵聽狀態(tài),那么connect()就能成功。否則,這個端口是不能用,即沒有提供服務(wù)。這個技術(shù)一種最大長處是,你不需要任何權(quán)限,系統(tǒng)中任何顧客均有權(quán)利使用這個調(diào)用。另一種好處就是速度,如果對每個目的端口以線性方式,使用單獨(dú)connect()調(diào)用,那么將會耗費(fèi)相稱長時間,你可以通過同步打開各種套接字,從而加速掃描。使用非阻塞I/O容許你設(shè)立一種低時間用盡周期,同步觀測各種套接字。但這種辦法缺陷是很容易被發(fā)現(xiàn),并且被過濾掉。目的計(jì)算機(jī)logs文獻(xiàn)會顯示一連串連接和連接是出錯服務(wù)消息,并且能不久使它關(guān)閉。2.2.2TCPSYN掃描這種技術(shù)普通以為是“半開放”掃描,這是由于掃描程序不必要打開一種完全TCP連接。掃描程序發(fā)送是一種SYN數(shù)據(jù)包,好象準(zhǔn)備打開一種實(shí)際連接并等待反映同樣(參照TCP三次握手建立一種TCP連接過程)。一種SYN|ACK返回信息表達(dá)端口處在偵聽狀態(tài)。一種RST返回,表達(dá)端口沒有處在偵聽?wèi)B(tài)。如果收到一種SYN|ACK,則掃描程序必要再發(fā)送一種RST信號,來關(guān)閉這個連接過程。這種掃描技術(shù)長處在于普通不會在目的計(jì)算機(jī)上留下記錄。但這種辦法一種缺陷是,必要要有root權(quán)限才干建立自己SYN數(shù)據(jù)包。2.2.3TCPFIN
掃描有時候有也許SYN掃描都不夠秘密。某些防火墻和包過濾器會對某些指定端口進(jìn)行監(jiān)視,有程序能檢測到這些掃描。相反,F(xiàn)IN數(shù)據(jù)包也許會沒有任何麻煩通過。這種掃描辦法思想是關(guān)閉端口會用恰當(dāng)RST來回答FIN數(shù)據(jù)包。另一方面,打開端口會忽視對FIN數(shù)據(jù)包回答。這種辦法和系統(tǒng)實(shí)既有一定關(guān)系。有系統(tǒng)不論端口與否打開,都回答RST,這樣,這種掃描辦法就不合用了。并且這種辦法在區(qū)別Unix和NT時,是十分有用。2.2.4IP段掃描這種不能算是新辦法,只是其他技術(shù)變化。它并不是直接發(fā)送TCP探測數(shù)據(jù)包,是將數(shù)據(jù)包提成兩個較小IP段。這樣就將一種TCP頭提成好幾種數(shù)據(jù)包,從而過濾器就很難探測到。但必要小心。某些程序在解決這些小數(shù)據(jù)包時會有些麻煩。2.2.5TCP
反向
ident掃描ident合同容許(rfc1413)看到通過TCP連接任何進(jìn)程擁有者顧客名,雖然這個連接不是由這個進(jìn)程開始。因而你能,舉個例子,連接到http端口,然后用identd來發(fā)現(xiàn)服務(wù)器與否正在以root權(quán)限運(yùn)營。這種辦法只能在和目的端口建立了一種完整TCP連接后才干看到。2.3本系統(tǒng)設(shè)計(jì)原理本系統(tǒng)采用是TCPconnect()掃描技術(shù)眾所周知,端口存在兩種,UDP和TCP。UDP合同由于是非面向連接,對UDP端口探測也就不也許像TCP端口探測那樣依賴于連接建立過程,這也使得UDP端口掃描可靠性不高。而TCP由于其connectionoriented特性,為端口掃描提供了基本。眾所周知,TCP建立連接時有三次握手。先是client端往server某端口發(fā)送祈求連接SYN包,server該端口如果容許連接,會給client端發(fā)一種SYN+ACK回包,client端收到serverSYN+ACK包后再給server端發(fā)一種確認(rèn)包ACK(ack=k+1),TCP連接正式建立。基于連接建立過程,可以想到,如果要掃描某一種TCP端口,可以嘗試與該端口進(jìn)行TCP連接,如果該端口處在打開狀態(tài),通過TCP三次握手就能成功建立連接,也就是說,如果連接成功,就可以判斷目的掃描出于打開狀態(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連接建立過程3設(shè)計(jì)環(huán)節(jié)3.1程序設(shè)計(jì)程序設(shè)計(jì)總體思路:本系統(tǒng)規(guī)定掃描指定IP地址主機(jī)慣用端口,一方面在程序中要定義一種數(shù)組,用于指定慣用端口包括內(nèi)容;另一方面需要創(chuàng)立一種掃描辦法,當(dāng)顧客輸入指定IP后,循環(huán)調(diào)用該辦法對指定IP慣用端口進(jìn)行掃描,并將掃描成果以列表形式顯示。程序大概執(zhí)行過程:第一步,顧客輸入指定IP地址,點(diǎn)擊掃描后,創(chuàng)立線程,并創(chuàng)立ThreadStart委托對象;第二步,若當(dāng)前掃描端口數(shù)量未超過定義數(shù)組上限值,調(diào)用掃描線程Scan()對該端口嘗試連接;第三步,循環(huán)掃描數(shù)組里定義所有端口,記錄每個端口與否開放狀況;第四步,數(shù)組內(nèi)所有端口掃描完畢后,匹配過濾原則,顯示掃描結(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委托對象,同步將顯示框初始化:privatevoidbtnScan_Click(objectsender,System.EventArgse) { //創(chuàng)立線程,并創(chuàng)立線程ThreadStart委托對象 Threadprocess=newThread(newThreadStart(PortScan)); process.Start(); //顯示框初始化 lbResult.Items.Clear(); lbResult.Items.Add("端口掃描器1.0."); lbResult.Items.Add(""); }3.2.2TCP掃描辦法此段代碼實(shí)現(xiàn)了對指定端口掃描功能,本次安城定義了一種暫時變量port_now,當(dāng)該線程被調(diào)用后,創(chuàng)立TcpClient對象,嘗試對指定端口進(jìn)行TCP連接,并將成果顯示在顯示框:privatevoidScan() {intport_now=port;done[port_now]=true;Addr=txtAddr.Text; //創(chuàng)立¨TcpClient對象 TcpClientobjTCP=null; try { //用TcpClient對象掃描端口,連接成功表達(dá)端口開放//連接不成功表達(dá)端口未開放或防火墻過濾 objTCP=newTcpClient(Addr,scan_port[port_now]); lbResult.Items.Add("端口"+scan_port[port_now].ToString()+"開放"); } catch {lbResult.Items.Add("端口"+scan_port[port_now].ToString()+"未開放"); }}3.2.3端口掃描主函數(shù)此段代碼通過調(diào)用Scan()辦法,實(shí)現(xiàn)了對指定端口組個掃描功能。當(dāng)執(zhí)行時,一方面對當(dāng)前掃描端口進(jìn)行過濾原則匹配,若掃描端口排序超過定義數(shù)組最大值,則顯示掃描結(jié)束;反之,調(diào)用Scan()線程對該端口進(jìn)行掃描。此段代碼中還定義了當(dāng)未完畢掃描,強(qiáng)行退出時,直接終結(jié)執(zhí)行程序:privatevoidPortScan(){lbResult.Items.Add("開始掃描...(也許需要您等待幾分鐘)");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);}//未完畢時狀況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測試成果程序開始執(zhí)行時,主界面初始化,顧客可在左邊文本框中輸入想要掃描主機(jī)IP地址,點(diǎn)擊掃描,則掃描開始。主界面如圖3.2所示。圖3.2系統(tǒng)主界面當(dāng)顧客輸入指定IP,本測試使用本地主機(jī)作為測試,輸入,點(diǎn)擊掃描,掃描成果以列表形式顯示在右邊文本框中。測試成果如圖3.3所示。圖3.3端口掃描測試截圖4結(jié)束語本次課程設(shè)計(jì)課題是設(shè)計(jì)實(shí)現(xiàn)一種簡樸端口掃描工具,本次課程設(shè)計(jì)程序在VS軟件中使用C#編寫,該工具可掃描局域網(wǎng)某計(jì)算機(jī)慣用端口與否烤房,并以本地主機(jī)作為測試。通過這兩個星期課程設(shè)計(jì),通過圖書館和網(wǎng)上查找資料,順利完畢了設(shè)計(jì)和開發(fā),端口掃描系統(tǒng)開發(fā)完畢。系統(tǒng)基本符合規(guī)定,但是鑒于此系統(tǒng)是基于TCP三次握手過程實(shí)現(xiàn)端口掃描,該系統(tǒng)掃描時耗費(fèi)時間偏長。在整個設(shè)計(jì)過程中,浮現(xiàn)過諸多問題,得到了教師和同窗協(xié)助,在不斷學(xué)習(xí)過程中我體會到這次課程設(shè)計(jì)是一種不斷學(xué)習(xí)過程,從設(shè)計(jì)初模糊結(jié)識到最后可以順利完畢,我體會到在實(shí)踐中學(xué)習(xí)重要性。設(shè)計(jì)過程中,由于要實(shí)現(xiàn)某些功能,網(wǎng)上資源解決了我問題。多借鑒網(wǎng)絡(luò)資源也是一種較好學(xué)習(xí)辦法總之,通過這次課程設(shè)計(jì),我
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家庭教育指導(dǎo)服務(wù)行業(yè)市場需求增長趨勢與供給創(chuàng)新路徑研究報(bào)告
- 即時配送2025市場分析報(bào)告:路徑優(yōu)化與成本控制策略實(shí)施
- 化工園區(qū)建設(shè)項(xiàng)目環(huán)??尚行耘c綠色發(fā)展分析
- 瓶裝水市場營銷策略與促銷手段研究考核試卷
- 礦物光電材料研制考核試卷
- 珠寶首飾品牌聲譽(yù)管理考核試卷
- 輪胎企業(yè)綠色工廠設(shè)計(jì)與建設(shè)考核試卷
- 水產(chǎn)加工企業(yè)生產(chǎn)安全與事故預(yù)防考核試卷
- 耐火土石選礦工藝與設(shè)備考核試卷
- 焙烤食品的品牌價(jià)值與品牌管理考核試卷
- 2025年浙江省杭州市上城區(qū)中考數(shù)學(xué)一模試卷
- 2025年電子工程師工作能力考試試題及答案
- 營業(yè)執(zhí)照共用協(xié)議書范本
- 2025年北京朝陽區(qū)高三二模高考英語試卷試題(含答案詳解)
- 2024年陜西省略陽縣事業(yè)單位公開招聘醫(yī)療衛(wèi)生崗筆試題帶答案
- 2025屆江蘇省南通市高三數(shù)學(xué)下學(xué)期第二次模擬考試
- 學(xué)前兒童衛(wèi)生與保健-期末大作業(yè):案例分析-國開-參考資料
- 轉(zhuǎn)爐煉鋼裝入制度課件
- 初二物理測量小燈泡電功率實(shí)驗(yàn)報(bào)告
- 毽球盤踢教學(xué)設(shè)計(jì)
- 珠心算乘法練習(xí)題5套含答案一
評論
0/150
提交評論