計(jì)算機(jī)網(wǎng)絡(luò)課設(shè)論文-簡單的端口掃描器_第1頁
計(jì)算機(jī)網(wǎng)絡(luò)課設(shè)論文-簡單的端口掃描器_第2頁
計(jì)算機(jī)網(wǎng)絡(luò)課設(shè)論文-簡單的端口掃描器_第3頁
計(jì)算機(jī)網(wǎng)絡(luò)課設(shè)論文-簡單的端口掃描器_第4頁
計(jì)算機(jī)網(wǎng)絡(luò)課設(shè)論文-簡單的端口掃描器_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《計(jì)算機(jī)網(wǎng)絡(luò)》課程設(shè)計(jì)說明書題目:簡單的端口掃描器學(xué)院:計(jì)算機(jī)與信息安全學(xué)院專業(yè):信息管理與信息系統(tǒng)學(xué)生姓名:廖偉興學(xué)號(hào):1200340124指導(dǎo)教師:楊兵題目類型:理論研究實(shí)驗(yàn)研究工程設(shè)計(jì)工程技術(shù)研究軟件開發(fā)2015年03月26日

摘要計(jì)算機(jī)信息網(wǎng)絡(luò)的發(fā)展加速了信息化時(shí)代的進(jìn)程,但是隨著社會(huì)網(wǎng)絡(luò)化程度的增加,對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的依賴也越來越大,網(wǎng)絡(luò)安全問題也日益明顯。端口掃描技術(shù)是發(fā)現(xiàn)安全問題的重要手段之一。本程序是在Windows系統(tǒng)中使用JAVA語言完成的一個(gè)端口掃描程序。此程序主要完成了TCPconnect()掃描功能。TCP掃描支持多線程,能對(duì)單個(gè)指定的主機(jī)進(jìn)行掃描或?qū)χ付ňW(wǎng)段內(nèi)的主機(jī)進(jìn)行逐個(gè)掃描。能掃描特定的部分端口號(hào)或?qū)χ付ǖ亩丝诙蝺?nèi)的端口進(jìn)行逐個(gè)掃描。此端口掃描程序能快速地進(jìn)行TCP掃描,準(zhǔn)確地檢測出對(duì)TCP協(xié)議開放的端口。關(guān)鍵詞:端口掃描TCP掃描TCP多線程掃描

目錄摘要 頁前言網(wǎng)絡(luò)中的每一臺(tái)計(jì)算機(jī)如同一座城堡,在這些城堡中,有的對(duì)外完全開放,有的卻是緊鎖城門。入侵者們是如何找到,并打開它們的城門的呢?這些城門究竟通向城堡的何處呢?在網(wǎng)絡(luò)技術(shù)中,把這些城堡的“城門”稱之為計(jì)算機(jī)的“端口”。端口掃描是入侵者搜集信息的幾種常用手法之一,也正是這一過程最容易使入侵者暴露自己的身份和意圖。一般來說,掃描端口有如下目的:判斷目標(biāo)主機(jī)上開放了哪些服務(wù);判斷目標(biāo)主機(jī)的操作系統(tǒng);如果入侵者掌握了目標(biāo)主機(jī)開放了哪些服務(wù),運(yùn)行何種操作系統(tǒng),他們就能夠使用相應(yīng)的手段實(shí)現(xiàn)入侵,本課程設(shè)計(jì)將會(huì)通過用JAVA語言實(shí)現(xiàn)一個(gè)小的端口掃描軟件,詳細(xì)描述端口掃描的原理,分析端口掃描所涉及的問題,以便更加清楚地了解入侵者如何掃描目標(biāo)主機(jī)的端口,同時(shí)掌握如何確保本機(jī)的安全性,為將來設(shè)計(jì)更為安全的系統(tǒng)打下牢固基礎(chǔ)。需求分析課題背景在21世紀(jì)的今天,計(jì)算機(jī)發(fā)展日新月異,伴隨著網(wǎng)絡(luò)技術(shù)的飛速更新,網(wǎng)絡(luò)規(guī)模迅速增長和計(jì)算機(jī)系統(tǒng)的日益復(fù)雜,導(dǎo)致新的系統(tǒng)漏洞層出不窮,一些別有用心的人或者木馬程序要想順利的滲透一臺(tái)聯(lián)網(wǎng)的計(jì)算機(jī),無論使用何種技術(shù),首先必然要尋找計(jì)算機(jī)的漏洞來為自己的入侵打開大門。端口掃描器是一把雙刃劍,端口掃描器的產(chǎn)生可以使網(wǎng)絡(luò)中的計(jì)算機(jī)及時(shí)的發(fā)現(xiàn)主機(jī)的開放與未開放的端口狀態(tài)。計(jì)算機(jī)的端口掃描技術(shù)是一種基于主動(dòng)防御型的策略的重要技術(shù)手段。本課題通過對(duì)計(jì)算機(jī)端口掃描器的研究來提高對(duì)網(wǎng)絡(luò)中計(jì)算機(jī)的安全的認(rèn)識(shí)。本端口掃描器采用Java語言和JavaSocket編程原理開發(fā)。掃描主機(jī)通過TCP/IP協(xié)議的三次握手與目標(biāo)主機(jī)的指定端口建立一次完整的連接,如果目標(biāo)主機(jī)的此端口在規(guī)定時(shí)間內(nèi)有回復(fù),則說明該端口是開放的。利用多線程技術(shù)實(shí)現(xiàn)了對(duì)一目標(biāo)IP進(jìn)行設(shè)定數(shù)目的端口掃描。這種掃描器可以在輸入IP的情況下,對(duì)指定的端口范圍進(jìn)行掃描。本課題研究意義現(xiàn)代社會(huì)是信息化網(wǎng)絡(luò)化的社會(huì),信息是社會(huì)發(fā)展的重要資源。信息安全的保障能力是一個(gè)國家的綜合國力經(jīng)濟(jì)競爭實(shí)力和生存能力的重要組成部分,是世界各國在奮力攀登的制高點(diǎn)。網(wǎng)絡(luò)安全是指網(wǎng)絡(luò)系統(tǒng)的硬件軟件及其系統(tǒng)中的數(shù)據(jù)受到保護(hù),不會(huì)因?yàn)榕既坏幕蛘邜阂獾脑蚨獾狡茐摹⒏?、泄漏,系統(tǒng)連續(xù)可靠的正常的運(yùn)行。網(wǎng)絡(luò)安全包括技術(shù)領(lǐng)域和非技術(shù)領(lǐng)域兩大部分:非技術(shù)領(lǐng)域包括一些制度政策管理安全意識(shí)是填權(quán)等方面的內(nèi)容;技術(shù)領(lǐng)域包括:隱患掃描、防火墻、入侵檢測、訪問控制、虛擬專用網(wǎng)、CA認(rèn)證、操作系統(tǒng)等方面的內(nèi)容。這些技術(shù)的目標(biāo)是保證信息的可控性、可用性、保密性、完整性和不可抵賴性。安全掃描技術(shù)的產(chǎn)生及其發(fā)展趨勢隨著Internet的不斷發(fā)展,信息安全技術(shù)已經(jīng)成為促進(jìn)經(jīng)濟(jì)發(fā)展、社會(huì)進(jìn)步的巨大推動(dòng)了。端口掃描技術(shù)是網(wǎng)絡(luò)安全掃描技術(shù)的一個(gè)重要的網(wǎng)絡(luò)安全技術(shù),與防火墻、入侵檢測系統(tǒng)相互配合,能夠有效地提高網(wǎng)絡(luò)安全性。安全掃描是安全技術(shù)領(lǐng)域中的重要的一類。通過掃描能自動(dòng)檢測遠(yuǎn)程或者本地的主機(jī)系統(tǒng)的信息,包括主機(jī)的基本信息(如計(jì)算機(jī)名、域名、組名、操作系統(tǒng)類型號(hào)等)、服務(wù)信息、用戶信息以及漏洞信息,它的重要性在于能夠?qū)W(wǎng)絡(luò)進(jìn)行安全評(píng)估,及時(shí)發(fā)現(xiàn)安全隱患,防患于未然。任何技術(shù)的誕生都有深刻的思想基礎(chǔ),人們?cè)趯?duì)“安全”認(rèn)識(shí)逐步深化的過程中,不斷地提出新的安全理論并付諸實(shí)踐。在這個(gè)認(rèn)識(shí)的過程中有兩次重大的飛躍:第一次飛躍式早在二十世紀(jì)八十年代,人們認(rèn)為信息安全就是信息的保密性,相應(yīng)的采取保障措施就是利用加密機(jī)制和基于計(jì)算機(jī)規(guī)則的訪問控制。這個(gè)時(shí)期防火墻和入侵檢測系統(tǒng)(IDS)進(jìn)一步發(fā)展起來,并在保護(hù)內(nèi)部網(wǎng)絡(luò)中起到了積極作用。DanFame和WeitseVenema提出了劃時(shí)代的隱患掃描思想,既然黑客可以查找系統(tǒng)的漏洞,并且針對(duì)這些漏洞對(duì)系統(tǒng)進(jìn)行攻擊,那么隱患掃描程序就可以采取與黑客相同的方法找到系統(tǒng)漏洞,并且將他們加以修復(fù),起到主動(dòng)防御的作用。第二次飛躍就是在被動(dòng)防護(hù)的基礎(chǔ)上,提出了主動(dòng)防御的思想。這就促進(jìn)了安全掃描的技術(shù)的誕生。安全掃描的主動(dòng)防御思想滲透到了許多其他的安全領(lǐng)域。安全掃描軟件從最初的專門為UNIX系統(tǒng)編寫的一些只具有簡單的功能的小程序,發(fā)展到現(xiàn)在,已經(jīng)成為可以用在多個(gè)系統(tǒng)的具有復(fù)雜的功能的商業(yè)程序。今后的發(fā)展趨勢,我認(rèn)為有以下幾點(diǎn):使用插件或者叫做功能模塊技術(shù)。每個(gè)插件都封裝一個(gè)或多個(gè)漏洞測試手段,主掃描程序通過代用插件的方法來執(zhí)行掃描。僅僅是添加新的插件就可以使軟件增加新功能,掃描更多漏洞。在插件編寫的規(guī)范公布的情況下,用戶或者第三方公司甚至可以編寫自己的插件來擴(kuò)充軟件的功能。同時(shí)這種技術(shù)使軟件的升級(jí)維護(hù)都變得相對(duì)輕松,并且具有非常強(qiáng)的擴(kuò)展性。由安全掃描程序到安全評(píng)估專家系統(tǒng)。最早的安全掃描程序只是簡單的把各個(gè)掃描測試項(xiàng)目執(zhí)行結(jié)果羅列出來,直接提供給測試者而不對(duì)信息進(jìn)行任何分析處理。而當(dāng)前較為成熟的掃描系統(tǒng)都能夠?qū)蝹€(gè)主機(jī)的掃描結(jié)果進(jìn)行整理,形成報(bào)表能夠并對(duì)具體漏洞提出一些解決方法,但對(duì)網(wǎng)絡(luò)的狀況缺乏一個(gè)整體的評(píng)估,對(duì)網(wǎng)絡(luò)安全沒有系統(tǒng)的解決方案。未來的安全掃描系統(tǒng),應(yīng)該不但能夠掃描安全漏洞,還能夠智能化的協(xié)助網(wǎng)絡(luò)信息管理人員評(píng)估本網(wǎng)絡(luò)的安全狀況,給出安全建議,成為安全評(píng)估專家的系統(tǒng)。端口掃描的相關(guān)知識(shí)網(wǎng)絡(luò)端口掃描原理每個(gè)端口就是一個(gè)潛在的通信信道,也就是一個(gè)入侵通道。對(duì)目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描,能得到許多有用的信息。進(jìn)行掃描的方法很多,可以使手工進(jìn)行掃描,也可以是端口掃描軟件進(jìn)行。在手工進(jìn)行掃描時(shí),需要熟悉各種命令。命令執(zhí)行后的輸出進(jìn)行分析。用掃描軟件進(jìn)行掃描時(shí),許多掃描軟件都有分析數(shù)據(jù)功能。通過端口掃描,可以得到許多有用的信息,從而發(fā)現(xiàn)系統(tǒng)的安全漏洞。掃描器是一種自動(dòng)檢測遠(yuǎn)程或本地主機(jī)安全性軟弱點(diǎn)的程序,通過使用掃描器你可以留痕跡的發(fā)現(xiàn)遠(yuǎn)程服務(wù)器的各種TCP端口的分配及提供的服務(wù)和他們的軟件版本,這就能讓我們間接的或直觀的了解到遠(yuǎn)程主機(jī)所存在的安全問題。掃描器通過選用遠(yuǎn)程TCP/IP不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過這種方法,可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息(比如:是否能用匿名登陸、是否有可寫的FTP目錄、是否能用TELNET,HTTPD是用ROOT還是nobady在跑?。呙璨⒉皇且粋€(gè)直接的攻擊網(wǎng)絡(luò)漏洞的程序,它僅僅能幫助我們發(fā)現(xiàn)目標(biāo)機(jī)的某些內(nèi)在的弱點(diǎn)。一個(gè)好的掃描器能對(duì)它得到的數(shù)據(jù)進(jìn)行分析,幫助我們查找目標(biāo)主機(jī)的漏洞。但它不會(huì)提供進(jìn)入一個(gè)系統(tǒng)的詳細(xì)步驟。端口協(xié)議端口是一種抽象,其行為類似于TCP/IP連接的邏輯端點(diǎn)。在TCP協(xié)議中,僅僅用連接雙方的IP地址來標(biāo)識(shí)一條連接顯然是不夠的。在多任務(wù)操作系統(tǒng)中,系統(tǒng)允許多個(gè)進(jìn)程同時(shí)使用TCP協(xié)議進(jìn)行通信,因此必須能夠區(qū)分這些不同的進(jìn)程所對(duì)應(yīng)的不同連接。端口可以區(qū)分這些不同的通信進(jìn)程。每個(gè)端口由一個(gè)正整數(shù)識(shí)別,稱為端口號(hào)。信息傳送中每個(gè)信息都載有一個(gè)用來接收目的端口號(hào)和回復(fù)應(yīng)該發(fā)往的源端口號(hào)?!肮_端口”是由InternetAssignedNumbersAuthority(IANA)分配的,并且只能被系統(tǒng)(或root)進(jìn)程或者被授予權(quán)利的用戶執(zhí)行的程序使用。根據(jù)提供服務(wù)類型的不同,端口分為兩種,一種是TCP端口,一種是UDP端口。計(jì)算機(jī)之間相互通信的時(shí)候,分為兩種方式:一種是發(fā)送信息以后,可以確認(rèn)信息是否到達(dá),也就是有應(yīng)答的方式,這種方式大多采用TCP協(xié)議;一種是發(fā)送以后不去確認(rèn)信息是否到達(dá),這種方式大多采用UDP協(xié)議。對(duì)應(yīng)這兩種協(xié)議的服務(wù)提供的端口,也就分為TCP端口和UDP端口。當(dāng)可能時(shí),對(duì)應(yīng)的TCP和UDP服務(wù)被分配給相同的編號(hào)。公開端口:0--1023注冊(cè)端口:1024--49151動(dòng)態(tài)或私有端口:49152—65535相關(guān)協(xié)議TCP/IP協(xié)議棧是網(wǎng)絡(luò)掃描技術(shù)的基礎(chǔ),最基本的掃描方式TCPConnect()就是利用了TCP協(xié)議;而當(dāng)前流行的端口掃描技術(shù)如SYN掃描(半打開掃描)、FIN掃描和NULL掃描等等,都是利用了TCP的三次握手來完成的。TCP數(shù)據(jù)包結(jié)構(gòu)一個(gè)TCP數(shù)據(jù)包包括一個(gè)TCP頭,后面是選項(xiàng)和數(shù)據(jù)。它的格式如圖1。TCP/IP遵循的原則當(dāng)一個(gè)SYN或者FIN數(shù)據(jù)包到達(dá)一個(gè)關(guān)閉的端口,TCP丟棄數(shù)據(jù)包,同時(shí)發(fā)送一個(gè)RST數(shù)據(jù)包。當(dāng)一個(gè)RST數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽端口,RST被丟棄。3.當(dāng)一個(gè)RST數(shù)據(jù)包到達(dá)一個(gè)關(guān)閉的端口,RST被丟棄。當(dāng)一個(gè)不包含ACK的數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽端口時(shí),數(shù)據(jù)包被丟棄,同時(shí)發(fā)送一個(gè)RST數(shù)據(jù)包。當(dāng)一個(gè)SYN關(guān)閉的數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽端口時(shí),數(shù)據(jù)包被丟棄。當(dāng)一個(gè)SYN數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽端口時(shí),正常的三次握手繼續(xù),回答一個(gè)SYN|ACK數(shù)據(jù)包。當(dāng)一個(gè)FIN數(shù)據(jù)包到達(dá)一個(gè)監(jiān)聽端口時(shí),數(shù)據(jù)包被丟棄。“FIN行為”(關(guān)閉的端口返回RST,監(jiān)聽端口丟棄包),所有的URG、PSH和FIN,或者沒有任何標(biāo)記的TCP數(shù)據(jù)包都會(huì)引起“FIN行為”。TCP三次握手過程掃描的定義掃描程序(Scanner)是自動(dòng)檢測遠(yuǎn)端主機(jī)或者本地主機(jī)安全脆弱性的程序。通過使用掃描程序一個(gè)用戶可以發(fā)現(xiàn)遠(yuǎn)程服務(wù)器的安全弱點(diǎn)。目前,絕大多數(shù)操作系統(tǒng)都支持TCP/IP協(xié)議簇,掃描程序查詢TCP/IP端口并記錄目標(biāo)機(jī)器的響應(yīng)。掃描程序通過確定下列項(xiàng)目收集目標(biāo)主機(jī)的有用信息:當(dāng)前主機(jī)正在進(jìn)行什么服務(wù)?哪些用戶擁有這些服務(wù)?是否支持匿名登錄?是否有某些網(wǎng)絡(luò)服務(wù)需要鑒別?多線程技術(shù)每個(gè)正在系統(tǒng)上運(yùn)行的程序都是一個(gè)進(jìn)程。每個(gè)進(jìn)程包含一到多個(gè)線程。進(jìn)程也可能是整個(gè)程序或者是部分程序的動(dòng)態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨(dú)立執(zhí)行。也可以把它理解為代碼運(yùn)行的上下文。所以線程基本上是輕量級(jí)的進(jìn)程,它負(fù)責(zé)在單個(gè)程序里執(zhí)行多任務(wù)。通常由操作系統(tǒng)負(fù)責(zé)多個(gè)線程的調(diào)度和執(zhí)行。(1)什么是多線程?多線程是為了使得多個(gè)線程并行的工作以完成多項(xiàng)任務(wù),以提高系統(tǒng)的效率。線程是在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候被實(shí)現(xiàn)的。(2)使用線程的好處有以下幾點(diǎn):使用線程可以把占據(jù)長時(shí)間的程序中的任務(wù)放到后臺(tái)去處理用戶界面可以更加吸引人,這樣比如用戶點(diǎn)擊了一個(gè)按鈕去觸發(fā)某些事件的處理,可以彈出一個(gè)進(jìn)度條來顯示處理的進(jìn)度程序的運(yùn)行速度可能加快在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如內(nèi)存占用等等。概要設(shè)計(jì)整體設(shè)計(jì)框架經(jīng)過大量的分析與調(diào)研,進(jìn)而設(shè)計(jì)出由以下幾個(gè)模塊組成的簡單端口掃描器。整個(gè)端口掃描器的核心部分是掃描模塊,它是由很多子模塊組成的,其結(jié)構(gòu)如下圖所示程序結(jié)構(gòu)圖流程圖描述程序流程圖詳細(xì)設(shè)計(jì)開發(fā)環(huán)境本端口掃描器在JavaEclipse下開發(fā)界面設(shè)計(jì)AWT是Swing的基礎(chǔ)。AWT設(shè)計(jì)的初衷是支持開發(fā)小應(yīng)用程序的簡單用戶界面。但是AWT缺少剪貼板、打印支持、鍵盤導(dǎo)航等特性,而且原來的AWT甚至不包括彈出式菜單或滾動(dòng)窗格等基本元素。Swing的產(chǎn)生主要原因就是AWT不能滿足圖形化用戶界面發(fā)展的需要。Swing組件幾乎都是輕量組件,與重量組件相比,沒有本地的對(duì)等組件,不像重量組件要在它們自己的本地不透明窗體中繪制,輕量組件在它們的重量組件的窗口中繪制。本次課程設(shè)計(jì)利用了AWT和swing結(jié)合起來做個(gè)簡單的界面設(shè)計(jì),其導(dǎo)入語句為:Importjava.awt.*;Importjava.awt.event.*;Importjavax.swing.*;具體函數(shù)說明為:JtextAreaResult():定義顯示所有開放掃描端口區(qū)域的大小;JtextAreaResultAll():定義顯示所有掃描端口區(qū)域的大?。籎textFieldhostname():定義主機(jī)名JtextFieldminPort():定義最小端口JtextFieldmaxPort():定義最大端口JTextFieldmaxThread():定義最大線程數(shù)JdialogDLGError():定義錯(cuò)誤提示標(biāo)簽JlabelDLGINFO():定義錯(cuò)誤提示信息Jlabeltype():定義狀態(tài)表示JbuttonOK():定義確定按鈕JbuttonSubmit():定義開始掃描按鈕JbuttonStop():定義停止掃描按鈕JbuttonCancel():定義退出按鈕主要類說明ClassTCPThreadextendsThread:利用多線程的方法來實(shí)現(xiàn)TCP端口掃描,其中:利用調(diào)用run()方法進(jìn)行多線程的運(yùn)行,逐次掃描得出對(duì)應(yīng)的TCP端口號(hào)。還應(yīng)用了網(wǎng)絡(luò)編程套接字進(jìn)行客服端和服務(wù)器端的模擬,用輸入輸出流進(jìn)行信息的交換。ClassCancleActionimplementsActionListener:事件監(jiān)聽器,對(duì)應(yīng)Cancle按鈕classStopActionimplementsActionListener:事件監(jiān)聽器,對(duì)應(yīng)Stop按鈕ClassSubmitActionimplementsActionListener:事件監(jiān)聽器,對(duì)應(yīng)Submit按鈕。主要利用java的異常處理機(jī)制進(jìn)行相應(yīng)信息的匹配ClassOkActionimplementsActionListener:事件監(jiān)聽器,對(duì)應(yīng)OK按鈕PublicclassPortScan:主要進(jìn)行界面化設(shè)計(jì),調(diào)用上面的事件相應(yīng)。部分關(guān)鍵代碼描述基本信息檢測模塊publicclassTCPThreadextendsThread{ publicstaticInetAddresshostAddress; //最小的端口號(hào) publicstaticintMIN_port; //最大的端口號(hào) publicstaticintMAX_port; //線程總數(shù) privateintthreadnum; //查詢方式:0為ip;1為主機(jī)名 publicstaticinttype; //端口的類別 Stringporttype="0"; //ip地址前3位 publicstaticintip1; //ip地址4~6位 publicstaticintip2; //ip地址7~9位 publicstaticintip3; //起始ip地址的最后4位 publicstaticintipstart; //結(jié)束ip地址的最后4位 publicstaticintipend; //完整的ip地址 publicstaticStringipAll; //掃描的主機(jī)名稱或ip Stringhostname=""; /* *構(gòu)造函數(shù) */ publicTCPThread(Stringname,intthreadnum){ super(name); this.threadnum=threadnum; }參數(shù)設(shè)計(jì)模塊 //判斷ip的前3位是否為int型 try { ip1=Integer.parseInt(PortScan.fromip1.getText()); } catch(NumberFormatExceptione){ PortScan.DLGINFO.setText("錯(cuò)誤的ip!"); PortScan.DLGError.setVisible(true); PortScan.Submit.setEnabled(true);//設(shè)置開始掃描按鈕可用。 return; } //判斷起始ip是否正確 //判斷條件:大于0且小于等于255 if(ip1<0||ip1>255||ip2<0||ip2>255||ip3<0||ip3>255||ipstart<0||ipstart>255) { PortScan.DLGINFO.setText("ip地址為0-255的整數(shù)!"); PortScan.DLGError.setVisible(true); PortScan.Submit.setEnabled(true);//設(shè)置開始掃描按鈕可用。 return; } else { Stringip=""+ip1+"."+ip2+"."+ip3+"."+ipstart; //判斷IP地址的有效性 try { TCPThread.hostAddress=InetAddress.getByName(ip); } catch(UnknownHostExceptione) { PortScan.DLGINFO.setText("錯(cuò)誤的IP或地址不可達(dá)!"); PortScan.DLGError.setVisible(true); PortScan.Submit.setEnabled(true);//設(shè)置開始掃描按鈕可用。 return; } } } *判斷主機(jī)名稱的有效性 */ try { TCPThread.hostAddress=InetAddress.getByName(PortScan.hostname.getText()); } catch(UnknownHostExceptione) { PortScan.DLGINFO.setText("錯(cuò)誤的域名或地址不可達(dá)!"); PortScan.DLGError.setVisible(true); PortScan.Submit.setEnabled(true);//設(shè)置開始掃描按鈕可用。 return; } } /* *判斷端口號(hào)的有效性 */ try { minPort=Integer.parseInt(PortScan.minPort.getText()); maxPort=Integer.parseInt(PortScan.maxPort.getText()); maxThread=Integer.parseInt(PortScan.maxThread.getText()); } catch(NumberFormatExceptione) { PortScan.DLGINFO.setText("錯(cuò)誤的端口號(hào)或線程數(shù)!端口號(hào)和線程數(shù)必須為整數(shù)!"); PortScan.DLGError.setVisible(true); PortScan.Submit.setEnabled(true);//設(shè)置開始掃描按鈕可用。 return; } /* *判斷最小端口號(hào)的有效范圍 *判斷條件:大于0且小于65535,最大端口應(yīng)大于最小端口 */ if(minPort<0||minPort>65535||minPort>maxPort) { PortScan.DLGINFO.setText("最小端口必須是0-65535并且小于最大端口的整數(shù)!"); PortScan.DLGError.setVisible(true); PortScan.Submit.setEnabled(true);//設(shè)置開始掃描按鈕可用。 return; } else { TCPThread.MIN_port=minPort; } /* *判斷最大端口號(hào)的有效范圍 *判斷條件:大于0且小于65535,最大端口應(yīng)大于最小端口 */ if(maxPort<0||maxPort>65535||maxPort<minPort) { PortScan.DLGINFO.setText("最大端口必須是0-65535并且大于最小端口的整數(shù)!"); PortScan.DLGError.setVisible(true); PortScan.Submit.setEnabled(true);//設(shè)置開始掃描按鈕可用。 return; } else { TCPThread.MAX_port=maxPort; } /* *判斷線程數(shù)量的有效范圍 *判斷條件:大于1且小于200 */ if(maxThread<1||maxThread>200) { PortScan.DLGINFO.setText("線程數(shù)為1-200的整數(shù)!"); PortScan.DLGError.setVisible(true); PortScan.Submit.setEnabled(true);//設(shè)置開始掃描按鈕可用。 return; } PortScan.Result.append("線程數(shù)"+PortScan.maxThread.getText()+"\n"); //啟動(dòng)線程 for(inti=0;i<maxThread;i++) { newTCPThread("T"+i,i).start(); } }}端口掃描模塊Publicvoidrun(){ //ip地址 // inth=0; //端口號(hào) inti=0; SockettheTCPsocket;for(i=MIN_port+threadnum;i<MAX_port+Integer.parseInt(PortScan.maxThread.getText())&&PortScan.StopFlag;i+=Integer.parseInt(PortScan.maxThread.getText())){try{theTCPsocket=newSocket(hostAddress,i);theTCPsocket.close();}catch(IOExceptione){synchronized(PortScan.ResultAll){PortScan.ResultAll.append(""+i);PortScan.ResultAll.append(":Closed"+"\n");}}系統(tǒng)測試系統(tǒng)主界面利用java的awt,swing做界面,界面相對(duì)比較簡單。主要顯示的信息包括:程序名字,端口范圍,線程數(shù),IP地址等基本信息。輸入相關(guān)的信息,就可以開始掃描。子系統(tǒng)功能測試當(dāng)輸入錯(cuò)誤的ip時(shí),提示錯(cuò)誤信息“錯(cuò)誤的ip”當(dāng)輸入的ip范圍不在所規(guī)定的范圍內(nèi),提出錯(cuò)誤信息“ip地址為0-255的整數(shù)”當(dāng)輸入錯(cuò)誤的端口號(hào)時(shí),提示錯(cuò)誤信息“端口號(hào)或線程數(shù)錯(cuò)誤!端口號(hào)和線程數(shù)必須為整數(shù)!”當(dāng)輸入的端口范圍不在所規(guī)定的范圍內(nèi),提出錯(cuò)誤信息“端口需界于0-65535并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論