|
![]() | 作者: 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 [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号