基于多線程的端口掃描程序課程設計報告_第1頁
基于多線程的端口掃描程序課程設計報告_第2頁
基于多線程的端口掃描程序課程設計報告_第3頁
基于多線程的端口掃描程序課程設計報告_第4頁
基于多線程的端口掃描程序課程設計報告_第5頁
免費預覽已結束,剩余13頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、滁州學院課程設計報告課程名稱:設計題目:基于多線程的端口掃描程序院部:計算機與信息工程學院專業(yè):網絡工程組別:第六組起止日期:起12年12月31日2013年1月6日指導教師:計算機與信息工程學院二。一二年制課程設計任務書課程設計題目;良于多線程的端口掃描程序組長學號班級院部計算機與信息工程專業(yè)網絡工程組員指導教師課程設計目的鍛煉Java高級編程的能力課程設計所需環(huán)境PG Windows xp, JCretor Pro課程設計任務要求使用Socket實現(xiàn)簡單的端口掃描功能。分別針對 TCP 和UDP采用多線程技術實現(xiàn)端口掃描,給出掃描結果。課程設計工作進度計劃序號起止日期工作內容分工情況1分析題

2、目,搜索相關資料。2整理相關資料,確定程序分 工,布置任務。3編寫程序代碼。4調試改進程序。5編寫課程設計報告與 PPT指導教師簽字:年月日系(教研室)審核意見:系(教研室)主任簽字:年月日1需求分析 01.1 1 網絡安全 01.2 課程背景 01.3 掃描器 01.4 多線程掃描器介紹 1錯誤 ! 未定義書簽。錯誤! 未定義書簽。錯誤! 未定義書簽。錯誤 ! 未定義書簽。1.5 端口掃描 22 概要設計 32.1 整體框架設計 32.2 流程圖描述 33 詳細設計 33.1 端口掃描線程啟動 33.2 GUI 圖形界面 53.3 按鈕監(jiān)聽及異常處理 64 調試與操作說明 84.1 運行界面

3、 84.2 掃描結果 84.3 錯誤提示 85 課程設計總結與體會 86 參考文獻 97 致謝 98 附錄 01 需求分析1.1 1 網絡安全二十一世紀是信息化、網絡化的世紀,信息是社會發(fā)展的重要資源。信息安全保障能力是一個國家綜合國力、經濟競爭實力和生存能力的重要組成部分,是世界各國在奮力攀登的制高點。網絡安全是指網絡系統(tǒng)的硬件、軟件及其系統(tǒng)中的數據受到保護,不因偶然的或者惡意的原因而遭到破壞、更改、泄露,系統(tǒng)連續(xù)可靠正常地運行。網絡安全包括技術領域和非技術領域兩大部分: 非技術領域包括一些制度、政策、管理、安全意識、實體安全等方面的內容;技術領域包括隱患掃描、防火墻、入侵檢測、訪問控制、虛

4、擬專用網、CA認證、操作系統(tǒng)等方面的內容。這些技術的目標是保證信息的可控性、可用性、保密性、完整性、和不可抵賴性。端口掃描屬于安全探測技術范疇,對應于網絡攻擊技術中的網絡信息收集技術。1.2 課程背景隨著 Internet 的不斷發(fā)展,信息技術已成為促進經濟發(fā)展、社會進步的巨大推動力。端口掃描技術是網絡安全掃描技術一個重要的網絡安全技術。與防火墻、入侵檢測系統(tǒng)互相配合,能夠有效提高網絡的安全性。安全掃描是安全技術領域中重要的一類。通過掃描能自動檢測遠端或本地主機系統(tǒng)信息,包括主機的基本信息( 如計算機名、域名、組名、操作系統(tǒng)型等 ) 、服務信息、用戶信息以及漏洞信息,它的重要性在于能夠對網絡進

5、行安全評估,及時發(fā)現(xiàn)安全隱患,防患于未然。網絡的安全狀況取決于網絡中最薄弱的環(huán)節(jié),任何疏忽都有可能引入不安全的因素,最有效的方法是定期對網絡系統(tǒng)進行安全分析,及時發(fā)現(xiàn)并修正存在的脆弱,保證系統(tǒng)安全。國外安全掃描技術的歷史可以追溯到20 世紀 90 年代,當時因特網剛剛起步,但是在過去的十年內,掃描技術飛速發(fā)展,迄今為止,其掃描技術已經非常完善,但是在全面性,隱蔽性和智能性上還有待提高。安全掃描從最初專門為UNIX系統(tǒng)而編寫的一些只有簡單功能的小程序發(fā)展到現(xiàn)在,已經出現(xiàn)了可以運行多個操作系統(tǒng)平臺上的,具有復雜功能的系統(tǒng)程序。國內的掃描技術是在國外的掃描器基礎上發(fā)展起來的。其中有一些專門從事安全技

6、術的公司。這些公司的掃描器以硬件為主,其特點是執(zhí)行速度快,不像軟件一樣受到安裝主機系統(tǒng)的限制。然而對于更多的基于主機的端口掃描而言,簡單,實用,可靠才是它們的長處。1.3 掃描器掃描器是一種自動檢測遠程或本地主機安全性弱點的程序,通過使用掃描器你可以不留痕跡的發(fā)現(xiàn)遠程服務器的各種TCP端口的分配。這就能讓我們間接的或直觀的了解到遠程主機所存在的安全問題。為了保證網絡中計算機的安全性, 必須采取主動策略, 快速、及時、準 確、安全的檢測出網絡中計算機及防火墻開放的和未開放的端口。計算機端口掃描技術就是 這種主動防御策略實現(xiàn)的重要技術手段。掃描器采用模擬攻擊的形式對目標可能存在的已知安全漏洞進行逐

7、項檢查。目標可以是工作站、服務器、交換機、數據庫應用等各種對象。然后根據掃描結果向系統(tǒng)管理員提供周密可靠的安全性分析報告,為提高網絡安全整體水平產生重要依據。在網絡安全體系的建設中,安全掃描工具花費低、效果好、見效快、與網絡的運行相對對立、安裝運行簡單,可以大規(guī)模減少安全管理員的手工勞動,有利于保持全網安全政策的統(tǒng)一和穩(wěn)定。1.4 多線程掃描器介紹在 java 中,組件放置在窗體上的方式是完全基于代碼的。組件放置在窗體上的方式通常不是通過絕對坐標控制,而是由“布局管理器”根據組件加入的順序決定其位置。每個容器都有一個屬于的自己布局管理器。使用不同的布局管理器,組件大小,位置和形狀將大不相同。表

8、格型布局管理器將容器劃分成為一個多行多列的表格,表格的大小全部相同,是由其中最大的組件所決定。通過add 方法可以將組件一一放在每個表格中。表格包型布局與表格型布局有些相近,但與表格型布局比較起來,表格包型更加靈活,更加復雜。通常表格包型布局,我們可以設定每個格子的大小,間隙等。每個正在系統(tǒng)上運行的程序都是一個進程。每個進程包含一到多個線程。進程也可能是整個程序或者是部分程序的動態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨立執(zhí)行。也可以把它理解為代碼運行的上下文。所以線程基本上是輕量級的進程,它負責在單個程序里執(zhí)行多任務。通常由操作系統(tǒng)負責多個線程的調度和執(zhí)行。線程是程序

9、中一個單一的順序控制流程. 在單個程序中同時運行多個線程完成不同的工作 , 稱為多線程.線程和進程的區(qū)別在于, 子進程和父進程有不同的代碼和數據空間, 而多個線程則共享數據空間 , 每個線程有自己的執(zhí)行堆棧和程序計數器為其執(zhí)行上下文. 多線程主要是為了節(jié)約CPU寸間,發(fā)揮利用,根據具體情況而定.線程的運行中需要使用計算機的內存資源和CPU在計算機編程中,一個基本的概念就是同時對多個任務加以控制。許多程序設計問題都要求程序能夠停下手頭的工作,改為處理其他一些問題,再返回主進程??梢酝ㄟ^多種途徑達到這個目的。最開始的時候,那些掌握機器低級語言的程序員編寫一些“中斷服務例程”,主進程的暫停是通過硬件

10、級的中斷實現(xiàn)的。盡管這是一種有用的方法,但編出的程序很難移植,由此造成了另一類的代價高昂問題。中斷對那些實時性很強的任務來說是很有必要的。但對于其他許多問題,只要求將問題劃分進入獨立運行的程序片斷中,使整個程序能更迅速地響應用戶的請求。最開始,線程只是用于分配單個處理器的處理時間的一種工具。但假如操作系統(tǒng)本身支持多個處理器,那么每個線程都可分配給一個不同的處理器,真正進入“并行運算”狀態(tài)。從程序設計語言的角度看,多線程操作最有價值的特性之一就是程序員不必關心到底使用了多少個處理器。程序在邏輯意義上被分割為數個線程;假如機器本身安裝了多個處理器,那么程序會運行得更快,毋需作出任何特殊的調校。根據

11、前面的論述,大家可能感覺線程處理非常簡單。但必須注意一個問題:共享資源!如果有多個線程同時運行,而且它們試圖訪問相同的資源,就會遇到一個問題。舉個例子來說,兩個線程不能將信息同時發(fā)送給一臺打印機。為解決這個問題,對那些可共享的資源來說(比如打印機),它們在使用期間必須進入鎖定狀態(tài)。所以一個線程可將資源鎖定,在完成了它的任務后,再解開(釋放)這個鎖,使其他線程可以接著使用同樣的資源。多線程是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時間需要完成多項任務的時候實現(xiàn)的。線程優(yōu)先級被線程調度用來判定何時哪個線程允許運行。理論上,優(yōu)先級高的線程比優(yōu)

12、先級低的線程獲得更多的CPU時間。實際上,線程獲得的CPU時間通常由包括優(yōu)先級在內的多個因素決定(例如,一個實行多任務處理的操作系統(tǒng)如何更有效的利用CPU時間)。一個優(yōu)先級高的線程自然比優(yōu)先級低的線程優(yōu)先。舉例來說,當低優(yōu)先級線程正在運行,而一個高優(yōu)先級的線程被恢復(例如從沉睡中或等待I/O 中),它將搶占低優(yōu)先級線程所使用的CPU。理論上,等優(yōu)先級線程有同等的權利使用CPU但你必須小心了。記住, Java是被設計成能在很多環(huán)境下工作的。一些環(huán)境下實現(xiàn)多任務處理從本質上與其他環(huán)境不同。為安全起見,等優(yōu)先級線程偶爾也受控制。這保證了所有線程在無優(yōu)先級的操作系統(tǒng)下都有機會運行。實際上,在無優(yōu)先級的

13、環(huán)境下,多數線程仍然有機會運行,因為很多線程不可避免的會遭遇阻塞,例如等待輸入輸出。遇到這種情形,阻塞的線程掛起,其他線程運行。但是如果你希望多線程執(zhí)行的順利的話,最好不要采用這種方法。同樣,有些類型的任務是占CPU的。對于這些支配 CPU類型的線程,有時你希望能夠支配它們,以便使其他線程可以運行。多個線程同時讀寫同一份共享資源的時候,可能會引起沖突。這時候,我們需要引入線程“同步”機制,即各位線程之間要有個先來后到,不能一窩蜂擠上去搶作一團。同步的關鍵是管程,管程是一個互斥獨占鎖定的對象,在給定的時間,僅有一個線程獲得管程,當一個線程需要鎖定時,他必須進入管程。1.5 端口掃描一個端口就是一

14、個潛在的通信通道,也就是一個入侵通道。對目標計算機進行端口掃描,能得到許多有用的信息。進行掃描的方法很多,可以是手工進行掃描,也可以用端口掃描軟件進行。在手工進行掃描時,需要熟悉各種命令。對命令執(zhí)行后的輸出進行分析。用掃描軟件進行掃描時,許多掃描器軟件都有分析數據的功能。通過端口掃描,可以得到許多有用的信息,從而發(fā)現(xiàn)系統(tǒng)的安全漏洞。2概要設計2.1 整體框架設計經過我們組員的思考很研究,得出了以下幾個模塊的簡單端口掃描器,整個端口掃描器 的核心模塊是是端口掃描系統(tǒng),它由許多子模塊組成,其結構如下圖所示:TCP端口掃描程序2.2 流程圖描述開始基本信息檢測模塊找的參ip數4一設輸入線程數模 塊通

15、 A過scoket匹配過濾原則來進行端口掃描IP地址是否存在7測1匹配1是否在參數范圍中結果輸模塊(通過一GUI界卸輸計得到的結果)GUI界面中打印出來讀取應答內容3詳細設計3.1端口掃描線程啟動掃描程序主要運用Socket編程。對于一個工作齊全的Socket ,其工作過程包含以下四個就基本步驟:創(chuàng)建通信雙方的socket鏈接,即分別為服務器和客戶端創(chuàng)建Socket對象,建立Socket連接;打開連接到Socket的輸入流和輸出流;按照一定的協(xié)議對Socket進行讀/寫操作;關閉連接。以下是程序代碼/ 運行 掃描端口public void run()int i;Socket theTCPsoc

16、ket;for(itrytheTCPsocket=new Socket(hostAddress,i);theTCPsocket.close();switch(i)case 21:break;case 23:break;case 25:break;case 80:break;case 110:break;case 139:break;catch (IOException e)if (i=MAX_port)1.2 GUI 圖形界面圖形用戶界面是軟件產品和用戶交互的接口,是軟件產品中用戶直接可以看到并直接操作的部分。public class ThreadScanpublic static JFram

17、e main=new JFrame(" 基于 JAVA的多線程 TCP端口掃描程序");public static JTextArea Result=new JTextArea("",4,43);public static JTextField hostname=new JTextField("localhost",8);public static JTextField minPort=new JTextField("0",4);public static JTextField maxPort=new JTextF

18、ield("1000",4);public static JTextField maxThread=new JTextField("100",3);public static JDialog DLGError=new JDialog(main,"錯誤 !");public static Label DLGINFO=new Label("");public static Label status=new Label("掃描狀態(tài): 未開始 ");public static void main(Str

19、ing args) main.setSize(500,220);/main.setLocation(300,300);main.setResizable(false);DLGError.setSize(300,100);DLGError.setLocation(400,400);JPanel mainPanel = new JPanel();Label H=new Label("ip 或域名 :");Label P1=new Label(" 端口范圍:");Label P2=new Label("");Label TNUM=new L

20、abel(" 線程數 :");Label RST=new Label(" 掃描結果: ");Label con=new Label(" ");Result.setLineWrap(true);Result.setEditable(false);JButton OK = new JButton(" 確定 ");JButton Submit = new JButton("確定");JButton Cancel = new JButton("取消");Container mPane

21、l = main.getContentPane();Container dPanel = DLGError.getContentPane();mPanel.setLayout(new FlowLayout(FlowLayout.LEFT);dPanel.setLayout(new FlowLayout(FlowLayout.CENTER);mPanel.add(H);mPanel.add(hostname);mPanel.add(P1);mPanel.add(minPort);mPanel.add(P2);mPanel.add(maxPort);mPanel.add(TNUM);mPanel.

22、add(maxThread);mPanel.add(RST);mPanel.add(Result);mPanel.add(con);mPanel.add(Submit);mPanel.add(Cancel);mPanel.add(status);dPanel.add(DLGINFO);dPanel.add(OK);main.setVisible(true);Submit.addActionListener(new SubmitAction();Cancel.addActionListener(new CancleAction();OK.addActionListener(new OKActio

23、n();1.3 按鈕監(jiān)聽及異常處理本部分主要對各個按鈕進行監(jiān)聽。是整個程序的時間驅動設計部分。并且顯示運行結果。class SubmitAction implements ActionListenerpublic void actionPerformed (ActionEvent a)int minPort;int maxPort;int maxThread;trycatch(NumberFormatException e)return;trycatch(UnknownHostException e)return;if(minPort<0 | minPort>65535 | min

24、Port>maxPort)return;else TCPThread.MIN_port=minPort;if(maxPort<0 | maxPort>65535 | maxPort<minPort)return;else TCPThread.MAX_port=maxPort;if(maxThread<1 | maxThread>200)return;for(int i=0;i<maxThread;i+)new TCPThread("T" + i,i).start();4 調試與操作說明4.1 運行界面對本機進行多線程的端口掃描,即在

25、ip 或域名中輸入localhost 可對本機進行端口進行掃描,也可輸入其他的ip 地址或域名,可自行設置端口范圍如從0 到 1000,最大不超過65535,可設置線程數范圍為0200 ,掃描狀態(tài)為未開始,點擊確定即可運行程序。4.2 掃描結果程序運行后,可以得到相關的端口掃描過程,其中掃描狀態(tài)顯示正在掃描的端口號,如下:程序運行結束后在掃描結果中顯示掃描結束,并在掃描狀態(tài)中顯示完成。4.3 錯誤提示程序中往往由于一些數據不正確會造成運行后錯誤,所以在程序中添加了異常處理機制,其中遇到的錯誤可能有以下幾種:當端口號或線程數不是整數時會出現(xiàn)如下錯誤:當 ip 地址或域名錯誤時,會出現(xiàn)如下錯誤:當

26、最小端口數不在065535且不小于最大端口數時會出現(xiàn)如下錯誤:當最大端口數不在065535且不大于最小端口數時會出現(xiàn)如下錯誤:當線程數范圍不在0200 時會出現(xiàn)如下錯誤:5 課程設計總結與體會本組成員共同設計的基于多線程的端口掃描程序基本滿足了課程設計的要求,能夠很好地對本機或其他電腦端口進行掃描,同時也處理了程序中可能出現(xiàn)的錯誤。本次課程設計,使我們對計算機網絡這門課程有了更深入的理解。計算機網絡是一門實踐性較強的課程,為了學好這門課程,必須在掌握理論知識的同時,加強上機實踐。要想把課程設計做的更好,就要學會參考一定的資料,吸取別人的經驗,加強團隊合作。在本課程設計中,我們明白了理論與實際應

27、用相結合的重要性,并提高了自己組織數據及編寫大程序的能力。培養(yǎng)了基本的、良好的程序設計技能以及合作能力。這次課程設計同樣提高了我們的綜合運用所學知識的能力。課程設計程序的編寫需要有耐心,有些事情看起來很復雜,但問題需要一點一點去解決,分析問題,把問題模塊化,劃分成小塊以后就逐個去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。通過這段時間的課程設計,我們認識到計算機網絡是一門比較難的課程。需要多花時間學習。這次的課程設計培養(yǎng)了我們實際分析問題、編程和動手能力,使我們掌握了計算機網絡課程設計的基本技能,提高了我們適應實際,運用于實際生活的能力。這次的課程設計提高了我們對于

28、專業(yè)課的學習熱情,使我們能夠更加深入的理解課本內容,對 計算機網絡也有了進一步的理解和認識,同時也理解了將課本內容與實際生活相結合的好處。6 參考文獻1 趙生慧 .Java 面向對象程序設計. 北京:中國水利水電出版社,2010。2 謝希仁. 計算機網絡(第五版). 北京:電子工業(yè)出版社,2011 。3 吳功宜. 計算機網絡(第二版). 北京:清華大學出版社,2007。4 楊靜宇 . Java 程序設計與應用開發(fā)( 第 2 版 ) M. 北京 : 清華大學出版社, 20097 致謝非常感謝老師耐心的指導,在實驗過程中給出指導并給幫助分析思路,給我們提供了可行的方案設計思路,在實驗過程中指出不足

29、之處,為能夠成功的完成課程設計做了很大的貢獻;非常感謝各位組員的積極配合,一起分析題目,整理思路,努力思考解決方案,畫出方案流程圖,并進行了嚴密的算法分析,構造嚴謹的程序框架,然后各自完成自己負責的模塊,最后一起整理出完整的程序,一起進行調試分析,評估程序的嚴謹性,找出不足。完善實驗內容,整理資料,編寫文檔。8 附錄源代碼:import .*;import java.io.*;/import java.util.*;import java.awt.*;import javax.swing.*;class TCPThread extends Threadpublic static InetAdd

30、ress hostAddress;public static int MIN_port;public static int MAX_port;private int threadnum;public TCPThread(String name,int threadnum)super(name);this.threadnum = threadnum;public void run()int i;Socket theTCPsocket;for (i = MIN_port+threadnum; i < MAX_port; i += Integer.parseInt trytheTCPsocke

31、t=new Socket(hostAddress,i);theTCPsocket.close();switch(i)case 21:break;case 23:break;case 25:break;case 80:break;case 110:break;case 139:break;catch (IOException e)if (i=MAX_port)class CancleAction implements ActionListenerpublic void actionPerformed (ActionEvent e)System.exit(1);class SubmitAction

32、 implements ActionListenerpublic void actionPerformed (ActionEvent a)int minPort;int maxPort;int maxThread;trycatch(NumberFormatException e)return;tryTCPThread.hostAddress=InetAddress.getByName catch(UnknownHostException e)return;if(minPort<0 | minPort>65535 | minPort>maxPort)return;else TC

33、PThread.MIN_port=minPort;if(maxPort<0 | maxPort>65535 | maxPort<minPort)return;else TCPThread.MAX_port=maxPort; if(maxThread<1 | maxThread>200) return;for(int i=0;i<maxThread;i+)new TCPThread("T" + i,i).start();class OKAction implements ActionListenerpublic void actionPer

34、formed (ActionEvent e)public class ThreadScan基于JAVA的多線程TCP端口掃描程public static JFrame main=new JFrame("序 ");public static JTextArea Result=new JTextArea("",4,43);public static JTextField hostname=new JTextField("localhost",8); public static JTextField minPort=new JTextFie

35、ld("0",4);public static JTextField maxPort=new JTextField("1000",4);public static JTextField maxThread=new JTextField("100",3);public static JDialog DLGError=new JDialog(main,"錯誤 !");public static Label DLGINFO=new Label("");public static Label status=new Label("掃描狀態(tài): 未開始 ");public static void main(String args)main.setSize(500,220);/main.set

溫馨提示

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

評論

0/150

提交評論