簡(jiǎn)單端口掃描器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
簡(jiǎn)單端口掃描器的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
簡(jiǎn)單端口掃描器的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
簡(jiǎn)單端口掃描器的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
簡(jiǎn)單端口掃描器的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、簡(jiǎn)單端口掃描器的設(shè)計(jì)與實(shí)現(xiàn)目錄設(shè)計(jì)原理總體設(shè)計(jì)3任務(wù)與目標(biāo)12詳細(xì)設(shè)計(jì)45系統(tǒng)測(cè)試與改進(jìn)任務(wù)與目標(biāo)一、任務(wù)目標(biāo)(1)、掌握端口掃描技術(shù)的基本原理。(2)、設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡(jiǎn)單的端口掃描器。(3)、進(jìn)一步熟悉C語言或其他程序設(shè)計(jì)語言。二、設(shè)計(jì)原理 掃描器通過選用遠(yuǎn)程TCP/IP不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過這種方法可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息,例如遠(yuǎn)程系統(tǒng)是否支持匿名登錄、是否存在可寫的FTP目錄、是否開發(fā)TELNET服務(wù)和HTTPD服務(wù)等。二、設(shè)計(jì)原理2.1、TCP connect掃描 這是最基本的TCP掃描方式,其原理是直接使用系統(tǒng)提供的連接函數(shù)完成完整的三次握手。

2、連接函數(shù)在幾乎具有支持網(wǎng)絡(luò)編程的編程語言里都能找到,在Windows Socket2中是connect函數(shù),在CSocket類中是該類的Connect方法。 優(yōu)缺點(diǎn):這項(xiàng)掃描技術(shù)的優(yōu)點(diǎn)是:不需要關(guān)注三次握手的細(xì)節(jié),并且該函數(shù)對(duì)于使用用戶的權(quán)限沒有太多的限制。它的缺點(diǎn)是安全性差,很容易被對(duì)方發(fā)覺,或者被對(duì)方的防火墻過濾掉。目標(biāo)主機(jī)的日志文件也會(huì)記錄下這一連串的連接和連接出錯(cuò)的服務(wù)消息,并被反向查出來。二、設(shè)計(jì)原理1、TCP connect端口掃描服務(wù)端與客戶端建立連接成功的過程: Client端發(fā)送SYN; Server端返回SYN/ACK,表明端口開放; Client端返回ACK,表明連接已建

3、立; Client端主動(dòng)斷開連接。2、TCP connect端口掃描服務(wù)端與客戶端未建立連接成功(目標(biāo)端口關(guān)閉)過程: Client端發(fā)送SYN; Server端返回RST/ACK,表明端口未開放。二、設(shè)計(jì)原理2.2、TCP SYN掃描 TCP SYN掃描又稱“半開掃描”?;仡橳CP連接的三次握手,申請(qǐng)方首先發(fā)送的是一個(gè)SYN數(shù)據(jù)包,服務(wù)方在接到這個(gè)SYN數(shù)據(jù)包后,如果該端口處于偵聽狀態(tài),則會(huì)回復(fù)一個(gè)SYN|ACK的數(shù)據(jù)包。如果該端口沒有處于偵聽狀態(tài),則會(huì)回復(fù)一個(gè)RST的數(shù)據(jù)包。而此時(shí)如果對(duì)方處于偵聽狀態(tài),申請(qǐng)方還需要再向?qū)Ψ交貜?fù)一個(gè)ACK數(shù)據(jù)包以示建立連接。此時(shí)對(duì)方就認(rèn)為連接建立,并記入日志

4、。這種掃描技術(shù)的優(yōu)點(diǎn)在于一般不會(huì)在目標(biāo)計(jì)算機(jī)上留下記錄,有時(shí)即使在用netstat命令也顯示不出來;但這種方法的一個(gè)缺點(diǎn)是必須要有管理員權(quán)限才能建立自己的SYN數(shù)據(jù)包。二、設(shè)計(jì)原理端口開放:1、Client發(fā)送SYN ; 2、Server端發(fā)送SYN/ACK 3、Client發(fā)送RST斷開(只需要前兩步就可以判斷端口開放);端口關(guān)閉:1、Client發(fā)送SYN; 2、Server端回復(fù)RST(表示端口關(guān)閉);二、設(shè)計(jì)原理2.3、TCP FIN掃描TCP FIN掃描也和TCP SYN掃描原理差不多,當(dāng)申請(qǐng)方主機(jī)向目標(biāo)主機(jī)一個(gè)端口發(fā)送的TCP標(biāo)志位FIN置位的數(shù)據(jù)包,如果目標(biāo)主機(jī)該端口是“關(guān)”狀態(tài)

5、,則返回一個(gè)TCP RST數(shù)據(jù)包;否則不回復(fù)。根據(jù)這一原理可以判斷對(duì)方端口是處于“開”還是“關(guān)”狀態(tài)。這種方法的缺點(diǎn)是,該原理不是協(xié)議規(guī)定,因而與具體的協(xié)議系統(tǒng)實(shí)現(xiàn)有一定的關(guān)系,因?yàn)橛行┫到y(tǒng)在實(shí)現(xiàn)的時(shí)候,不管端口是處于“開”還是“關(guān)”狀態(tài),都會(huì)回復(fù)RST數(shù)據(jù)包,從而導(dǎo)致此方法失效。不過,二、設(shè)計(jì)原理2.4TCP反向Ident掃描 Ident(Identification Protocol,標(biāo)識(shí)協(xié)議)提供了一種方法,可以對(duì)建立TCP連接的用戶身份進(jìn)行標(biāo)識(shí),該協(xié)議使用113端口,一旦建立連接,該服務(wù)就會(huì)讀取指定TCP連接的查詢數(shù)據(jù),將擁有指定TCP連接的用戶信息反饋給對(duì)方。Ident 協(xié)議(RFC

6、1413)允許通過TCP連接查詢對(duì)方的任何進(jìn)程的用戶名,即使這個(gè)連接不是由該進(jìn)程開始的。根據(jù)這一原理,掃描程序可以通過TCP連接到對(duì)方的WWW端口(默認(rèn)的80),然后通過Ident協(xié)議判斷對(duì)方是否正以管理員權(quán)限運(yùn)行。這種方法的缺點(diǎn)是只能在和目標(biāo)端口建立了一個(gè)完整的TCP連接后才能看到。2.4、ip分段掃描它并不是直接發(fā)送TCP探測(cè)數(shù)據(jù)包,是將數(shù)據(jù)包分成兩個(gè)較小的IP段。這樣就將一個(gè)TCP頭分成好幾個(gè)數(shù)據(jù)包,從而過濾器就很難探測(cè)到。三、總體設(shè)計(jì)3.1 系統(tǒng)主要目標(biāo)本程序主要實(shí)現(xiàn)了:簡(jiǎn)易的TCP connect()掃描,支持多線程;UDP掃描功能;能對(duì)單個(gè)指定的主機(jī)進(jìn)行掃描或掃描指定網(wǎng)段內(nèi)的主機(jī);

7、能掃描特定的部分端口號(hào)或?qū)χ付ǖ亩丝诙蝺?nèi)的端口進(jìn)行逐個(gè)掃描;3.2 開發(fā)環(huán)境及工具測(cè)試平臺(tái):win7使用軟件:eclipse開發(fā)語言:java語言三、總體設(shè)計(jì)3.3 功能模塊與系統(tǒng)結(jié)構(gòu)(1)、單個(gè)指定的主機(jī)進(jìn)行掃描或掃描指定網(wǎng)段內(nèi)的主機(jī);(2)、掃描特定的部分端口號(hào)或?qū)χ付ǖ亩丝诙蝺?nèi)的端口進(jìn)行逐個(gè)掃描;(3)、對(duì)指定ip段進(jìn)行掃描;三、總體設(shè)計(jì)指定端口段的掃描指定ip段的掃描四、詳細(xì)設(shè)計(jì)4.1、 獲取待掃描的端口 通過eclipse的run configurate 設(shè)置要掃描端口段,將端口段由String類型轉(zhuǎn)化為int類型數(shù)據(jù),判斷端口號(hào)是否合法。端口號(hào)只能是165535范圍內(nèi)的值而且第一個(gè)

8、輸入的端口小于第二個(gè)輸入的端口號(hào)。4.2、獲取待掃描的IP地址通過eclipse的run configurate 設(shè)置ip地址,然后讀取第一個(gè)參數(shù),然后判斷IP地址是否合法。通過InetAddress.getByName(ip)方法判斷IP地址是否是合法的IP地址。四、詳細(xì)設(shè)計(jì)4.3、指定端口段的掃描4.3.1 基本原理調(diào)用connect()函數(shù),根據(jù)返回值來判斷端口是否打開的,isConnected()函數(shù)返回1說明建立連接成功,說明該端口是打開的,否則說明是端口是關(guān)閉的,同時(shí)會(huì)對(duì)常用的網(wǎng)絡(luò)服務(wù)端口給出提示。Socket s=new Socket(address,nport); /建立連接

9、if(s.isConnected()result.add(端口號(hào):+nport+typeport+ open); s.close();/將打開的端口添加到ArrayList result里面 catch(IOException e)System.out.println(e.toString();result.add(端口號(hào):+nport+typeport+ close); 四、詳細(xì)設(shè)計(jì)4.3.2掃描結(jié)果的顯示使用ArrayList存儲(chǔ)掃描端口后的狀態(tài),然后用ArrayList的ListIterator一條一條端口狀態(tài)讀出來,顯示到屏幕上。ListIterator li = result.lis

10、tIterator(); /獲得ArrayList的ListIterator while(li.hasNext() /如果li里面有元素 System.out.println(li.next().toString(); /打印出指向的元素,同時(shí)將指向下一個(gè)元素 四、詳細(xì)設(shè)計(jì)4.4、指定ip段的掃描操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用,用來與每一個(gè)感興趣的指定計(jì)算機(jī)的IP段進(jìn)行連接。如果指定IP段的計(jì)算機(jī)存在,那么connect()就能成功。否則,這個(gè)IP是不能用的,即IP不存在。4.4.1 基本原理首先得到指定IP段的開始值和結(jié)束值,然后判斷IP地址是否合法,然后使用socket()函數(shù)創(chuàng)建套接字,如果拋出異常且異常是.ConnectException: Connection timed out: connec

溫馨提示

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

評(píng)論

0/150

提交評(píng)論