欢迎来到天天文库
浏览记录
ID:20243766
大小:83.50 KB
页数:8页
时间:2018-10-11
《端口扫描器实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《综合课程设计》题目:端口扫描器的实现院、系:计算机科学与工程学科专业:学号:学生姓名:指导教师:2012年10月71引言1.1课题的背景及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。入侵者们是如何找到,并打开它们的城门呢?这些城门究竟通向何处?在网络中,把这些城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜索信息的几种常用方法之一,也正是这一种方法最容易暴露入侵者的身份和意图。一般说来,扫描端口有以下目的:判断目标主机上开放了哪些服务判断目标主机的操作系统如果
2、入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能使用相应的手段实现入侵。而如果管理员先掌握了这些端口服务的安全漏洞,就能采取有效的安全措施,防范相应的入侵。1.2端口扫描现状计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。端口扫描技术是发现安全问题的重要手段之一。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给
3、予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息,从而发现目标机的某些内在的弱点。2系统设计2.1系统主要目标本程序主要实现了:简易的TCPconnect()扫描,支持多线程;UDP扫描功能;能对单个指定的主机进行扫描或扫描指定网段内的主机;能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描;2.2开发环境及工具测试平台:WindowsXPProfessional使用软件:VisualC++6.0开发语言:C语言2.3功能模块与系统结构7作为端口扫描程序,首先需要完成的功能就是对于系统操
4、作系统的服务端口进行扫描,返回扫描结果。对于端口的扫描,包括对于本机系统服务端口,局域网内目标机系统,以及远程IP的系统服务端口进行扫描。有些时候,用户并不需要去扫描整个系统的所有端口,因为这样的话不仅会浪费大量的时间,而且可能导致难以找到自己需要了解的端口的扫描结果。所以,对于选择性地对端口进行扫描也非常重要。这当然也是扫描程序需要实现的功能之一。用户在等待扫描的时候,往往希望知道它的工作进度。这样用户可以更好地控制自己的操作。站在用户的角度思考,设置进度是程序需要完成的,这样就能知道程序扫描的进度。系统必须提
5、供的服务是功能需求的基本,本着站在用户角度思考的原则,做出如上叙述需求,从简列举如下:扫描功能;端口选择功能;进度显示功能;端口扫描程序功能模块如下图所示:端口扫描系统操作显示设置地址设置端口设置协议开始扫描进度显示结果显示程序运行流程图:7开始开始扫描设置扫描参数(IP、端口、协议)读入用户设置的IP、端口号、协议nowAddr=StartAddri=0初始化进度条进行TCP扫描nowAddr<=EndAddri++i6、t_TCP,&inforabout,0,0,0,NULL)nowAddr++nowAddr<=EndAddrnowAddr=StartAddri=0i7、的初始化指定端口号的保存3.1TCPconnect()扫描这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I8、/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。3.1.1基本原理调用connect()函数,根据返回值来判断端口是否打开的,connect()函数返回0说明建立连接成功,说明该端口是打开的,就将该端口保存进静态字符串变量中,然后关
6、t_TCP,&inforabout,0,0,0,NULL)nowAddr++nowAddr<=EndAddrnowAddr=StartAddri=0i7、的初始化指定端口号的保存3.1TCPconnect()扫描这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I8、/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。3.1.1基本原理调用connect()函数,根据返回值来判断端口是否打开的,connect()函数返回0说明建立连接成功,说明该端口是打开的,就将该端口保存进静态字符串变量中,然后关
7、的初始化指定端口号的保存3.1TCPconnect()扫描这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I
8、/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。3.1.1基本原理调用connect()函数,根据返回值来判断端口是否打开的,connect()函数返回0说明建立连接成功,说明该端口是打开的,就将该端口保存进静态字符串变量中,然后关
此文档下载收益归作者所有