計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)---端口掃描工具設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩14頁(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)介

1、<p>  信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)</p><p><b>  課程研究報(bào)告</b></p><p>  題目全稱(chēng): 端口掃描工具設(shè)計(jì) </p><p>  課 程: 計(jì)算機(jī)網(wǎng)絡(luò) </p><p>  學(xué) 號(hào):

2、 </p><p>  班 級(jí): </p><p>  姓 名: </p><p><b>  摘要</b></p><p>  在現(xiàn)在這個(gè)信息化的社

3、會(huì)中,網(wǎng)絡(luò)的發(fā)展已經(jīng)超出了人們預(yù)想,在很短的時(shí)間里已經(jīng)滲透到軍事,金融,商業(yè),交通,電信,教育等領(lǐng)域,并發(fā)揮著越來(lái)越大的作用。社會(huì)對(duì)網(wǎng)絡(luò)系統(tǒng)的依賴(lài)也越來(lái)越強(qiáng),使得密集信息和財(cái)富高度集中與計(jì)算機(jī)中。另一方面,這些網(wǎng)絡(luò)系統(tǒng)都依靠計(jì)算機(jī)網(wǎng)絡(luò)接受和處理信息,實(shí)現(xiàn)其相互間的聯(lián)系和對(duì)目標(biāo)的管理與控制。而網(wǎng)絡(luò)端口掃描作為維護(hù)網(wǎng)絡(luò)安全的重要手段,可以幫助服務(wù)器提供商找出自身漏洞,避免黑客攻擊;測(cè)試遠(yuǎn)程服務(wù)器的端口是否可達(dá),防止沿途運(yùn)營(yíng)商、防火墻限制了端

4、口導(dǎo)致服務(wù)不可用。</p><p><b>  .備注</b></p><p>  本次計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)我主要是學(xué)習(xí)一下端口掃描工具的基本知識(shí)以及研究別人做出的端口掃描工具,以下即是本次研究的相關(guān)研究報(bào)告。鑒于自己計(jì)算機(jī)方面知識(shí)不是很好,不足之處還請(qǐng)老師指出與修正。</p><p><b>  端口掃描器的研究</b>&

5、lt;/p><p><b>  TCP協(xié)議介紹</b></p><p>  提到端口掃描技術(shù)就不可不提及TCP協(xié)議了,作為互聯(lián)網(wǎng)的核心協(xié)議,TCP協(xié)議的重要性是人人皆知,端口掃描主要是建立在TCP協(xié)議基礎(chǔ)上的一門(mén)技術(shù)。TCP協(xié)議是一種面向連接的,可靠的傳輸協(xié)議。一次正常的TCP傳輸需要通過(guò)在客戶(hù)和服務(wù)器之間建立特定的虛電路連接來(lái)完成,這個(gè)過(guò)程通常被稱(chēng)為“三次握手”。TCP

6、通過(guò)數(shù)據(jù)分段中的序列號(hào)保證所有的傳輸數(shù)據(jù)可以在遠(yuǎn)端按照正常的次序重組,而通過(guò)確認(rèn)保證數(shù)據(jù)傳輸?shù)耐暾浴?lt;/p><p><b>  三次握手過(guò)程:</b></p><p>  1:客戶(hù)端發(fā)送一個(gè)TCP包(SYN請(qǐng)求)給服務(wù)端,其中標(biāo)記SYN(同步序號(hào))要打開(kāi)。SYN請(qǐng)求指明了客戶(hù)端希望連接的服務(wù)器端端口號(hào)和客戶(hù)端的ISN。</p><p>  

7、2:服務(wù)器端發(fā)回應(yīng)答,包含自己的SYN信息ISN和對(duì)客戶(hù)端的SYN應(yīng)答,應(yīng)答時(shí)返回下一個(gè)希望得到的字節(jié)序號(hào)。</p><p>  3:客戶(hù)端對(duì)從S服務(wù)器端來(lái)的SYN進(jìn)行應(yīng)答,數(shù)據(jù)發(fā)送開(kāi)始。</p><p><b>  UDP協(xié)議介紹</b></p><p>  UDP,用戶(hù)數(shù)據(jù)報(bào)協(xié)議。UDP為應(yīng)用程序提供了一種方法來(lái)發(fā)送經(jīng)過(guò)封裝的IP數(shù)據(jù)報(bào),而

8、且不必建立連接就可以發(fā)送這些IP數(shù)據(jù)報(bào)。</p><p>  UDP傳輸?shù)臄?shù)據(jù)段是由8個(gè)字節(jié)的頭和凈荷域構(gòu)成的。兩個(gè)端口分別被用來(lái)標(biāo)識(shí)出源機(jī)器和目標(biāo)機(jī)器內(nèi)部的端點(diǎn)。當(dāng)一個(gè)UDP分組到來(lái)的時(shí)候,它的凈荷部分被遞交給與目標(biāo)端口相關(guān)聯(lián)的那個(gè)進(jìn)程。當(dāng)目標(biāo)端口必須將一個(gè)應(yīng)答送回給源端口的時(shí)候,源端口是必須的。發(fā)送應(yīng)答的進(jìn)程只要將近來(lái)的數(shù)據(jù)段中的源端口域復(fù)制到輸出的數(shù)據(jù)段中的目標(biāo)端口域,就可以指定在發(fā)送機(jī)器上有哪個(gè)進(jìn)程來(lái)接受

9、應(yīng)答。UDP長(zhǎng)度包含了8字節(jié)的頭和數(shù)據(jù)部分。UDP校驗(yàn)和是可選的,如果不計(jì)算的話(huà),則在該域中存放0,如果真正的計(jì)算結(jié)果試的話(huà),則該域中存放的全是1,除非數(shù)據(jù) 的質(zhì)量并不重要,否則就不應(yīng)該將校驗(yàn)和的功能關(guān)閉。另外值得明確提出來(lái)的是UDP沒(méi)有做到的一些事情。UDP并不考慮流控制,錯(cuò)誤控制,在收到一個(gè)壞的數(shù)據(jù)段之后它也不重傳。所有這些工作都留給用戶(hù)的進(jìn)程。UDP所作的事情是提供一個(gè)接口,并且在接口中增加解復(fù)用的特性。他利用端口的概念將數(shù)據(jù)段解

10、復(fù)用到多個(gè)進(jìn)程中,這就是他所做的全部工作。</p><p><b>  SOCKET介紹</b></p><p>  Socket接口是TCP/IP網(wǎng)絡(luò)的API,Socket接口定義了許多函數(shù)或例程,程序員可以用它們來(lái)開(kāi)發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。要學(xué)Internet上的TCP/IP網(wǎng)絡(luò)編程,必須理解Socket接口。</p><p>  

11、Socket接口設(shè)計(jì)者最先是將接口放在Unix操作系統(tǒng)里面的。如果了解Uinx系統(tǒng)的輸入和輸出的話(huà),就很容易了解Socket了。網(wǎng)絡(luò)的Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個(gè)類(lèi)似于打開(kāi)文件的函數(shù)調(diào)用Socket(),該函數(shù)返回一個(gè)整型的Socket描述符,隨后的連接建立,數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^(guò)該Socket實(shí)現(xiàn)的。</p><p>  Sockfd是需要關(guān)閉的

12、socket的描述符。參數(shù) how允許為shutdown操作選擇以下幾種方式:</p><p>  ·0-------不允許繼續(xù)接收數(shù)據(jù) </p><p>  ·1-------不允許繼續(xù)發(fā)送數(shù)據(jù) </p><p>  ·2-------不允許繼續(xù)發(fā)送和接收數(shù)據(jù),均為允許則調(diào)用close ()   shutdown在操作成功時(shí)返回0,

13、在出現(xiàn)錯(cuò)誤時(shí)返回-1并置相應(yīng)errno。</p><p><b>  常用端口掃描技術(shù)</b></p><p>  TCP connect()掃描:</p><p>  這是最基本的TCP掃描,操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用可以用來(lái)與每一個(gè)感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽(tīng)狀態(tài),那么connect()就能成功。否則,這

14、個(gè)端口是不能用的,即沒(méi)有提供服務(wù)。這個(gè)技術(shù)的一個(gè)最大的優(yōu)點(diǎn)是,你不需要任何權(quán)限。系統(tǒng)中的任何用戶(hù)都有權(quán)利使用這個(gè)調(diào)用。另一個(gè)好處就是速度,如果對(duì)每個(gè)目標(biāo)端口以線性的方式,使用單獨(dú)的connect()調(diào)用,那么將會(huì)花費(fèi)相當(dāng)長(zhǎng)的時(shí)間,使用者可以通過(guò)同時(shí)打開(kāi)多個(gè)套接字來(lái)加速掃描。使用非阻塞I/O允許你設(shè)置一個(gè)低的時(shí)間用盡周期,同時(shí)觀察多個(gè)套接字。但這種方法的缺點(diǎn)是很容易被察覺(jué),并且被防火墻將掃描信息包過(guò)濾掉。目標(biāo)計(jì)算機(jī)的logs文件會(huì)顯示一連

15、串的連接和連接出錯(cuò)消息,并且能很快使它關(guān)閉。</p><p>  TCP SYN掃描:</p><p>  這種技術(shù)通常認(rèn)為是“半開(kāi)放”掃描,這是因?yàn)閽呙璩绦虿槐匾蜷_(kāi)一個(gè)完全的TCP連接。掃描程序發(fā)送的是一個(gè)SYN數(shù)據(jù)包,好象準(zhǔn)備打開(kāi)一個(gè)實(shí)際的連接并等待反應(yīng)一樣(參考TCP的三次握手建立一個(gè)TCP連接的過(guò)程)。一個(gè)SYN|ACK的返回信息表示端口處于偵聽(tīng)狀態(tài):返回RST表示端口沒(méi)有處于偵

16、聽(tīng)?wèi)B(tài)。如果收到一個(gè)SYN|ACK,則掃描程序必須再發(fā)送一個(gè)RST信號(hào),來(lái)關(guān)閉這個(gè)連接過(guò)程。這種掃描技術(shù)的優(yōu)點(diǎn)在于一般不會(huì)在目標(biāo)計(jì)算機(jī)上留下記錄,但這種方法的缺點(diǎn)是必須要有root權(quán)限才能建立自己的SYN數(shù)據(jù)包。</p><p>  TCP FIN 掃描:</p><p>  SYN掃描雖然是“半開(kāi)放”方式掃描,但在某些時(shí)候也不能完全隱藏掃描者的動(dòng)作,防火墻和包過(guò)濾器會(huì)對(duì)管理員指定的端口進(jìn)行

17、監(jiān)視,有的程序能檢測(cè)到這些掃描。相反,F(xiàn)IN數(shù)據(jù)包在掃描過(guò)程中卻不會(huì)遇到過(guò)多問(wèn)題,這種掃描方法的思想是關(guān)閉的端口會(huì)用適當(dāng)?shù)腞ST來(lái)回復(fù)FIN數(shù)據(jù)包。另一方面,打開(kāi)的端口會(huì)忽略對(duì)FIN數(shù)據(jù)包的回復(fù)。這種方法和系統(tǒng)的實(shí)現(xiàn)有一定的關(guān)系,有的系統(tǒng)不管端口是否打開(kāi)都會(huì)回復(fù)RST,在這種情況下此種掃描就不適用了。另外這種掃描方法可以非常容易的區(qū)分服務(wù)器是運(yùn)行Unix系統(tǒng)還是NT系統(tǒng)。</p><p><b>  I

18、P段掃描:</b></p><p>  這種掃描方式并不是新技術(shù),它并不是直接發(fā)送TCP探測(cè)數(shù)據(jù)包,而是將數(shù)據(jù)包分成兩個(gè)較小的IP段。這樣就將一個(gè)TCP頭分成好幾個(gè)數(shù)據(jù)包,從而過(guò)濾器就很難探測(cè)到。但必須小心:一些程序在處理這些小數(shù)據(jù)包時(shí)會(huì)有些麻煩。</p><p>  TCP 反向 ident掃描:</p><p>  ident 協(xié)議允許(rfc141

19、3)看到通過(guò)TCP連接的任何進(jìn)程的擁有者的用戶(hù)名,即使這個(gè)連接不是由這個(gè)進(jìn)程開(kāi)始的。例如掃描者可以連接到http端口,然后用identd來(lái)發(fā)現(xiàn)服務(wù)器是否正在以root權(quán)限運(yùn)行。這種方法只能在和目標(biāo)端口建立了一個(gè)完整的TCP連接后才能看到。</p><p><b>  FTP 返回攻擊:</b></p><p>  FTP協(xié)議的一個(gè)有趣的特點(diǎn)是它支持代理(proxy)F

20、TP連接,即入侵者可以從自己的計(jì)算機(jī)self.com和目標(biāo)主機(jī)target.com的FTP server-PI(協(xié)議解釋器)連接,建立一個(gè)控制通信連接。然后請(qǐng)求這個(gè)server-PI激活一個(gè)有效的server-DTP(數(shù)據(jù)傳輸進(jìn)程)來(lái)給Internet上任何地方發(fā)送文件。對(duì)于一個(gè)User-DTP,盡管RFC明確地定義請(qǐng)求一個(gè)服務(wù)器發(fā)送文件到另一個(gè)服務(wù)器是可以的,但現(xiàn)在這個(gè)方法并不是非常有效。這個(gè)協(xié)議的缺點(diǎn)是“能用來(lái)發(fā)送不能跟蹤的郵件和新

21、聞,給許多服務(wù)器造成打擊,用盡磁盤(pán),企圖越過(guò)防火墻”。</p><p>  UDP ICMP端口不能到達(dá)掃描:</p><p>  這種方法與上面幾種方法的不同之處在于使用的是UDP協(xié)議,而非TCP/IP協(xié)議。由于UDP協(xié)議很簡(jiǎn)單,所以?huà)呙枳兊孟鄬?duì)比較困難。這是由于打開(kāi)的端口對(duì)掃描探測(cè)并不發(fā)送確認(rèn)信息,關(guān)閉的端口也并不需要發(fā)送一個(gè)錯(cuò)誤數(shù)據(jù)包。幸運(yùn)的是許多主機(jī)在向一個(gè)未打開(kāi)的UDP端口發(fā)送數(shù)

22、據(jù)包時(shí),會(huì)返回一個(gè)ICMP_PORT_UNREACH錯(cuò)誤,這樣掃描者就能知道哪個(gè)端口是關(guān)閉的。UDP和ICMP錯(cuò)誤都不保證能到達(dá),因此這種掃描器必須還實(shí)現(xiàn)在一個(gè)包看上去是丟失的時(shí)候能重新傳輸。這種掃描方法是很慢的,因?yàn)镽FC對(duì)ICMP錯(cuò)誤消息的產(chǎn)生速率做了規(guī)定。同樣這種掃描方法也需要具有root權(quán)限。</p><p>  UDP recvfrom()和write() 掃描:</p><p>

23、;  當(dāng)非root用戶(hù)不能直接讀到端口不能到達(dá)錯(cuò)誤時(shí),Linux能間接地在它們到達(dá)時(shí)通知用戶(hù)。比如,對(duì)一個(gè)關(guān)閉的端口的第二個(gè)write()調(diào)用將失敗。在非阻塞的UDP套接字上調(diào)用recvfrom()時(shí),如果ICMP出錯(cuò)還沒(méi)有到達(dá)時(shí)回返回EAGAIN-重試。如果ICMP到達(dá)時(shí),返回ECONNREFUSED-連接被拒絕。這就是用來(lái)查看端口是否打開(kāi)的技術(shù)。</p><p><b>  常見(jiàn)端口掃描器</

24、b></p><p>  NSS(網(wǎng)絡(luò)安全掃描器)</p><p>  NSS由Perl語(yǔ)言編成,它最根本的價(jià)值在于它的速度,它運(yùn)行速度非??欤梢詧?zhí)行下列常規(guī)檢查:</p><p>  ■Sendmail </p><p><b>  ■匿名FTP </b></p><p><b&

25、gt;  ■NFS出口 </b></p><p><b>  ■TFTP</b></p><p>  ■Hosts.equiv</p><p><b>  ■Xhost</b></p><p>  利用NSS,用戶(hù)可以增加更強(qiáng)大的功能,其中包括:</p><p>

26、  ■AppleTalk掃描</p><p>  ■Novell掃描 </p><p><b>  ■LAN管理員掃描</b></p><p><b>  ■可掃描子網(wǎng)</b></p><p>  NSS執(zhí)行的進(jìn)程包括:</p><p>  ■取得指定域的列表或報(bào)告,該域原本

27、不存在這類(lèi)列表</p><p>  ■用Ping命令確定指定主機(jī)是否是活性的</p><p>  ■掃描目標(biāo)主機(jī)的端口 </p><p>  ■報(bào)告指定地址的漏洞 </p><p>  Strobe(超級(jí)優(yōu)化TCP端口檢測(cè)程序)</p><p>  strobe是一個(gè)TCP端口掃描器,它可以記錄指定機(jī)器的所有開(kāi)放端口。

28、strobe運(yùn)行速度快。</p><p>  strobe的主要特點(diǎn)是,它能快速識(shí)別指定機(jī)器上正在運(yùn)行什么服務(wù)。strobe的主要不足是這類(lèi)信</p><p>  息是很有限的,一次strobe攻擊充其量可以提供給“入侵者”一個(gè)粗略的指南,告訴什么服務(wù)可以</p><p>  被攻擊。但是,strobe用擴(kuò)展的行命令選項(xiàng)彌補(bǔ)了這個(gè)不足。比如,在用大量指定端口掃描主機(jī)

29、</p><p>  時(shí),可以禁止所有重復(fù)的端口描述。</p><p><b>  其他選項(xiàng)包括:</b></p><p>  ■定義起始和終止端口 ■定義在多長(zhǎng)時(shí)間內(nèi)接收不到端口或主機(jī)響應(yīng),便終止這次掃描。</p><p>  ■定義使用的socket號(hào)碼</p><p>  ■定義strob

30、e要捕捉的目標(biāo)主機(jī)的文件</p><p>  SATAN(安全管理員的網(wǎng)絡(luò)分析工具)</p><p>  SATAN是為UNIX設(shè)計(jì)的,它主要是用C和Perl語(yǔ)言編寫(xiě)的(為了用戶(hù)界面的友好性,還用了一些HTML技術(shù))。它能在許多類(lèi)UNIX平臺(tái)上運(yùn)行,有些根本不需要移植,而在其他平臺(tái)上也只是略作移植。</p><p>  SATAN用于掃描遠(yuǎn)程主機(jī)的許多已知的漏洞,其

31、中包括,但并不限于下列這些漏洞:</p><p>  ■FTPD脆弱性和可寫(xiě)的FTP目錄</p><p><b>  ■NFS脆弱性</b></p><p><b>  ■NIS脆弱性</b></p><p><b>  ■RSH脆弱性</b></p><p

32、><b>  ■Sendmail</b></p><p><b>  ■X服務(wù)器脆弱性</b></p><p><b>  Jakal </b></p><p>  Jakal是一個(gè)秘密掃描器,也就是就,它可以?huà)呙枰粋€(gè)區(qū)域(在防火墻后面),而不留下任何痕跡。秘密掃描器工作時(shí)會(huì)產(chǎn)生“半掃描”(ha

33、lf scans),它啟動(dòng)(但從不完成)與目標(biāo)主機(jī)的SYN/ACK過(guò)程。從根本上講,秘密掃描器繞過(guò)了防火墻,并且避開(kāi)了端口掃描探測(cè)器,識(shí)別出在防火墻后面運(yùn)行的是什么服務(wù)。(這里包括了像Courtney和GAbriel這樣的精制掃描探測(cè)器)</p><p>  IdentTCPscan </p><p>  IdentTCPscan是一個(gè)更加專(zhuān)業(yè)化的掃描器,其中加入了識(shí)別指定TCP端口進(jìn)程的

34、所有者的功能,也就是說(shuō),它能測(cè)定該進(jìn)程的UID??稍谌缦碌刂氛业娇截悾篽ttp://www.giga.or.at/pub/hacker/unix ; </p><p><b>  CONNECT</b></p><p>  CONNECT是一個(gè)bin/sh程序,它的用途是掃描TFTP服務(wù)子網(wǎng)。</p><p><b>  FSPSca

35、n</b></p><p>  FSPScan用于掃描FSP服務(wù)順。FSP代表文件服務(wù)協(xié)議,是非常類(lèi)似于FTP的Internet協(xié)議。它提供匿名文件傳輸,并且據(jù)說(shuō)具有網(wǎng)絡(luò)過(guò)載保護(hù)功能(比如,F(xiàn)SP從來(lái)不分叉)。FSP最知名的安全特性可能就是它記錄所有到來(lái)用戶(hù)的主機(jī)名,這被認(rèn)為優(yōu)于FTP,因?yàn)镕TP僅要求用戶(hù)的E-mail地址。 </p><p><b>  XSCAN

36、</b></p><p>  XSCAN掃描具有X服務(wù)器弱點(diǎn)的子網(wǎng)(或主機(jī))。XSCAN增加了一個(gè)功能:如果它找到了一個(gè)脆弱的目標(biāo),它會(huì)立即加入記錄。 </p><p>  XSCAN的其他優(yōu)點(diǎn)還包括:可以一次掃描多臺(tái)主機(jī)。這些主機(jī)可以在行命令中作為變量鍵入(并且你可以通過(guò)混合匹配同時(shí)指定主機(jī)和子網(wǎng))。</p><p><b>  本章小節(jié)&l

37、t;/b></p><p>  本章節(jié)著重介紹了TCP協(xié)議、UDP協(xié)議以及SOCKET接口的相關(guān)知識(shí)</p><p>  還大致介紹了TCP connect()掃描、CP SYN掃描、CP FIN 掃描、IP段掃描等幾種常規(guī)掃描模式。</p><p>  最后還介紹了NSS、Strobe、ATAN、Jakal等幾種常見(jiàn)的掃描工具。為網(wǎng)絡(luò)掃描工具的開(kāi)發(fā)打下了理論

38、基礎(chǔ)。</p><p><b>  端口掃描器的開(kāi)發(fā)</b></p><p><b>  開(kāi)發(fā)原理</b></p><p>  開(kāi)發(fā)端口掃描器需要用到控件,利用它與遠(yuǎn)程計(jì)算機(jī)建立連接,并通過(guò)用UDP協(xié)議或TCP協(xié)議進(jìn)行數(shù)據(jù)交換。這樣就能確認(rèn)遠(yuǎn)程計(jì)算機(jī)的端口開(kāi)放情況。由于TCP協(xié)議判斷遠(yuǎn)程計(jì)算機(jī)的信息比UDP協(xié)議準(zhǔn)確,所以本

39、文使用Winsock控件的TCP協(xié)議來(lái)開(kāi)發(fā)掃描器。</p><p>  首先在IP地址和端口的循環(huán)中動(dòng)態(tài)建立winsock套接字(Fsocket),在該套接字的通訊方式上選擇非阻塞方式(WSAAsyncSelect()),并在Fsocket套接字,線程內(nèi)分配的非可視控件句柄,網(wǎng)絡(luò)事件處理函數(shù)以及網(wǎng)絡(luò)事件消息(FD_CONNECT連接消息)之間建立相應(yīng)的關(guān)聯(lián)。設(shè)置好Fsocket的IP地址和相應(yīng)的端口號(hào)后,調(diào)用co

40、nnect()函數(shù)與遠(yuǎn)程目標(biāo)主機(jī)建立連接。調(diào)用WaitForSingleObject()函數(shù)等待網(wǎng)絡(luò)連接事件的發(fā)生,一旦連接成功將自動(dòng)調(diào)用自定義的 ReadData()函數(shù)處理相應(yīng)網(wǎng)絡(luò)消息。最后將網(wǎng)絡(luò)事件復(fù)位(ResetEvent)以便等待下一網(wǎng)絡(luò)事件發(fā)生,并取消在Fsocket套接字,線程內(nèi)分配的非可視化句柄,網(wǎng)絡(luò)事件處理函數(shù)以及網(wǎng)絡(luò)事件消息(FD_CONNECT連接消息)之間建立相應(yīng)的關(guān)聯(lián),關(guān)閉Fsocket. </p>

41、<p><b>  屬性</b></p><p>  LocalHostName | 本機(jī)名。</p><p>  LocalIP | 本機(jī)IP地址。</p><p>  LocalPort | 本機(jī)通信程序的端口(0\<端口\<65536)。</p><p>  RemoteHost | 遠(yuǎn)程

42、計(jì)算機(jī)名。</p><p>  RemotePort | 遠(yuǎn)程計(jì)算機(jī)的通信程序端口。</p><p>  state | 連接的當(dāng)前狀態(tài)。</p><p>  Protocal | 使用</p><p>  TCP或UDP協(xié)議。</p><p><b>  方法</b></p>&l

43、t;p>  Listen | 用于服務(wù)器程序,等待客戶(hù)訪問(wèn)。</p><p><b>  格式:</b></p><p>  Winsock對(duì)象.listenConnect | </p><p>  用于向遠(yuǎn)程主機(jī)發(fā)出連接請(qǐng)求。</p><p><b>  格式:</b></p>

44、<p>  Winsock對(duì)象.connect \[遠(yuǎn)程主機(jī)IP地址,遠(yuǎn)程端口]Accept | </p><p>  用于接受一個(gè)連接請(qǐng)求。</p><p><b>  格式:</b></p><p>  Winsock對(duì)象.accept Request IDSenddata | </p><p><

45、b>  用于發(fā)送數(shù)據(jù)。</b></p><p><b>  格式:</b></p><p>  Winsock對(duì)象.senddata 數(shù)據(jù)Getdata | </p><p>  用來(lái)取得接收到的數(shù)據(jù)。</p><p><b>  格式:</b></p><p&

46、gt;  Winsock對(duì)象.getdata 變量 \[,數(shù)據(jù)類(lèi)型 \[,最大長(zhǎng)度]]Close | </p><p><b>  用于關(guān)閉當(dāng)前連接。</b></p><p>  格式:Winsock對(duì)象.close</p><p><b>  事件</b></p><p>  Close | 遠(yuǎn)程

47、計(jì)算機(jī)關(guān)閉連接時(shí)觸發(fā)。</p><p>  Connect | 連接建立好,可以進(jìn)行通信時(shí)觸發(fā)(客戶(hù)端)。</p><p>  ConnectRequest | 有連接請(qǐng)求到達(dá)時(shí)觸發(fā)(服務(wù)器端)。</p><p>  DataArrival | 有數(shù)據(jù)到達(dá)時(shí)觸發(fā)。</p><p>  Error | 發(fā)生錯(cuò)誤時(shí)觸發(fā)。</p>&

48、lt;p>  SendProgress | 數(shù)據(jù)傳送進(jìn)度。</p><p><b>  開(kāi)發(fā)端口掃描器界面</b></p><p>  下面來(lái)開(kāi)VB開(kāi)始制作界面。首先構(gòu)造一個(gè)基本的掃描器界面,包括IP地址欄、端口欄、結(jié)果欄和速度設(shè)置欄。</p><p><b>  步驟1:</b></p><p&

49、gt;  新建一個(gè)窗體,在其中添加4個(gè) textbox控件,分別命名為“txtIP”、“txtLowerBound”、“”和“txtMaxConnections”。它們分別代表目標(biāo)IP地址、開(kāi)始端口、結(jié)束端口和速度線程數(shù)。再分別給這4個(gè)textbox控件加上frame控件,并將frame的caption值分別設(shè)置為目標(biāo)IP地址、端口范圍和線程數(shù)。這樣就顯得比較美觀。</p><p><b>  步驟2:

50、</b></p><p>  添加一個(gè)listbo控件,它用來(lái)顯示掃描的端口開(kāi)放結(jié)果,將其命名為lstOpenPorts。再添加三個(gè)控件,將其Caption值分別設(shè)置為掃描、停止和清除。</p><p><b>  步驟3 :</b></p><p>  添加一個(gè)Winsock控件,命名為“wskSocket”,同時(shí)添一個(gè)timer

51、控件,命名為“timTimer”。</p><p><b>  步驟4:</b></p><p>  為了顯示狀態(tài),在界面底部增加一個(gè)statusbar控件,將其命名為“sbMain”。它用來(lái)顯示速度及時(shí)間等信息。</p><p><b>  代碼編寫(xiě)</b></p><p>  Dim portn

52、um As Long  '設(shè)置變量!</p><p>  Dim start As String</p><p>  Private Sub cmdClear_Click()</p><p>  lstOpenPorts.Text = ""       '輸入的

53、文本</p><p><b>  End Sub</b></p><p>  Private Sub cmdScan_Click()</p><p>  If txtUB.Text = "" Or Text3.Text = "" Then     

54、0;   '如果.IF</p><p>  MsgBox "端口號(hào)不能為空??!"                  '提示</p><p><b>  Ex

55、it Sub</b></p><p><b>  End If</b></p><p>  Winsock1.Close '控件</p><p>  start = True</p><p>  Call SCanningPorts   '調(diào)用自定義的過(guò)程</p>

56、;<p>  stOpenPorts.Text = lstOpenPorts.Text & vbCrLf & "端口" & txtUB.Text & "-" & Text3.Text & "已經(jīng)掃描成功!"</p><p><b>  End Sub</b></p&

57、gt;<p>  Private Sub cmdStop_Click()</p><p>  start = False</p><p><b>  End Sub</b></p><p>  Sub SCanningPorts()     '自定義的過(guò)程</p>&l

58、t;p>  Dim porttwo As Long</p><p>  portnum = txtUB.Text</p><p>  porttwo = Text3.Text</p><p>  On Error GoTo viriio:</p><p><b>  Do</b></p><p&

59、gt;  portnum = portnum + 1</p><p><b>  DoEvents</b></p><p>  If start = True Then</p><p>  Winsock1.Close</p><p><b>  DoEvents</b></p>&l

60、t;p>  Winsock1.LocalPort = portnum</p><p><b>  DoEvents</b></p><p>  txtcon.Text = portnum</p><p>  Winsock1.Listen</p><p><b>  DoEvents</b>&

61、lt;/p><p><b>  Else</b></p><p>  portnum = 0</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  Winsock1.Close</p

62、><p><b>  DoEvents</b></p><p>  Loop Until portnum >= porttwo</p><p>  portnum = 0</p><p><b>  viriio:</b></p><p>  If Err.Number =

63、 10048 Then</p><p>  lstOpenPorts.Text = lstOpenPorts.Text & vbCrLf & "端口" & Winsock1.LocalPort & "開(kāi)放中"</p><p>  Resume Next</p><p><b>  En

64、d If</b></p><p><b>  End Sub</b></p><p>  Private Sub Form_Load()</p><p><b>  End Sub</b></p><p><b>  測(cè)試</b></p><p&

65、gt;<b>  對(duì)該軟件進(jìn)行測(cè)試:</b></p><p>  達(dá)到開(kāi)發(fā)目的,具備發(fā)現(xiàn)一個(gè)計(jì)算機(jī)或網(wǎng)絡(luò)的能力;具備發(fā)現(xiàn)一臺(tái)計(jì)算機(jī),就有發(fā)現(xiàn)目標(biāo)計(jì)算機(jī)正在運(yùn)行什么服務(wù)的能力;具備測(cè)試目標(biāo)計(jì)算機(jī)上的這些服務(wù),發(fā)現(xiàn)存在的漏洞的能力。</p><p><b>  本章小結(jié)</b></p><p>  開(kāi)發(fā)了一款簡(jiǎn)單的基于VB的網(wǎng)

66、絡(luò)端口掃描工具。并對(duì)其進(jìn)行了測(cè)試,在Windows NT/XP下穩(wěn)定運(yùn)行。</p><p><b>  結(jié)束語(yǔ)</b></p><p>  通過(guò)一個(gè)多月緊張有序的學(xué)習(xí)與研究,圓滿(mǎn)完成了本次課程研究。在本次課程研究中主要采取了百度加咨詢(xún)學(xué)長(zhǎng)的方式。</p><p>  通過(guò)這次對(duì)端口掃描工具的研究,我真正體會(huì)到了端口掃描的重要性。這次課程設(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ù)僅提供信息存儲(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)論