论文部分内容阅读
随着科学技术的飞速发展,计算机技术和网络技术,均已深入到人类社会的各个领域,然而,网络技术的发展在给我们带来便利的同时也带来了巨大的安全隐患,特别是Internet大范围的开放以及金融领域网络的接入,使得越来越多的系统遭到入侵攻击的威胁。但是,不管入侵者是从外部还是从内部攻击某一网络系统,攻击机会都是通过挖掘操作系统和应用服务程序的弱点或者缺陷来实现的。就目前系统的安全状况而言,系统中存在着一定的漏洞,因此也就存在着潜在的安全威胁,但是,如果我们能够根据具体的应用环境,尽可能地早地通过网络扫描来发现这些漏洞,并及时采取适当的处理措施进行修补,就可以有效地阻止入侵事件的发生。因此,网络扫描非常重要和必要。Java是由美国Sun Microsystem,Inc.开发出来的一种面向对象的语言,它已经广泛用于Internet上以完成一些HTML无法完成的功能。Java有简单、稳定、安全、界面友善等几大特点,而且对于UNIX,Macintosh或者PC机都能使用,特别适合开发Internet应用程序。由于Java程序具有与硬件无关、与平台无关、可靠性高、安全稳定和支持多线程等特点,在当今的计算机和网络中占据重要的地位。本文以Java语言为基础,设计了一种端口扫描器,它可以采用多线程方式对指定IP地址进行安全漏洞扫描,提供了图形界面操作方式,扫描内容包括:标准端口状态扫描、端口运行服务的扫描、IP地址版本号及类别和本地主机名的查询、还有获得目标计算机的MAC地址。本文所设计的扫描器从人性化角度出发,给用户提供了用户界面,使得用户即使不是计算机的专业人士,也可以轻松的通过点击按钮实现对端口的扫描,方便浏览,易于查看结果。并且在界面上提供了随时可以停止扫描的按钮,可以随时终止程序的运行。应用多线程技术提高扫描速率是本程序的主要特点。所谓多线程就是说同时在本地系统开辟多个socket连接,在同一时间内扫描多个服务器,这样做的好处是提高了扫描速度,节省时间,根据系统的资源配置高低,线程数字也可以自行设定(设定太高容易造成系统崩溃)。在进行端口扫描时,扫描者可以根据扫描主机的配置情况和扫描的范围自定义扫描所开启的线程数,开启多个线程同时对目标主机端口进行探测;同时程序添加了扫描端口并检查有什么服务正运行在这台主机上,更进一步还能测试这些服务,发现系统漏洞。测试发现,在单线程情况下扫描一个端口平均需要1.5s,在开启25个线程时扫描一个端口平均只需要50ms,扫描速率大约提高了30倍。