网络安全实验报告
网络安全实验总结5篇

网络安全实验总结5篇篇1一、引言随着信息技术的迅猛发展,网络安全问题日益受到重视。
为了提升自身对网络安全的理解和掌握,我们进行了一系列网络安全实验。
本文将对这些实验进行全面总结,旨在分析实验过程、总结实验成果,并提炼出对未来工作的启示。
二、实验过程1. 实验准备在实验开始前,我们进行了充分的准备工作。
首先,我们设计了一套全面的实验方案,明确了实验的目标、内容和方法。
其次,我们搭建了实验环境,包括配置了相应的网络设备、安装了必要的软件工具等。
最后,我们对参与实验的人员进行了培训,确保他们能够熟练掌握实验所需的技能和知识。
2. 实验实施在实验过程中,我们严格按照实验方案进行操作。
首先,我们对网络系统进行了全面的漏洞扫描,以发现潜在的安全隐患。
其次,我们针对发现的漏洞进行了详细的分析和评估,确定了漏洞的严重程度和可能带来的影响。
然后,我们根据漏洞分析的结果,制定了相应的修复方案,并对网络系统进行了及时的修复和加固。
此外,我们还进行了网络攻击模拟实验。
通过模拟常见的网络攻击场景,如暴力破解、SQL注入等,我们验证了网络系统的安全防护能力。
在模拟攻击过程中,我们发现了一些安全防护的不足之处,并及时进行了改进和优化。
三、实验成果通过本次网络安全实验,我们取得了以下成果:1. 提升了网络安全防护能力。
通过对网络系统的全面漏洞扫描和修复加固,我们显著提高了网络系统的安全性。
同时,通过模拟攻击实验,我们也发现了安全防护的不足之处,并进行了相应的改进和优化。
2. 增强了团队成员的网络安全意识。
通过实验前的培训和实验过程中的讨论与交流,团队成员对网络安全的重要性有了更深刻的认识,并掌握了一定的网络安全技能和知识。
3. 为未来的网络安全工作提供了有益的参考。
本次实验不仅提升了我们的网络安全防护能力还为我们提供了宝贵的实践经验为未来的网络安全工作奠定了坚实的基础。
四、启示与建议通过本次网络安全实验我们得到了以下启示和建议:1. 网络安全需要持续关注和重视。
网络安全基础实验报告

网络安全基础实验报告实验目的:本实验旨在通过实践操作,掌握网络安全基础知识和技能,并了解并实践常见的网络安全攻防技术。
实验材料:1. 一台计算机2. 一台网络服务器3. 一台防火墙设备实验过程:1. 建立实验环境:将计算机、网络服务器和防火墙设备连接至同一局域网络中。
2. 实施攻击:使用计算机对网络服务器发起常见的网络攻击,如端口扫描、ARP欺骗、DDoS攻击等。
3. 监控防御:观察防火墙设备对攻击行为的识别和阻断情况,并分析攻击者的攻击手法和目的。
4. 实施防御:根据攻击行为和攻击者的目的,调整防火墙设备的配置,加强对网络服务器的防护能力,确保网络安全。
5. 检测恢复:使用网络安全检测工具对网络服务器进行检测,验证防火墙配置的有效性。
6. 总结分析:根据实验结果和经验,总结网络安全攻防的基本原则和技巧,并提出改进建议。
实验结果:1. 攻击行为识别和阻断情况良好,网络服务器受到的攻击次数明显减少。
2. 防火墙配置调整有效,网络服务器的安全性得到显著提升。
3. 防火墙检测工具显示网络服务器的安全性良好,未发现异常情况。
实验结论:通过本实验,成功掌握了网络安全基础知识和技能,并了解了常见的网络安全攻防技术。
通过合理配置防火墙设备,可以有效地防止网络攻击并维护网络安全。
改进建议:1. 进一步学习和研究网络安全领域的最新技术和攻防策略,及时更新防火墙设备的配置。
2. 定期进行网络安全演练和实践,提高网络安全防护意识和应急响应能力。
3. 加强对网络服务器的监控和日志管理,及时发现和处理安全事件。
4. 定期与网络安全专家进行交流和合作,共同提高网络安全防护水平。
网络安全测试报告

网络安全测试报告1. 介绍该网络安全测试报告提供了对公司网络安全状态的全面评估。
测试旨在发现网络中存在的潜在风险和漏洞,并提供相应的建议以加强网络安全。
2. 测试方法网络安全测试采用了多种方法和技术,包括但不限于以下几种:- 漏洞扫描:通过使用自动化工具,对网络进行扫描以发现已知的漏洞和弱点。
漏洞扫描:通过使用自动化工具,对网络进行扫描以发现已知的漏洞和弱点。
- 渗透测试:通过模拟真实攻击,测试网络的易受攻击性和抵御攻击的能力。
渗透测试:通过模拟真实攻击,测试网络的易受攻击性和抵御攻击的能力。
- 密码破解测试:测试系统中的密码强度和安全性,以确保密码的保密性。
密码破解测试:测试系统中的密码强度和安全性,以确保密码的保密性。
- 社交工程测试:测试公司员工对钓鱼和其他社交工程攻击的识别和应对能力。
社交工程测试:测试公司员工对钓鱼和其他社交工程攻击的识别和应对能力。
3. 测试结果经过全面测试,我们发现了以下网络安全方面的问题和潜在风险:3.1 漏洞和弱点- 存在多个操作系统和应用程序的未修复漏洞,这可能导致恶意攻击者入侵系统。
- 系统和应用程序缺乏必要的安全补丁和更新,容易受到已知攻击的攻击方式。
3.2 密码强度和安全性- 发现部分用户账户和系统管理员账户使用弱密码,容易受到密码破解攻击。
- 缺乏密码策略和强制更改密码的机制,增加了密码泄露和滥用的风险。
3.3 社交工程攻击4. 建议和改进措施以下是加强网络安全的建议和改进措施:4.1 漏洞修复和更新管理- 立即修复已检测到的操作系统和应用程序的漏洞,以尽快消除潜在风险。
- 建立漏洞管理流程,定期检查和更新系统的安全补丁。
4.2 强密码和密码策略- 强制所有用户更换弱密码,并采用复杂的密码策略,包括最小密码长度、特殊字符要求等。
- 定期提醒用户更改密码,并限制密码的重复使用和保存明文存储。
4.3 员工培训和教育- 建立紧急事件响应计划,培训员工应对网络安全事件和其他紧急情况。
网络安全实验

网络安全实验在当今数字化的时代,网络已经成为了人们生活、工作和学习中不可或缺的一部分。
然而,随着网络的普及和发展,网络安全问题也日益凸显。
网络安全实验作为研究和解决网络安全问题的重要手段,对于保障网络的稳定、可靠和安全运行具有至关重要的意义。
网络安全实验的目的是通过模拟真实的网络环境和攻击场景,对网络系统的安全性进行评估和测试,发现潜在的安全漏洞和威胁,并提出相应的防范和解决方案。
这些实验可以帮助我们更好地了解网络攻击的手段和方法,提高网络安全意识和防范能力,从而有效地保护网络系统和用户的信息安全。
网络安全实验通常包括以下几个方面的内容:一、网络攻击技术实验网络攻击技术是网络安全实验的重要组成部分。
通过模拟各种网络攻击手段,如病毒攻击、蠕虫攻击、黑客攻击、拒绝服务攻击等,研究其攻击原理和方法,分析其对网络系统造成的危害和影响。
在进行网络攻击技术实验时,需要严格遵守法律法规和道德规范,不得将实验结果用于非法目的。
例如,在病毒攻击实验中,可以模拟病毒的传播过程,研究病毒的感染机制和防范措施。
通过分析病毒的代码结构和传播途径,开发相应的杀毒软件和防护策略,提高网络系统对病毒攻击的抵御能力。
二、网络防御技术实验网络防御技术是保障网络安全的关键。
网络防御技术实验包括防火墙技术、入侵检测技术、加密技术、访问控制技术等方面的实验。
通过搭建实验环境,测试和评估各种防御技术的性能和效果,优化网络防御体系,提高网络系统的安全性。
以防火墙技术实验为例,可以设置不同的防火墙规则和策略,模拟网络攻击流量,观察防火墙的过滤和拦截效果。
通过调整防火墙的参数和配置,提高其对非法访问和攻击的识别和阻止能力。
三、网络安全漏洞检测实验网络安全漏洞是网络系统中的薄弱环节,容易被攻击者利用。
网络安全漏洞检测实验旨在发现网络系统中存在的安全漏洞,并及时进行修复和加固。
漏洞检测实验可以采用漏洞扫描工具、渗透测试等方法,对网络系统的硬件、软件、操作系统、应用程序等进行全面的检测和分析。
网络安全测试报告

网络安全测试报告网络安全测试报告一、背景描述在当前数字化时代,网络安全已经成为企业信息化建设和运营中不可忽视的重要环节。
为了确保网络系统的安全性,本次测试针对某公司的网络系统进行了全面的安全测试。
二、测试目的1. 评估网络系统的安全性2. 发现可能存在的安全漏洞和风险3. 提供改进网络系统安全方案的建议三、测试方法和范围本次测试采用黑盒测试方法,模拟了外部攻击者的攻击手段,测试范围包括系统的网络连接、用户认证、数据传输、防护措施等多个环节。
四、测试结果1. 系统网络连接通过对系统进行端口扫描,发现了一些未使用的服务端口仍然处于开放状态,需关闭这些不必要的服务端口,减少安全风险。
2. 用户认证尝试使用常见的用户名和密码组合进行暴力破解,发现有部分用户使用了弱密码,建议加强对密码的复杂度要求,并定期更新密码。
3. 数据传输对系统中的数据传输进行了嗅探和篡改测试,并发现系统对数据传输过程中的加密和完整性保护措施较为薄弱,建议增加数据的加密算法和数字签名机制,确保数据传输的安全性。
4. 防护措施系统部署了防火墙、入侵检测系统(IDS)等安全产品。
通过模拟攻击测试,发现系统防火墙规则存在缺陷,需要修改配置;IDS对恶意文件的检测率较低,需要更新检测引擎。
五、风险评估和建议综合测试结果,对网络系统的安全性进行风险评估,并提出改进建议。
1. 风险等级:高2. 建议:- 关闭不必要的服务端口,减少入侵的可能性;- 强制要求用户使用强密码,并定期更新密码;- 增强数据传输过程中的加密和完整性保护措施;- 对防火墙规则进行修订,提高系统的防护能力;- 更新入侵检测系统的检测引擎,提高恶意文件的检测率。
六、改进计划根据测试结果和建议,制定了改进计划:1. 针对系统的网络连接问题,尽快关闭不必要的服务端口;2. 开展员工的网络安全培训,提高密码安全意识;3. 引入更加安全的通信协议,加强对数据的加密和完整性保护;4. 梳理并修订防火墙规则,提高系统的安全性;5. 更新入侵检测系统的检测引擎,增强系统的安全防护能力。
网络安全实验报告[共五篇]
![网络安全实验报告[共五篇]](https://img.taocdn.com/s3/m/1aa839ecd05abe23482fb4daa58da0116c171f0c.png)
网络安全实验报告[共五篇]第一篇:网络安全实验报告实验一:网络扫描实验【实验目的】了解扫描的基本原理,掌握基本方法,最终巩固主机安全【实验内容】1、学习使用Nmap的使用方法2、学习使用漏洞扫描工具【实验环境】1、硬件 PC机一台。
2、系统配置:操作系统windows XP以上。
【实验步骤】1、端口扫描1)解压并安装ipscan15.zip,扫描本局域网内的主机2)解压nmap-4.00-win32.zip,安装WinPcap运行cmd.exe,熟悉nmap命令(详见“Nmap详解.mht”)。
3)试图做以下扫描:扫描局域网内存活主机,扫描某一台主机或某一个网段的开放端口扫描目标主机的操作系统试图使用Nmap的其他扫描方式,伪源地址、隐蔽扫描等2、漏洞扫描解压X-Scan-v3.3-cn.rar,运行程序xscan_gui.exe,将所有模块选择扫描,扫描本机,或局域网内某一台主机的漏洞【实验背景知识】1、扫描及漏洞扫描原理见第四章黑客攻击技术.ppt2、NMAP使用方法扫描器是帮助你了解自己系统的绝佳助手。
象Windows 2K/XP 这样复杂的操作系统支持应用软件打开数百个端口与其他客户程序或服务器通信,端口扫描是检测服务器上运行了哪些服务和应用、向Internet或其他网络开放了哪些联系通道的一种办法,不仅速度快,而且效果也很不错。
Nmap被开发用于允许系统管理员察看一个大的网络系统有哪些主机以及其上运行何种服务。
它支持多种协议的扫描如UDP,TCP connect(),TCP SYN(half open), ftp proxy(bounce attack),Reverse-ident, ICMP(ping sweep), FIN, ACK sweep,Xmas Tree, SYN sweep,1 和Null扫描。
可以从SCAN TYPES一节中察看相关细节。
Nmap还提供一些实用功能如通过tcp/ip来甄别操作系统类型、秘密扫描、动态延迟和重发、平行扫描、通过并行的PING侦测下属的主机、欺骗扫描、端口过滤探测、直接的RPC扫描、分布扫描、灵活的目标选择以及端口的描述。
(全程版)网络安全检测报告(信息安全)

(全程版)网络安全检测报告(信息安全)1. 背景本次网络安全检测报告旨在对目标系统进行全面的信息安全评估和检测。
通过对系统的安全性进行评估,可以发现潜在的安全风险和漏洞,并提出相应的解决方案,以确保系统的安全性和稳定性。
2. 检测范围本次网络安全检测主要针对目标系统的以下方面进行评估:- 网络架构和拓扑- 系统漏洞和弱点- 访问控制和权限管理- 安全策略和防御措施- 数据保护和加密- 应急响应和恢复能力3. 检测方法为了保证检测的全面性和准确性,本次网络安全检测采用了以下方法:- 主动扫描:使用网络扫描工具对目标系统进行主动扫描,识别系统中存在的漏洞和弱点。
- 安全配置审计:对系统的安全配置进行审计,发现配置不当的情况,并提出相应的改进建议。
- 渗透测试:模拟黑客攻击的方式,测试系统的安全性,并评估系统的防御能力。
- 日志分析:对系统日志进行分析,检测异常行为和潜在的安全威胁。
4. 检测结果4.1 网络架构和拓扑经过对网络架构和拓扑的评估,系统的网络结构合理,拓扑图清晰,各网络设备间的连接也较为安全可靠。
4.2 系统漏洞和弱点经过主动扫描和渗透测试,发现系统中存在一些已知的漏洞和弱点。
建议及时更新系统和应用程序的补丁,修补这些漏洞,并加强系统的安全配置。
4.3 访问控制和权限管理对系统的访问控制和权限管理进行审计后,发现存在一些权限设置不当的情况,可能导致未授权的访问和敏感信息泄露的风险。
建议对访问控制策略进行调整,并加强对用户权限的管理和控制。
4.4 安全策略和防御措施经过安全策略和防御措施的审计,发现系统中的安全策略设置较为完善,但仍存在一些不足之处。
建议加强入侵检测和防火墙等防御措施的配置和管理,以提升系统的安全性。
4.5 数据保护和加密对系统的数据保护和加密进行评估后,发现系统中的敏感数据得到了一定程度的保护,但仍存在一些弱点。
建议加强对敏感数据的加密和访问控制,以确保数据的安全性和隐私保护。
网络安全测试报告

网络安全测试报告一、测试目的。
网络安全测试是为了评估一个网络系统的安全性,发现其中的安全漏洞和弱点,以及提供解决方案和建议,保障网络系统的安全和稳定运行。
本次网络安全测试的目的在于对公司内部网络系统进行全面的安全性检测,发现潜在的安全风险,提出改进建议,保障公司信息资产的安全。
二、测试范围。
本次网络安全测试主要针对公司内部网络系统进行测试,包括但不限于服务器、数据库、应用系统、网络设备等。
测试内容涵盖网络拓扑结构、访问控制、身份认证、数据加密、漏洞扫描、安全策略等方面。
三、测试方法。
1. 网络拓扑结构测试,通过对网络拓扑结构进行分析,识别网络设备、服务器等的位置和连接方式,检测是否存在未授权接入点。
2. 访问控制测试,测试网络系统的访问控制机制,包括密码复杂性、账号锁定策略、访问权限管理等。
3. 漏洞扫描测试,利用专业的漏洞扫描工具对网络系统进行全面扫描,发现系统中存在的漏洞和弱点。
4. 安全策略测试,测试网络系统的安全策略是否完善,包括防火墙配置、入侵检测系统、反病毒软件等的有效性和完整性。
5. 数据加密测试,测试数据传输和存储过程中的加密机制,确保敏感数据的安全性。
四、测试结果。
1. 网络拓扑结构测试结果显示,公司内部存在部分未授权接入点,存在一定的安全隐患,建议加强网络设备的访问控制。
2. 访问控制测试发现,部分账号密码设置较为简单,存在被破解的风险,建议加强密码策略,设置复杂性要求。
3. 漏洞扫描测试共发现了10个漏洞,其中5个为高危漏洞,需要尽快修复,以免被攻击者利用。
4. 安全策略测试结果显示,公司的防火墙配置不够严密,需要加强对外部网络的访问控制,以防止未经授权的访问。
5. 数据加密测试发现,部分敏感数据传输过程中未进行加密处理,存在泄露风险,建议加强数据加密措施。
五、改进建议。
1. 加强网络设备的访问控制,限制未授权设备的接入,提高网络安全性。
2. 加强密码策略,要求员工设置复杂性密码,并定期更换,防止被破解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络安全实验报告姓名:***班级:自动化86学号:********实验一:网络命令操作与网络协议分析一.实验目的:1.熟悉网络基本命令的操作与功能。
2.熟练使用网络协议分析软件ethereal分析应用协议。
二.实验步骤:1.网络命令:ping tracert netstat ipconfig telnetnetcat Arp route nslookup Ssh2.协议分析软件:ethereal的主要功能:设置流量过滤条件,分析网络数据包,流重组功能,协议分析。
三.实验任务:1.跟踪某一网站如google的路由路径2.查看本机的MAC地址,ip地址输入ipconfig /all找见本地连接.Description . . .. . : SiS 900-Based PCI Fast Ethernet AdaptePhysical Address.. . : 00-13-8F-07-3A-57DHCP Enabled. . .. . : NoIP Address. . . .. . : 192.168.1.5Subnet Mask . . .. . : 255.255.255.0Default Gateway .. . : 192.168.1.1DNS Servers . . .. . : 61.128.128.67192.168.1.1Default Gateway .. . : 192.168.1.1这项是网关.也就是路由器IP Physical Address.. . : 00-13-8F-07-3A-57 这项就是MAC地址了.5.nc应用:telnet,绑定程序(cmd,shell等),扫描,连接等。
6.选择任意一种应用层协议如www,ftp,qq等,利用ethereal对该协议进行分析。
实验报告要求有ethereal捕获的网络流量和数据包协议解析的屏幕截图。
7分析honeynet challenge dataset的真实攻击网络流量利用ethereal捕获的网络流量如下图所示:分析:从捕获的网络流量可以发现,有许多的SYN信号,但是TCK信号很少,因此可以认为三次握手没有建立,连接失败。
实验二:黑客攻击技术实验一.实验要求:1.掌握典型攻击技术原理2.熟悉典型攻击软件的功能及操作3.分析黑客攻击软件执行输出结果二.实验内容:1.namp2.nessus3.craft network packet: hping4.crack password: john the ripper5.web attack: nikto6.google hacking tools三.实验任务1利用winnmap扫描功能,给出扫描报告及分析2 nessus应用,给出漏洞扫描报告设置扫描策略添加新扫描扫描结果扫描报告:3.执行nikto对web服务器进行漏洞扫描。
4.john应用及配置在run目录下运行john-386 --wordlist=password.lst newxjtu.txt,对newxjtu.txt中内容解密,会生成一个.pot的文件,对同一密文只能解密一次,若删除.pot文件,可以再次解密。
破解后生成的明文为$LM$9eceeb689e046fcd:NEWXJTU$LM$aad3b435b51404ee:5.google hacking tools应用打开Google Hacking,在网站输入框中输入,点击查询网站详情,可以在随后弹出的网页上查看交大网站的详细信息,包括站点创建时间,IP地址,IP所在地,WEB服务器等信息。
实验三:网络安全技术实验一.实验要求:1.掌握防火墙,VPN,入侵检测系统等安全技术的基本原理和实现过程2.熟悉IPSec、SSL、Kerberos、PGP中的安全认证协议关键技术3.熟练使用IPSec、SSL、Kerberos、PGP等安全工具二.实验内容:1.防火墙2.VPN3.IPSec4.SSL5.Kerberos6.PGP7.Snort三.实验任务:1.防火墙:利用个人防火墙软件,定义防火墙规则,允许或是禁止某类网络流量的访问。
2 .IPSec:windows自带的IPSec服务配置及使用。
搭建一个VPN,实现隧道模式,传输模式等功能。
(1)、启用xp的远程访问组件,该组件默认不启用。
打开服务services.msc,找到Routing and Remote Access服务,设置启动类型为自动,并启动服务。
(2)、双击打开属性,勾选“虚拟专用网”下的复选框。
打开“用户页”,选择允许远程拨入的用户,或者新建用户。
打开网络页,确保计算机上已经安装了IPX/SPX协议。
服务器上设置完成。
(3)、打开客户机,打开网上邻居,单击创建一个新的连接。
点击“下一步”单击“连接到我的工作场所的网络”单击“虚拟专用网络连接”输入公司名,单击下一步输入VPN服务器的IP地址,单击完成客户机创建连接完毕。
(5)、打开刚刚创建好的连接,输入允许介入的用户名和密码,单击“连接”网络连接后,客户机成功接入XP VPN服务器3.SSL:openSSL配置及使用4.Kerberos:windows 实现的kerberos认证服务器配置及使用5.PGP:GNUpgp6.Snort:定义变量,配置规则,定义新的规则,学习攻击检测规则及报警分析在使用snort之前请先安装wireshark,因为会用到其中的winpcap:1.将snort安装在C盘根目录下。
2.安装完成后先把rules.rar解压,将里面的文件全部直接放在snort\rules\下3.将snort.conf拷贝到bin目录下4.在cmd中执行snort的命令Snort扫描到的端口查看snort.conf实验四:网络安全软件开发:网络扫描器一.实验目的:1.熟悉网络扫描器实现的关键技术2.熟练运用C#,java 开发网络应用程序3.熟悉网络协议字段含义及结构二.实验内容:1.网络扫描器实现基本的地址扫描,端口扫描,TCP/UDP 扫描,实现多线程扫描。
2.图形化界面的网络扫描器软件3.提交源代码、可执行程序及代码注释文件及执行结果截图。
三.实验分析:多线程:电脑上有322个端口。
如果只启动一个线程的话322个端口需要的时间可以用小时计算。
解决这个问题需要用到多线程原理。
多线程实现可通过继承Thread 类或者实现Runnable 接口来达到。
主机端口扫描:与目标主机创建TCP 连接,如果成功则说明端口监听中,同事对正在监听的端口做识别操作!默认按照常用端口服务给出提示!例如21,则提示ftp 服务。
UDP 扫描是向目标主机端口发送固定字符,读取目标主机回复内容!TCP 扫描原理:利用java .net.Socket 类建立socket 连接,如果无法与指定的IP 和端口建立连接,将会抛出IOException 。
我们用try-catch 对这个IOException 异常进行捕获,以判断是否成功与指定的IP 端口建立连接。
如果成功建立了连接,说明指定IP 的指定端口已经开放;如果程序抛出了一个 IOException 异常被我们捕获,则说明指定的IP 没有开放指定的端口。
扫描指定端口段则是利用循环不断与服务器的指定端口进行连接,供我们判断是否开放。
UDP 扫描原理:这种方法使用的是UDP 协议。
由于这个协议很简单,所以扫描变得相对比较困难。
这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。
幸运的是,许多主机在你向一个未打开的UDP 端口发送一个数据包时,会返回一个 ICMP_PORT_UNREACH 错误。
这样你就能发现哪个端口是关闭的。
UDP 和ICMP 错误都不保证能到达,因此这种扫描器必须还实现在一个包看上 去是丢失的时候能重新传输。
这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定。
同样,这种扫描方法需要具有root权限。
利用.DatagramSocket 类给指导IP发送DatagramPacket数据包,如果捕获到.PortUnreachableException异常,说明对方主机返回了ICMP_PORT_UNREACH的错误,说明端口关闭,否则如果在指定等待时间内没有得到回复,则捕获到.SocketTimeoutException连接超时异常,说明端口是开放的。
判断IP地址和端口合法性:在得到端口和建立socket之前一定要判断IP地址和端口的合法性,因为端口的范围是在1~65535,如果我们去建立范围外端口的连接就是没必要的,而且是不可行的。
IP地址表示成XX.XX.XX.XX格式,XX范围在0~255之间,在这之外是不合法的。
图形化界面(GUI)设计:主要用到了java.awt提供的和图形界面相关的类。
为了使界面更美观使用了swing组件。
socket中的close方法:不需要一个socket的时候应关闭它,因为socket是一种有限的系统资源。
关闭socket将释放有关的资源,并允许绑定在此socket上的端口被重新使用。
Socket 被关闭之后就不能再向它收发数据UDP缺陷说明:开放的UDP端口并不需要送回ACK包,而关闭的端口也不要求送回错误包(而本实验基于的原理就是那些主机在关闭的UDP端口会回送ICMP Port Unreachable错误,因此有很大的几率误判,由于时间原因和自身知识的局限不能想到更好的方法),所以利用UDP包进行扫描非常困难。
UDP包和ICMP包都是不可靠的,速度慢(差错报文产生的速度有限制),并且需要root权限才能读取ICMP消息,因此使用的局限性好大。
四.实验结果:1. 初始界面:2 .对站点127.0.0.1进行TCP扫描:3 .对站点127.0.0.1进行UDP扫描:实验源代码:/*基于多线程端口扫描程序源代码*/import java.awt.Color; //类的调用import java.awt.Container;import bel;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import .InetAddress;import .InetSocketAddress;import .Socket;import .SocketAddress;import .DatagramPacket;import .DatagramSocket;import .UnknownHostException;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JTextField;public class Scanner implements ActionListener{ // 创建主窗口public static JFrame mainFrame = new JFrame();public static Label labelIP = new Label("主机IP");public static Label labelPortStart = new Label("起始端口:");public static Label labelPortEnd = new Label("结束端口:");public static Label labelThread = new Label("线程数:");public static Label labelResult = new Label("扫描结果:");public static Label State = new Label("扫描状态:");public static Label Scanning = new Label("未开始扫描");public static JTextField hostName = new JTextField("172.22.65.10"); public static JTextField PortStart = new JTextField("0");public static JTextField PortEnd = new JTextField("100");public static JTextField ThreadNum = new JTextField("10");// 文本区域,显示扫描结果public static TextArea Result = new TextArea();public static Label DLGINFO = new Label("");public static JButton Start = new JButton("TCP扫描");public static JButton Start2 = new JButton("UDP扫描");public static JButton Exit = new JButton("退出");// 错误提示对话框public static JDialog DLGError = new JDialog(mainFrame, "错误"); public static JButton OK = new JButton("确定");public Scanner(){//GUI界面// 设置主窗体名称mainFrame.setTitle("多线程端口扫描器");// 设置主窗体位置和大小mainFrame.setBounds(180, 200, 550, 300);mainFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});// 设置错误提示框Container dPanel = DLGError.getContentPane();dPanel.setLayout(null);dPanel.add(DLGINFO);dPanel.add(OK);dPanel.setBackground(new Color(153,255,204));OK.setActionCommand("ok");OK.addActionListener(this);// 在主窗体中添加其他组件mainFrame.setLayout(null);mainFrame.setResizable(false);mainFrame.add(Start);mainFrame.add(Start2);mainFrame.add(Exit);mainFrame.add(labelIP);mainFrame.add(hostName);mainFrame.add(labelPortStart);mainFrame.add(labelPortEnd);mainFrame.add(PortStart);mainFrame.add(PortEnd);mainFrame.add(labelThread);mainFrame.add(ThreadNum);mainFrame.add(labelResult);mainFrame.add(Result);mainFrame.add(State);mainFrame.add(Scanning);// 设置扫描按钮和退出按钮Start.setBounds(350, 232, 100, 30);Start.setActionCommand("Start");Start.addActionListener(this);Start.setBackground(new Color(153,255,204));Start2.setBackground(new Color(153,255,204));Start2.setBounds(250, 232, 100, 30);Start2.setActionCommand("Start2");Start2.addActionListener(this);Exit.setBounds(475, 232, 60, 30);Exit.setActionCommand("Exit");Exit.addActionListener(this);Exit.setBackground(new Color(153,255,204));labelIP.setBounds(17, 13, 50, 20);hostName.setBounds(67, 10, 92, 25);hostName.setHorizontalAlignment(JTextField.CENTER);labelPortStart.setBounds(162, 13, 60, 20);PortStart.setBounds(227, 10, 45, 25);PortStart.setHorizontalAlignment(JTextField.CENTER);labelPortEnd.setBounds(292, 13, 60, 20);PortEnd.setBounds(357, 10, 45, 25);PortEnd.setHorizontalAlignment(JTextField.CENTER);labelThread.setBounds(422, 13, 50, 20);ThreadNum.setBounds(477, 10, 45, 25);ThreadNum.setHorizontalAlignment(JTextField.CENTER);labelResult.setBounds(1, 45, 55, 20);Result.setBounds(1, 65, 542, 160);Result.setEditable(false);Result.setBackground(new Color(204,255,51));//设置显示结果窗口颜色RGBState.setBounds(17, 232, 60, 30);Scanning.setBounds(80, 232, 120, 30);mainFrame.setVisible(true);}public void actionPerformed(ActionEvent e) {String cmd = e.getActionCommand(); //得到明明处理事件if(cmd.equals("Start")||cmd.equals("Start2")){//启动扫描线程try {Scan.hostAddress = InetAddress.getByName(Scanner.hostName.getText());Scan2.hostAddress = InetAddress.getByName(Scanner.hostName.getText());} catch (UnknownHostException e1) {DLGError.setBounds(300, 280, 160, 110);DLGINFO.setText("错误的IP地址/域名");DLGINFO.setBounds(25, 15, 100, 20);OK.setBounds(45, 40, 60, 30);DLGError.setVisible(true);return ;}int minPort ;int maxPort ;int threadNum ;// 获取输入数据try {minPort = Integer.parseInt(PortStart.getText());maxPort = Integer.parseInt(PortEnd.getText());threadNum = Integer.parseInt(ThreadNum.getText());} catch (NumberFormatException e1) {DLGError.setBounds(300, 280, 299, 120);DLGINFO.setText("错误的端口号或线程数!端口号和线程数必须为整数!");DLGINFO.setBounds(10, 20, 280, 20);OK.setBounds(110, 50, 60, 30);DLGError.setVisible(true);return;}// 输入信息错误处理if((minPort < 0)||(maxPort > 65535)||(minPort > maxPort)){DLGError.setBounds(300, 280, 295, 120);DLGINFO.setText("最小端口必须是0-65535并且小于最大端口的整数");DLGINFO.setBounds(10, 20, 280, 20);OK.setBounds(120, 50, 60, 30);DLGError.setVisible(true);return ;}if((threadNum > 200)|| (threadNum < 0)){DLGError.setBounds(300, 280, 184, 120);DLGINFO.setText("进程数必须是1-200中的整数");DLGINFO.setBounds(10, 20, 200, 20);OK.setBounds(55, 50, 60, 30);DLGError.setVisible(true);return ;}Result.append("正在扫描" + hostName.getText() + " 线程数:"+threadNum+"\n");Scanning.setText("开始扫描...");Result.append("开始端口" + minPort + " 结束端口" + maxPort + " \n");if(cmd.equals("Start"))//启动TCP扫描线程{for(int i = minPort;i <= maxPort; ) {if((i + threadNum) <= maxPort) {new Scan(i, i + threadNum).start();i += threadNum;}else {new Scan(i, maxPort).start();i += threadNum;}}}elseif(cmd.equals("Start2"))//启动UDP扫描线程{for(int i = minPort;i <= maxPort; ) {if((i + threadNum) <= maxPort) {new Scan2(i, i + threadNum).start();i += threadNum;}else {new Scan2(i, maxPort).start();i += threadNum;}}}try {Thread.sleep(3000);//设置处理等待时间} catch (InterruptedException e1) {e1.printStackTrace();}Result.append("扫描完成!\n");Scanning.setText("扫描完成!");}else if(cmd.equals("ok")){DLGError.dispose();}else if(cmd.equals("Exit")){System.exit(1);}}public static void main(String[] args) {new Scanner();}}//TCP Scan classclass Scan extends Thread{int maxPort, minPort;public static InetAddress hostAddress;Scan(int minPort, int maxPort){this.minPort = minPort;this.maxPort = maxPort;}public void run(){// 扫描指定端口for(int i = minPort;i < maxPort; i++){Scanner.Scanning.setText("正在扫描"+i+"端口");try {// 根据主机名和端口号创建套接字地址。