vc++ 掃描器

一、前言

一個端口就是一個潛在的通信通道,也是一個入侵通道。對計算機進行端口掃描能得到許多有用的信息。進行掃描的方法 有多種,可以手動進行掃描,也可以用端口掃描軟件進行。在手工進行掃描時,需要熟悉各種命令,對命令執行後的輸出進行分析。用掃描軟件進行掃描時,掃描軟 件可以做相應的數據分析功能。

本文介紹了掃描器工作原理及技術優點,最後用程序製作一個簡單掃描器。

二、掃描器工作原理及技術優點

掃描器是一種自動檢測遠程或本地主機安全性弱點的程序,通過使用掃描器可以不留痕跡地發現遠程服務器的各種TCP端口的分配及提供的服務和它們所使用的軟件版本!這些信息可以間接地瞭解遠程主機所存在的安全問題。

掃描器的工作原理是:通過連接遠程TCP/IP不同端口,並記錄目標給予的應答。通過這種方法,可以蒐集到很多有關主機的各種信息(是否能夠匿名登錄;是否有可寫的FTP目錄;是否能用TELNET;HTTPD是用ROOT還是nobady在運行……)。

掃描器的一個主要功能就是發現一個主機或網絡並檢查有什麼服務正運行在這臺主機上,更進一步還能測試這些服務,發 現系統漏洞。要實現這些功能,只需要採用罪簡單的TCP connect()掃描。操作系統提供的connect()系統調用,用來與每一個目標計算機端口進行連接。如果端口處於偵聽狀態,那麼connect ()就能夠成功;否則這個端口不能使用,即沒有提供服務。

這個技術的最大有點是:無需任何權限。系統中的任何用戶都有權利使用這個調用。另一個好處是速度,如果對每個目標 端口以線性的方式,使用單獨的connect()調用,那將會花費相當長的時間。我們可以同時打開多個socket,從而加速掃描。使用非阻塞I/O允許 設置一個較低的時間用盡週期,同時觀察多個socket。

三、程序實現步驟

① 用AppWizard建立一個基於對話框的應用程序,注意,程序需要選擇支持WinSocket。

爲對話框添加資源,得到如下圖一個界面。上面爲一個IP地址,下面爲一個編輯框,添加按鈕“掃描”,它的ID爲ID_SCAN。

自制掃描器界面圖

② 添加控制變量,如下表:

③ 添加函數TestConnection

函數主要通過建立一個SOCKET,然後通過CONNECT方法測試端口是否打開。主要代碼如下:

bool CPortScanDlg ::TestConnection (CString IP , UNIT nPort)

{

CSocket* pSocket;

pSocket = new CSocket;

ASSERT ( pSocket );

If ( !pSocket -> Create ( ) )

{

delete pSocket;

pSocket = Null;

return FALSE;

}

while ( ! pSocket ->Connect ( IP , nPort ) )

{

delete pSocket ;

pSocket = NULL ;

return FALSE ;

}

pSocket -> close ( );

delete pSocket ;

return TRUE ;

}

④ 爲ID_SCAN 添加函數。

簡單接受數據,並調用TestConnection ( ip , port ) 函數就可以了。

至此,端口掃描程序就完成了,它實現了很簡單的檢測端口的功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章