网络安全实验报告

合集下载

网络安全基础实验报告

网络安全基础实验报告

网络安全基础实验报告实验目的:本实验旨在通过实践操作,掌握网络安全基础知识和技能,并了解并实践常见的网络安全攻防技术。

实验材料:1. 一台计算机2. 一台网络服务器3. 一台防火墙设备实验过程:1. 建立实验环境:将计算机、网络服务器和防火墙设备连接至同一局域网络中。

2. 实施攻击:使用计算机对网络服务器发起常见的网络攻击,如端口扫描、ARP欺骗、DDoS攻击等。

3. 监控防御:观察防火墙设备对攻击行为的识别和阻断情况,并分析攻击者的攻击手法和目的。

4. 实施防御:根据攻击行为和攻击者的目的,调整防火墙设备的配置,加强对网络服务器的防护能力,确保网络安全。

5. 检测恢复:使用网络安全检测工具对网络服务器进行检测,验证防火墙配置的有效性。

6. 总结分析:根据实验结果和经验,总结网络安全攻防的基本原则和技巧,并提出改进建议。

实验结果:1. 攻击行为识别和阻断情况良好,网络服务器受到的攻击次数明显减少。

2. 防火墙配置调整有效,网络服务器的安全性得到显著提升。

3. 防火墙检测工具显示网络服务器的安全性良好,未发现异常情况。

实验结论:通过本实验,成功掌握了网络安全基础知识和技能,并了解了常见的网络安全攻防技术。

通过合理配置防火墙设备,可以有效地防止网络攻击并维护网络安全。

改进建议:1. 进一步学习和研究网络安全领域的最新技术和攻防策略,及时更新防火墙设备的配置。

2. 定期进行网络安全演练和实践,提高网络安全防护意识和应急响应能力。

3. 加强对网络服务器的监控和日志管理,及时发现和处理安全事件。

4. 定期与网络安全专家进行交流和合作,共同提高网络安全防护水平。

实验六_网络攻击与防范

实验六_网络攻击与防范

《网络攻击与防范》实验报告(2)单击“下一步”按钮·进人如图 4-2 所示的“禁止功能选项”设定界面.根据需要进行设定。

例如。

如果选中“禁止右键菜单”复选框.当运行了该病毒后.右击时将无法弹出快捷菜单。

图 4-2 设置“禁止功能选项”(3)单击“下一步”按钮.进入如图 4-3 所示的“病毒提示对话框”设定界面时。

根据需要设置有关开机时病毒的执行情况。

当选中“设置开机提示对话框”复选框.并设置了提示框标题和内容等后,相关信息将以对话框方式在开机时自动显示图4-3 设置开机时病毒的执行情况(4)单击“下一步”按钮,进入如图 4-4 所示的“病毒传播选项”设定界面,根据需要进行设定。

当选中“通过电子邮件进行自动传播(蠕虫)”复选框时.病毒可以向指定数量的用户发送垃圾邮件。

图4-3 设置开机时病毒的执行情况下一步夏上一步图4-4“病毒传播选项”设定界面(5)单击“下一步”按钮,进入“IE 修改选项”设定界面,根据需要进行设定。

注意.当选中“设置默认主页”复选框后,会弹出“设置主页”对话框,需要读者输人要修改的IE 浏览器主页地址(即每次打开IE 浏览器时默认打开的主页地址).如图 4-5 所示图4-5设置IE浏览器修改选项(6)单击“下一步”按钮,在出现的如图 4-6 所示的对话框中选择所生成的脚本病毒存放的位置,单击“开始制造”按钮,生成病毒文件。

图4-6选择所生成的脚本病毒存放的位置此时,可看到相应路径下,已经生成了脚本病毒文件3.2感染病毒并观察感染后的系统变化情况(1)将生成的脚本病毒文件置于虚拟机中,在其上双击使之运行。

为保证完整准确地查看病毒的感染效果.可重启已经感染了病毒的虚拟机系统。

然后,根据病毒文件生成时的设置,观察系统感染了病毒后的表现情况。

主要操作步骤如下。

(2)观察系统文件夹下的异常变化,可以发现,在 C:\ Windows,C:\Windows\system32下多了不明来源的脚本文件。

计算机网络安全实训报告

计算机网络安全实训报告

计算机网络安全实训报告
在计算机网络安全实训中,我们主要探讨了一些重要的安全概念和技术,包括防火墙、入侵检测系统和密码学等。

本报告将总结我们在实训中学到的知识和经验,并分享我们的实践结果。

1. 实训目的和背景
在计算机网络安全实训中,我们的主要目的是学习如何保护计算机系统免受各种网络攻击的威胁。

我们通过实际操作来加深对安全概念和技术的理解,并学会应对不同类型的网络攻击。

2. 防火墙实验
我们首先进行了防火墙实验,学习了如何配置和管理防火墙以保护网络系统。

通过实验,我们了解了防火墙的基本原理和工作机制,并学会了如何设置规则来限制网络流量和阻止潜在的攻击。

3. 入侵检测系统实验
我们接着进行了入侵检测系统实验,学习了如何监测和识别网络中的恶意行为。

通过实验,我们了解了入侵检测系统的原理和分类,并学会了如何配置和管理这些系统以保护网络系统的安全。

4. 密码学实验
最后,我们进行了密码学实验,学习了如何使用密码技术来保护信息的机密性和完整性。

通过实验,我们了解了对称加密和非对称加密的原理和应用,并学会了使用一些常见的密码算法来加密和解密数据。

5. 实训总结和心得体会
通过这次计算机网络安全实训,我们对网络安全领域的知识有了更深入的了解。

我们学会了如何识别和应对不同类型的网络攻击,并掌握了一些常见的安全技术和工具的使用方法。

这次实训不仅提高了我们的技术水平,也增强了我们对网络安全的意识和责任感。

总之,计算机网络安全实训是一次富有挑战性和收获的经历。

通过实践操作和知识学习,我们对网络安全有了更深入的理解,也为今后的网络安全工作打下了坚实的基础。

网络攻击的实验报告

网络攻击的实验报告

一、实验背景随着信息技术的飞速发展,网络已经成为人们工作和生活中不可或缺的一部分。

然而,随之而来的网络安全问题也日益凸显。

为了提高对网络攻击的认识和防御能力,我们进行了本次网络攻击实验。

通过模拟网络攻击的过程,了解攻击者的攻击手段,以及防御网络攻击的方法。

二、实验目的1. 理解网络攻击的基本原理和常用手段。

2. 掌握网络安全防御的基本策略和工具。

3. 提高网络安全意识和自我保护能力。

三、实验环境1. 操作系统:Windows 102. 网络设备:路由器、交换机、PC机3. 软件环境:Wireshark、Nmap、Metasploit等网络安全工具四、实验步骤1. 信息收集利用Nmap扫描目标主机,获取目标主机的开放端口、操作系统等信息。

通过Wireshark抓取目标主机与网络之间的数据包,分析其网络流量。

2. 漏洞扫描利用Nmap对目标主机进行漏洞扫描,找出目标主机存在的安全漏洞。

3. 攻击模拟根据漏洞扫描结果,选择合适的攻击手段对目标主机进行攻击。

以下列举几种常见的网络攻击手段:(1)端口扫描攻击:通过扫描目标主机的开放端口,获取目标主机上的服务信息。

(2)拒绝服务攻击(DoS):通过大量请求占用目标主机资源,使目标主机无法正常响应。

(3)密码破解攻击:通过暴力破解、字典攻击等方法获取目标主机的登录凭证。

(4)木马攻击:通过植入木马程序,控制目标主机,获取敏感信息。

4. 攻击防御针对攻击模拟过程中发现的安全漏洞,采取相应的防御措施,如:(1)关闭不必要的开放端口,减少攻击面。

(2)更新操作系统和应用程序,修复已知漏洞。

(3)设置强密码,提高登录凭证的安全性。

(4)安装防火墙、入侵检测系统等安全设备,及时发现和阻止攻击。

五、实验结果与分析1. 通过信息收集,我们发现目标主机存在多个开放端口,其中包含Web服务、邮件服务、数据库服务等。

2. 漏洞扫描结果显示,目标主机存在多个安全漏洞,如:Web服务漏洞、数据库服务漏洞等。

网络安全攻击实验报告

网络安全攻击实验报告

网络安全攻击实验报告实验目的:本实验旨在通过模拟网络安全攻击的过程,提升对网络安全的认识,了解各种常见网络攻击的原理和防范措施。

实验设备:1. 一台Windows操作系统的计算机,作为实验的攻击者。

2. 一台Windows操作系统的计算机,作为实验的受攻击者。

3. 一台Linux操作系统的计算机,作为实验的网络防火墙。

实验步骤:1. 配置网络环境:将攻击者、受攻击者和防火墙连接到同一个局域网中,并进行正确的IP地址配置。

2. 确认网络连接正常后,开始进行模拟攻击。

实验一:ARP欺骗攻击1. 攻击者使用工具发送恶意ARP包,将受攻击者的IP地址与攻击者自己的MAC地址对应起来,以此实现网络欺骗。

2. 受攻击者在收到ARP包后,将误认为攻击者的计算机是网关,并将网络流量发送至攻击者的计算机。

3. 防火墙通过监测网络流量,检测到ARP欺骗攻击,将受攻击者的网络流量重定向至正确的网关。

实验二:DDoS攻击1. 攻击者利用工具向受攻击者发送大量正常请求,使其服务器超负荷运作,无法正常提供服务。

2. 受攻击者的服务器在处理这些请求时,耗尽系统资源,导致服务阻塞或崩溃。

3. 防火墙通过检测到大量请求来自同一IP地址,将该IP地址列入黑名单,过滤掉恶意流量,减轻服务器负荷。

实验三:SQL注入攻击1. 攻击者利用软件工具,通过在Web应用程序的输入字段中插入SQL代码,获取或篡改数据库中的数据。

2. 受攻击者的Web应用程序在处理请求时,未对输入字段进行正确的过滤或转义,导致攻击者成功执行注入攻击。

3. 防火墙通过检测到包含恶意SQL代码的请求,拦截并阻止恶意请求,保护数据库安全。

实验结果:1. 在实验一中,通过ARP欺骗攻击,攻击者成功将受攻击者的网络流量重定向至正确的网关,防火墙成功阻止了欺骗攻击。

2. 在实验二中,通过DDoS攻击,受攻击者的服务器遭受了大量请求的压力,导致服务不可用,防火墙成功进行了恶意流量过滤。

网络安全实验报告[共五篇]

网络安全实验报告[共五篇]

网络安全实验报告[共五篇]第一篇:网络安全实验报告实验一:网络扫描实验【实验目的】了解扫描的基本原理,掌握基本方法,最终巩固主机安全【实验内容】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. 提高网络安全防护能力,降低网络安全风险。

三、实验内容1. 网络扫描实验(1)实验目的:掌握网络扫描技术,了解目标网络结构。

(2)实验步骤:① 搭建实验环境,包括攻击主机、靶机等。

② 使用Nmap等网络扫描工具对靶机进行扫描。

③ 分析扫描结果,了解靶机开放端口、服务版本等信息。

2. 漏洞扫描实验(1)实验目的:掌握漏洞扫描技术,发现目标网络中的安全漏洞。

(2)实验步骤:① 使用Nessus、OpenVAS等漏洞扫描工具对靶机进行扫描。

② 分析扫描结果,找出靶机存在的安全漏洞。

③ 针对漏洞进行修复或采取防御措施。

3. 恶意代码分析实验(1)实验目的:掌握恶意代码分析技术,提高对恶意代码的识别能力。

(2)实验步骤:① 下载恶意代码样本。

② 使用静态分析、动态分析等方法对恶意代码进行分析。

③ 识别恶意代码类型、攻击目的、传播途径等。

4. 网络攻击实验(1)实验目的:掌握常见网络攻击手段,提高网络安全防护能力。

(2)实验步骤:① 实施端口扫描攻击、拒绝服务攻击(DoS)等网络攻击。

② 分析攻击原理、攻击过程、攻击效果。

③ 针对攻击采取防御措施,如设置防火墙规则、关闭不必要的服务等。

5. 网络防护实验(1)实验目的:掌握网络安全防护技术,提高网络安全防护能力。

(2)实验步骤:① 针对实验过程中发现的漏洞,采取相应的修复措施。

② 优化网络架构,提高网络安全性能。

③ 制定网络安全策略,加强网络安全管理。

四、实验结果与分析1. 通过网络扫描实验,掌握了网络扫描技术,了解了目标网络结构。

2. 通过漏洞扫描实验,发现了靶机存在的安全漏洞,并采取了相应的修复措施。

网络安全实训报告

网络安全实训报告

网络安全实训报告
首先,对所有员工进行了网络安全意识培训,包括如何识别和避免钓鱼邮件、如何创建安全密码、避免使用公共无线网络等基本安全意识教育。

通过培训,员工的网络安全意识得到了明显提升,对日常工作中可能出现的安全隐患有了更加清晰的认识。

其次,进行了对内网的漏洞扫描与修复工作。

通过使用专业的漏洞扫描工具,发现了内网中存在的一些潜在安全漏洞,并及时进行了修复,包括更新补丁、加固防火墙、提高账号密码安全性等措施。

通过此次漏洞扫描与修复工作,公司的内网安全得到了较大提升,极大减少了内部可能存在的安全隐患。

最后,进行了网络攻防演练,模拟了不同类型的网络攻击场景,包括DDoS攻击、SQL注入、木马病毒感染等。

实施网络攻击的同时,我们组织了内部安全团队进行网络防御,通过对抗演练,有效地提高了安全团队对网络攻击的应对能力,也发现了一些潜在的安全风险点,并及时加以了解决。

总体来说,通过本次网络安全实训,公司的网络安全意识得到了提高,内网安全漏洞得到了修复,安全团队的应对能力也得到了提升。

希望通过不断地网络安全实训,我们的公司能够建立起更加完善的网络安全体系,确保公司网络安全的稳定和可靠。

很抱歉,我无法完成此要求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络安全实验报告姓名:杨瑞春班级:自动化86学号:08045009实验一:网络命令操作与网络协议分析一.实验目的: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 {// 根据主机名和端口号创建套接字地址。

相关文档
最新文档