论坛: 编程破解 标题: VB原创源代码:一个完整的端口扫描器(详细讲解) 复制本贴地址    
作者: jhkdiy [jhkdiy]    版主   登录
                    用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。

程序界面:


整个程序的流程图:


源代码下载: http://www.cndevx.com/club/viewfile.asp?ID=5190

[此贴被 jhkdiy(jhkdiy) 在 01月11日23时37分 编辑过]

地主 发表时间: 04-01-11 23:14

回复: zybzc [zybzc]   论坛用户   登录
无条件扫描啊  直接加代理选项在软件里可否? 

B1层 发表时间: 04-01-12 02:05

回复: 286 [unique]   版主   登录
本地扫描你采用listen,就我感觉,listen要建立套接字,是要耗费很大资源的呀,我没来得及看你的源程序,但看流程图,如果建立成功,没有关闭命令,这样会不会你扫描完一次,你的端口全开了,再扫描结果就不对了.
链接打不开.
不过,我感觉大家都应该有这样的气氛,以编程技术为主,而不要天天只是讨论某个工具怎么用.

B2层 发表时间: 04-01-12 09:55

回复: jhkdiy [jhkdiy]   版主   登录
其实我这个流程图只画出了程序的大概流程,有很多我是省略了的。

B3层 发表时间: 04-01-12 13:00

回复: 286 [unique]   版主   登录


B4层 发表时间: 04-01-12 13:18

回复: TomyChen [quest]   版主   登录
顶一下,没看代码:(不懂VB,哈哈,怕看了头痛。


我觉得就扫描而言根本没必要从1-65535全扫了,而是把常要扫的直接放代码里,然后允许用户修改.ini文件[或者其他文件吧]扫描端口,增大灵活性和速度。

支持支持

B5层 发表时间: 04-01-13 08:43

回复: jhkdiy [jhkdiy]   版主   登录
我也顶!

B6层 发表时间: 04-01-15 00:32

回复: jhkdiy [jhkdiy]   版主   登录
我顶

B7层 发表时间: 04-01-17 22:46

回复: 小阿哥 [feixunwb]   论坛用户   登录
兄台猛男也
精神支持兄台那个"顶"!!

B8层 发表时间: 08-02-24 09:24

回复: studentol [studentol]   论坛用户   登录
很好的思路 ,对于菜鸟来说是了解vb和windows下api(网络)编程的例子。
但这中思路很明显是不利于实际使用的 单单是效率问题就够头痛的 更牵扯上隐蔽和反侦察的特性的缺失。 及时在90年代 这种程序也是无法使用的 。
黑客精神是 创新精神,而同志您的 程序和普通的利用 printf函数的程序本质上无差别。

现在,很多人都误导了 。对程序的 理解。
希望这些话能让你真正接触到编程的 大门

B9层 发表时间: 08-03-31 17:21

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号