?? 講解proscan.txt
字號:
用VB編寫一個完整的端口掃描器
作者:jhk
E-Mail:jhkdiy_gzb@21cn.net
日期:2004年1月11日
聲明:
如果大家要轉貼或修改的話,請保留作者信息,而且修改或糾正部分
要獨立另起一段,不要將原文隨意插入文字,這是我對讀者唯一的要
求,請大家合作,也請大家對此文錯漏的地方給予指明和改正,謝謝
題外:
jhk也放假了,在網上論壇看到許多編程新手和想學編程的網友經常不知道
如何選擇語言,就VB、Delphi、C++、匯編等等語言的選擇經常爭吵的很激
烈,我想說的是:語言只是工具,是實現你想法的工具,就好像古時習武之人
用劍一樣,劍有好有壞,再好的劍都有缺點,沒有一把劍是完美的,因為人本
來就不完美,那么人制造出來的東西能完美嗎?所以,如果你選定了一種語言
來學的話,就別管其他人怎樣說這種語言怎么不好,走自己的路;當然,我也
不是說一生就只學一種語言,相反,如果能掌握幾種語言的話就最好了,我在
這里說的掌握語言只是說工具,編程最重要的是什么?是這個語言容易?是這
個語言強大?我個人覺得編程最重要的是算法,因為只要你掌握了算法,那么
用那個語言實現都可以,當然,如果這時你會幾種語言的話,你就可以挑選最
適合實現這個算法的語言了;好了,不說這么多了,免得大家打瞌睡了,我想
說的也就這些了,預祝大家新春快樂,技術更上一層樓。
該程序實現的功能:
總體分為本地掃描和遠程掃描,本地掃描功能是對自己的機子端口進行掃
描,速度可以很快;遠程掃描可以對一個或多個IP進行掃描,一次可以掃描一
個C類,而且對于單個主機可以用域名來代替IP;支持單一端口和多端口掃描,
掃描報告自動滾屏,而且很詳細,可以保存掃描報告,可以隨時設定掃描的速
度。
實現原理:
在這里我先假定讀者已對VB中的Winsock控件有一定的了解,如果不了解的
話就要先補習補習嘍。
其實這個端口掃描器完全是利用Winsock控件來實現了,本地掃描是利用了
Winsock控件的一個屬性來實現的,即LocalPort屬性,當給這個控件設定一個
端口后,然后調用偵聽的方法,即Winsock1.Listen,如果該端口已經被其它程
序占用的話,就會發生錯誤,關鍵就在這里了,我們只要對錯誤進行分析,如果
錯誤號是10048的話,即表明這個端口已經被其它程序調用,Winsock不能再用了
,此時我們就可以記下這個已被占用的端口,然后又用下一個端口試試該端口是
否被其它程序占用了,就這樣一直試下去,以達到掃描本地端口的目的。
遠程端口掃描是利用了Winsock控件的Connect方法,程序嘗試連接一個IP的
指定端口,如果連接成功的話,Winsock控件即會發生Connect事件,這樣,我們
就可以在Connect事件中記錄下成功連接的端口,然后進行下一個端口的連接,如
果這個IP的預先設定端口都連接完了,程序就進行下一個IP的掃描。
整個程序我都大量注悉了,特別是遠程掃描函數RemoteScanIP,和多IP掃描
原理部分,如果還是有疑問的話,請發貼或聯系我,我會盡能力解悉。
程序開發平臺:Win2000+VB6中文版。
運行測試平臺:Win98、Win2000、WinXP。
整個程序的流程圖:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -