📄 讲解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 + -