基于多线程的端口扫描程序课程设计报告
操作系统课程设计 基于TCP端口扫描程序
仲恺农业工程学院课程设计报告课程名称:操作系统题目:基于TCP端口扫描程序院系:班级:姓名:学号:指导老师:目录1 需求分析 (1)1.1 课题背景 (1)1.2 本课题研究意义 (1)1.3 安全扫描技术的产生及其发展趋势 (1)1.4 安全扫描技术的分类 (2)2 端口扫描的相关知识 (3)2.1 网络端口扫描原理 (3)2.2 端口 (4)2.3 相关协议 (4)2.4 扫描的定义 (6)2.5 多线程技术 (6)2.6 网络套接字编程 (7)3 概要设计 (8)3.1 整体设计框架 (8)3.2 流程图描述 (9)4 详细设计 (11)4.1 开法环境 (11)4.2 界面设计 (11)4.3 主要类说明 (12)4.4 代码描述 (12)4.4.1 基本信息检测模块 (12)4.4.2 参数设计模块 (12)4.4.3 端口扫描模块 (15)4.4.4 结果输出模块 (16)5 调试分析 (18)5.1 编译及运行程序 (18)5.2 系统主界面 (18)5.3 子系统功能测试 (19)6 总结 (21)参考文献 (22)1 需求分析1.1 课题背景在21世纪的今天,计算机发展日新月异,伴随着网络技术的飞速更新,网络规模迅速增长和计算机系统的日益复杂,导致新的系统漏洞层出不穷,一些别有用心的人或者木马程序要想顺利的渗透一台联网的计算机,无论使用何种技术,首先必然要寻找计算机的漏洞来为自己的入侵打开大门。
端口扫描器是一把双刃剑,端口扫描器的产生可以使网络中的计算机及时的发现主机的开放与未开放的端口状态。
计算机的端口扫描技术是一种基于主动防御型的策略的重要技术手段。
本课题通过对计算机端口扫描器的研究来提高对网络中计算机的安全的认识。
本端口扫描器采用Java语言和Java Socket 编程原理开发,在Ubuntu操作系统下通过测试。
扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机的此端口在规定时间内有回复,则说明该端口是开放的。
网络课程设计端口扫描
网络课程设计端口扫描一、教学目标本课程的教学目标是让学生掌握网络课程设计端口扫描的基本概念、原理和方法。
通过本课程的学习,学生应能理解网络课程设计的基本原理,掌握端口扫描的技术和应用,提高网络安全意识和防范能力。
具体来说,知识目标包括:1.理解网络课程设计的基本原理和概念;2.掌握端口扫描的原理和方法;3.了解网络安全的现状和趋势。
技能目标包括:1.能够运用端口扫描技术检测网络系统的安全性;2.能够根据扫描结果分析和解决网络中存在的问题;3.能够编写简单的端口扫描程序。
情感态度价值观目标包括:1.增强网络安全意识,提高自我保护能力;2.培养对网络技术的兴趣和热情,提高创新能力和团队协作能力。
二、教学内容本课程的教学内容主要包括网络课程设计的基本原理、端口扫描的原理和方法、网络安全的现状和趋势等方面的知识。
具体安排如下:1.网络课程设计的基本原理:介绍网络课程设计的概念、目标和方法,让学生了解网络课程设计的基本过程和步骤。
2.端口扫描的原理和方法:讲解端口扫描的概念、原理和方法,介绍常用的端口扫描工具及其使用方法。
3.网络安全的现状和趋势:分析当前网络安全面临的威胁和挑战,探讨网络安全的未来发展趋势。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。
具体包括:1.讲授法:通过讲解基本概念、原理和方法,使学生掌握网络课程设计端口扫描的基本知识。
2.案例分析法:通过分析典型的网络安全案例,使学生了解网络安全的现状和趋势,提高网络安全意识。
3.实验法:让学生动手实践,运用端口扫描技术检测网络系统的安全性,提高解决实际问题的能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的网络课程设计端口扫描教材,为学生提供系统、全面的知识体系。
2.参考书:推荐相关的网络安全参考书籍,拓展学生的知识面。
3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。
基于多线程的端口扫描程序
计算机网络课程课程设计任务书计算机网络设计说明书学院名称:计算机与信息工程学院班级名称:网络工程122班学生姓名:学号:题目:基于多线程的端口扫描程序指导教师姓名:起止日期:2015年6月13日至2015年6月20日一、选题背景随着互联网的飞速发展,网络入侵行为日益严重,网络安全成为人们关注的焦点。
端口扫描技术是网络安全扫描技术的重要技术之一。
对目标系统进行端口扫描,是网络系统入侵者进入目标系统的第一步。
网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。
网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。
现实世界中的很多过程都具有多条线索同时动作的特性。
Java语言的一大特性就是内置对多线程的支持。
多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。
端口是由计算机的通信协议TCP/IP协议定义的。
其中规定,有IP地址和端口号作为套接字,它代表TCP连接的一个连接端,一般称为Socket。
具体来说,就是用[IP:端口]来定位一台主机的进程。
可见端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。
由此可见,通过扫描端口,就可以判断出目标计算机有哪些通信进程正在等待连接。
利用TCP connect扫描原理,扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机该端口有回复,则说明该端口开放。
利用多线程技术实现了对一目标IP进行设定数目的端口扫描,对多IP段的特定端口进行扫描。
二、方案设计多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序。
端口扫描的课程设计
端口扫描的课程设计一、课程目标知识目标:1. 学生理解端口扫描的基本概念、原理及作用;2. 学生掌握常见的端口扫描技术及其分类;3. 学生了解端口扫描在网络安全领域的实际应用。
技能目标:1. 学生能够使用网络扫描工具进行端口扫描实验;2. 学生能够分析端口扫描结果,识别网络安全隐患;3. 学生能够运用所学知识,提出改善网络安全策略的建议。
情感态度价值观目标:1. 学生培养对网络安全的兴趣和责任感,认识到网络安全的重要性;2. 学生树立正确的网络安全观念,遵循道德和法律规范,维护网络安全;3. 学生在团队合作中,培养沟通、协作能力,提高解决问题的能力。
课程性质分析:本课程为计算机网络技术相关课程,旨在帮助学生掌握端口扫描技术,提高网络安全意识。
学生特点分析:学生为高中年级,具有一定的计算机网络基础,对网络安全感兴趣,但实践操作能力有待提高。
教学要求:1. 结合实际案例,深入浅出地讲解端口扫描技术;2. 强调实践操作,让学生在动手实践中掌握技能;3. 注重培养学生的网络安全意识,提高其道德素养。
二、教学内容1. 端口扫描概念与原理- 端口的作用与重要性- 端口扫描的定义与原理- 端口扫描的目的与意义2. 常见端口扫描技术- TCP connect scan- SYN scan- FIN scan- Xmas tree scan- UDP scan3. 端口扫描工具及其使用- Nmap- Masscan- Zmap- 教学示例:工具的使用及参数配置4. 端口扫描结果分析- 开放端口与关闭端口- 漏洞识别与风险评估- 结果解读与安全建议5. 端口扫描在网络安全中的应用- 网络安全评估- 入侵检测与防御- 网络安全防护策略制定6. 实践操作与案例解析- 实践环境搭建- 端口扫描操作演示- 案例分析:网络安全事件中的端口扫描教学内容安排与进度:第1课时:端口扫描概念与原理第2课时:常见端口扫描技术第3课时:端口扫描工具及其使用第4课时:端口扫描结果分析第5课时:端口扫描在网络安全中的应用第6课时:实践操作与案例解析教材关联章节:《计算机网络》第四章:网络应用层《网络安全技术》第三章:网络安全检测与评估《网络攻防技术》第二章:扫描与探测技术三、教学方法1. 讲授法:- 对于端口扫描的基本概念、原理和分类等理论知识,采用讲授法进行教学,使学生在短时间内掌握基础知识点。
端口扫描程序的设计与实现报告
指导老师评阅成绩表学习与工作态度(30%)选题的价值与意义(10%)文献综述(10%)研究水平与设计能力(20%)课程设计说明说(论文)撰写质量(20%)学术水平与创新(10%)总分指导老师签名:年月日课程设计答辩记录及评价表学生讲述情况教师主要提问记录学生回答问题情况答辩评分评分项目分值评价参考标准评分总分优良中及格差选题的价值与意义10 9 8 7 6 4文献综述10 9 8 7 6 4研究水平与设计能力20 19 17 15 13 10课程设计说明书(论文)撰写质量20 19 17 15 13 10学术水平与创新10 9 8 7 6 4答辩效果30 28 25 22 19 15是否同意论文(设计)通过答辩□同意□不同意答辩小组成员签名答辩小组组长签名:年月日课程设计成绩评定表成绩汇总评分项目评分比例分数课程设计总分指导老师评分50%答辩小组评分50%课程设计成绩评价表封面成都信息工程学院课程设计题目:端口扫描程序的设计与实现作者姓名:班级:学号:指导教师:日期:2011年6月3日作者签名:端口扫描程序的设计与实现摘要计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。
端口扫描技术是发现安全问题的重要手段之一。
本程序是在Windows系统中使用C语言用MFC完成的一个端口扫描程序。
此程序主要完成了TCP connect()扫描和UDP扫描功能。
TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。
能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。
此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。
而对于UDP扫描只支持单线程,速度较慢。
扫描结果以列表的形式直观地展现出来。
关键词:端口扫描、TCP扫描、UDP扫描、TCP多线程扫描目录1引言 (1)1.1 课题的背景及意义 (1)1.2 端口扫描现状 (1)2系统设计 (1)2.1 系统主要目标 (1)2.2 开发环境及工具 (1)2.3 功能模块与系统结构 (2)3系统功能程序设计 (4)3.1 获取本机IP (4)3.2 分割字符串函数的实现 (4)3.3 获取待扫描的IP地址 (5)3.4 获取待扫描的端口号 (5)3.4.1 指定端口号的初始化 (6)3.4.2 指定端口号的保存 (7)3.5 TCP CONNECT()扫描 (8)3.5.1 基本原理 (8)3.5.2 扫描多个主机多端口多线程的实现 (8)3.5.3 扫描结果的显示 (9)3.6 UDP扫描 (10)3.6.1 基本原理 (10)3.6.2 计算效验和 (11)3.6.3 发送UDP数据包 (11)3.6.4 接收ICMP数据包 (12)4测试报告 (12)4.1 TCP扫描检测 (12)4.1.1扫描本机 (12)4.1.2扫描网络中其他主机 (13)4.1.3 扫描IP段 (13)4.2 UDP扫描检测 (14)4.2.1 扫描本机 (14)4.1.2扫描网络中其他主机 (15)4.3 TCP、UDP一起扫描 (16)结论 (17)参考文献 (17)1引言1.1 课题的背景及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。
多线程端口扫描
Must take the fundamental interest s of the overwhelming majority of the people as t he party all t he starting poi nt and ending poi nt, the party has always been a common fate with the masses , this i s the magi c wea pon for our party to always mai ntain t he adva nce d nat ure and purity. Stre ngthe ning the constructi on of party's a dvance d nat ure a nd purity and e nha nci ng the party's ruli ng abil ity will event ually be impleme nted to reali ze, safeguard a nd develop the fundame ntal interest s of the overwhelming majority of the people. All the work merits t his is a measure of the pa rty's fundam ental standards , is a meas ure of the party's a dvanced nature a nd purity sta ndards. Believe w ho, de pending on w ho, who, standing on the position of the overw helming maj ority of the people are alway s, always real ize, safeg uard a nd develop the fundame ntal interest s of the overwhelming major ity of the pe ople , it is a touchstone of the Marxist party of judgeme nt, is al so s ign of Marxi st party is different from
端口扫描程序的设计与实现精简版范文
端口扫描程序的设计与实现端口扫描程序的设计与实现1. 简介端口扫描程序是一种用来探测目标主机开放的网络端口的工具。
它通过向目标主机发送特定的网络消息,然后根据返回的消息判断该端口是否开放。
2. 设计思路2.1 输入端口扫描程序的输入通常包括目标主机的IP地质和要扫描的端口范围。
2.2 扫描过程扫描程序通过创建一个或多个线程来并发地扫描目标主机。
每个线程都会尝试连接目标主机的一个端口,并等待一段时间来判断端口是否开放。
如果端口开放,则将其记录下来。
2.3 输出扫描完成后,程序会将扫描结果输出到一个文件中。
每行记录一个开放的端口信息,包括目标主机的IP地质和开放的端口号。
3. 实现3.1 编程语言端口扫描程序可以用各种编程语言来实现,如、Java、C等。
选择合适的语言取决于开发者的个人喜好和实际需求。
3.2 网络连接程序需要使用Socket库来进行网络连接。
通过建立TCP连接或发送UDP消息来目标主机的端口状态。
3.3 多线程为了提高扫描速度,可以使用多线程来并发地扫描目标主机的端口。
每个线程独立地连接一个端口并等待返回消息。
3.4 错误处理在程序运行过程中可能会遇到各种错误,如网络连接失败、目标主机不可达等。
为了使程序具备鲁棒性,需要对这些错误进行适当的处理。
4. 特点与应用4.1 特点端口扫描程序可以用于检测目标主机的安全性,找出可能的漏洞和攻击面。
程序具备高效、快速、并发的特点,能够在短时间内扫描大量的端口。
4.2 应用网络管理员可以使用端口扫描程序来评估网络的安全性。
渗透人员可以利用端口扫描程序来发现目标主机的弱点。
系统管理员可以使用端口扫描程序来查找网络中的活跃主机和开放端口。
以上是端口扫描程序的设计与实现的简要介绍。
希望对您有所帮助!。
基于多线程的端口扫描程序课程设计报告讲解
滁州学院课程设计报告课程名称:设计题目:基于多线程的端口扫描程序院部:计算机与信息工程学院专业:网络工程组别:第六组起止日期: 2012年12月31日~2013 年1月6日指导教师:计算机与信息工程学院二○一二年制课程设计任务书目录1需求分析 (1)1..1网络安全 (1)1.2课程背景 (1)1.3扫描器 (1)1.4多线程扫描器介绍 (2)1.4.1布局管理器 (2)1.4.2多线程 (2)1.4.3线程优先级 (3)1.4.4线程同步 (3)1.5端口扫描 (4)2概要设计 (4)2.1整体框架设计 (4)2.2流程图描述 (5)3详细设计 (6)3.1 端口扫描线程启动 (6)3.2 GUI图形界面 (7)3.3 按钮监听及异常处理 (9)4调试与操作说明 (11)4.1运行界面 (11)4.2扫描结果 (11)4.3错误提示 (12)5课程设计总结与体会 (13)6参考文献 (14)7致谢 (14)8附录 (15)1需求分析1..1网络安全二十一世纪是信息化、网络化的世纪,信息是社会发展的重要资源。
信息安全保障能力是一个国家综合国力、经济竞争实力和生存能力的重要组成部分,是世界各国在奋力攀登的制高点。
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行。
网络安全包括技术领域和非技术领域两大部分:非技术领域包括一些制度、政策、管理、安全意识、实体安全等方面的内容;技术领域包括隐患扫描、防火墙、入侵检测、访问控制、虚拟专用网、CA认证、操作系统等方面的内容。
这些技术的目标是保证信息的可控性、可用性、保密性、完整性、和不可抵赖性。
端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。
1.2课程背景随着Internet的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。
端口扫描技术是网络安全扫描技术一个重要的网络安全技术。
端口扫描程序设计(详细的报告+源代码)
搜集概括真验之阳早格格创做任务书籍一、手段与央供1.本量:安排性真验.2.任务:安排并真止一个端心扫描步调,检测某个IP大概某段IP的估计机的端心处事情况.3.手段:加深对付课堂道授知识的明白,流利掌握基础的搜集编程技能战要领,建坐搜集编程真足观念,使得教死发端具备钻研、安排、体例战调试搜集步调的本领.4.央供:认识有闭定义、观念战真止算法,安排出步调过程框图战数据结构,编写出完备的源步调,基础功能完备,便当易用,支配无误.5.教死央供人数:1人.两、主要真量1.编写一个端心扫描步调,不妨隐现某个IP大概某段IP 的估计机的某一个大概某些端心是可正正在处事.基础处事历程如下:(1) 设定佳一定的端心扫描范畴;(2) 设定每个端心扫描的次数,果为有大概有的端心一次扫描大概短亨;(3) 创制socket,通过socket的connect要领去对接近程IP天面以及对付应的端心;(4) 如果返回false,表示端心不开搁,可则端心开搁.三、进度计划四、安排成果央供1.完毕确定的真验任务,保量保量;2.完毕概括真验报告,央供要领典型,真量简直而翔真,应体现自己所干的处事,注沉对付真验思路的归纳战对付问题办理历程的归纳.五、考核办法1.通常结果+查支问辩+真验报告;2.五级分制.教死姓名:指挥西席:2009 年 6月8 日一、概括真验的手段与央供1.手段:加深对付课堂道授知识的明白,流利掌握基础的搜集编程技能战要领,建坐搜集编程真足观念,加深对付JA V A编程谈话的使用,促进编程本领的普及,共时为搜集编程挨下一个比较佳的前提.共时对付真验的历程要有真足的相识.2.央供:认识有闭定义、观念战真止算法,安排出步调过程框图战数据结构,编写出完备的源步调,基础功能完备,便当易用,支配无误.两、概括真验正文1.编程谈话的采用针对付编写的是端心扫描的步调,所以尔采用了JA V A编程,果为要简朴而便当的考查端心扫描的功能.2.端心扫描真止的功能是:隐现某个IP大概某段IP的估计机的某一个大概某些端心是可正正在处事2.1 怎么样采用IP段战端心创制socket,通过socket的connect要领去对接近程IP天面以及对付应的端心.而尔使用的是socket函数去真止端心的扫描战IP天面的采用扫描.2.2 怎么样真止赶快扫描端心通过真止多线程,当一个IP大概者一个端心共时调配多个线程举止扫描,速度会比单线程扫描快许多.2.3 隐现扫描截止不妨正在使用JA V A编写的时间,不妨通过使用JScrollPane控件真止隐现截止.2.4 真止央供功能之余好化中瞅3.创制应用步调界里3.1 建坐主窗体,“JA V A端心扫描器”图1-13.2 IP天面的输进部分图1-23.3 端心部分,其中包罗指定的端心战指定扫描的端心范畴图1-33.4 多线程的真止战延时的统制部分图1-43.5 减少的保存及快速键功能图1-54.扫描的所有历程4.1 挖写IP天面—4.2 挖写端心扫描的范畴为1—3004.3 线程数采用为1004.4 扫描截止如下图1-6三.端心扫描的主要部分步调如下import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;/**真止扫描的主体步调*/public class ThreadScan{public static JFrame main=new JFrame("JA V A端心扫描器");//隐现扫描截止public static JTextArea Result=new JTextArea("",4,40);//滑动条里板publicstaticJScrollPaneresultPane=newJScrollPane(Result,JScroll Pane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPa ne.HORIZONTAL_SCROLLBAR_AS_NEEDED;//输进主机名文本框public static JTextField hostname=newJTextField("localhost",8);//输进ip天面前3位的输进框public static JTextField fromip1=new JTextField("0",3);//输进ip天面4~6位的输进框public static JTextField fromip2=new JTextField("0",3);//输进ip天面7~9位的输进框public static JTextField fromip3=new JTextField("0",3);//输进起初ip天面末尾4位的输进框public static JTextField fromip4=new JTextField("0",3);//输进目标ip天面末尾4位的输进框public static JTextField toip=new JTextField("0",3);//输进最小端心的输进框public static JTextField minPort=new JTextField("0",4);//输进最大端心的输进框public static JTextField maxPort=new JTextField("1000",4);//输进最大线程数量的输进框public static JTextField maxThread=new JTextField("100",3);//过得提示框public static JDialog DLGError=new JDialog(main,"过得!");public static JLabel DLGINFO=new JLabel("");public static JLabel type=new JLabel("请采用:");//扫描典型public static JRadioButton radioIp = new JRadioButton("IP天面:");public static JRadioButton radioHost = new JRadioButton("主机名:",true);//单选框组public static ButtonGroup group = new ButtonGroup();public static JLabel P1=new JLabel("端心范畴:");public static JLabel P2=new JLabel("~");public static JLabel P3=new JLabel("~");public static JLabel Pdot1 = new JLabel(".");public static JLabel Pdot2 = new JLabel(".");public static JLabel Pdot3 = new JLabel(".");public static JLabel TNUM=new JLabel("线程数:");public static JLabel RST=new JLabel("扫描截止: ");public static JLabel con=new JLabel(" ");//定义按钮public static JButton OK = new JButton("决定");public static JButton Submit = new JButton("开初扫描");public static JButton Cancel = new JButton("退出");public static JButton saveButton = new JButton("保存扫描截止");//菜单栏public static JMenuBar myBar = new JMenuBar();public static JMenu myMenu = new JMenu("文献(F)");public static JMenuItem saveItem = new JMenuItem("保存扫描截止(S)");public static JMenuItem exitItem = new JMenuItem("退出(Q)");public static void main(String[] args){main.setSize(500,400);main.setLocation(300,300);main.setResizable(false);main.setLayout(new GridBagLayout());main.setDefaultClo搜索引擎劣化peration(JFrame.EXIT_ON_CLOSE);DLGError.setSize(300,100);DLGError.setLocation(400,400);//增加“菜单栏”myMenu.add(saveItem);myMenu.add(exitItem);myBar.add(myMenu);main.setJMenuBar(myBar);//树坐热键myMenu.setMnemonic('F');saveItem.setMnemonic ('S');//为“另存为”组件树坐快速键为ctrl+s (KeyEvent.VK_S,InputEvent.CTRL_MASK));exitItem.setMnemonic('Q');(KeyEvent.VK_E,InputEvent.CTRL_MASK));//采与表格包型筹备Container mPanel = main.getContentPane();GridBagConstraints c = new GridBagConstraints();c.insets = new Insets(10,0,0,10);c.gridx = 0;c.gridy = 0;c.gridwidth = 10;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(type,c);group.add(radioIp);group.add(radioHost);c.gridx = 0;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(radioIp,c);c.gridx = 1;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(fromip1,c);c.gridx = 2;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(Pdot1,c);c.gridx = 3;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(fromip2,c);c.gridx = 4;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(Pdot2,c);c.gridx = 5;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(fromip3,c);c.gridx = 6;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(Pdot3,c);c.gridx = 7;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(fromip4,c);c.gridx = 8;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(P2,c);c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(toip,c);c.gridx = 0;c.gridy = 2;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(radioHost,c);c.gridx = 1;c.gridy = 2;c.gridwidth = 3;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(hostname,c);c.gridx = 0;c.gridy = 3;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(P1,c);c.gridx = 1;c.gridy = 3;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(minPort,c);c.gridx = 2;c.gridy = 3;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(P3,c);c.gridx = 3;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(maxPort,c);c.gridx = 0;c.gridy = 4;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(TNUM,c);c.gridx = 1;c.gridy = 4;c.gridwidth = 3;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(maxThread,c);c.gridx = 0;c.gridy = 5;c.gridwidth = 3;c.fill = GridBagConstraints.VERTICAL;c.anchor = GridBagConstraints.CENTER; mPanel.add(Submit,c);c.gridx = 6;c.gridy = 5;c.gridwidth = 4;c.fill = GridBagConstraints.VERTICAL;c.anchor = GridBagConstraints.CENTER; mPanel.add(Cancel,c);c.gridx = 0;c.gridy = 6;c.gridwidth = 10;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER; mPanel.add(RST,c);//树坐文本天区不妨换止Result.setLineWrap(true);//树坐文本天区不可编写Result.setEditable(false);c.gridx = 0;c.gridy = 7;c.gridwidth = 10;c.gridheight = 4;c.fill = GridBagConstraints.VERTICAL;c.anchor = GridBagConstraints.CENTER;mPanel.add(resultPane,c);Container dPanel = DLGError.getContentPane();dPanel.setLayout(newFlowLayout(FlowLayout.CENTER));dPanel.add(DLGINFO);dPanel.add(OK);Submit.addActionListener(new SubmitAction());Cancel.addActionListener(new CancleAction());OK.addActionListener(new OKAction());//真止退出功能exitItem.addActionListener(newjava.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent e) {System.exit(0);}});//真止助闲功能saveButton.addActionListener(newjava.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent e) {JFileChooser fc=new JFileChooser();int returnVal=fc.showSaveDialog(null);//面打“保存”if(returnVal == 0){File saveFile=fc.getSelectedFile();try {FileWriter writeOut = new FileWriter(saveFile);writeOut.write(ThreadScan.Result.getText());writeOut.close();}catch (IOException ex) {System.out.println("保存波折");}}//面打“与消”elsereturn;}});main.setVisible(true);}}/**真止“与消”功能*退出步调*/class CancleAction implements ActionListener{public void actionPerformed (ActionEvent e){ System.exit(0);}}/**真止“决定”功能*完毕扫描*/class SubmitAction implements ActionListener{public void actionPerformed (ActionEvent a){int minPort;int maxPort;int maxThread;int ip1 = 0;int ip2 = 0;int ip3 = 0;int ipstart = 0;int ipend = 0;String ipaddress = "";String hostname = "";ThreadScan.Result.setText("");//将"决定"按钮树坐成为不可用if(ThreadScan.Submit.isEnabled()){ThreadScan.Submit.setEnabled(false);}/**推断搜索的典型*依照ip天面扫描:type = 0*依照主机称呼扫描:type = 1*/if(ThreadScan.radioIp.isSelected()){TCPThread.type = 0;//推断ip的前3位是可为int型try{ip1=Integer.parseInt(ThreadScan.fromip1.getText());}catch(NumberFormatException e){ThreadScan.DLGINFO.setText("过得的ip!");ThreadScan.DLGError.setVisible(true);return;}//推断ip的4~6位是可为int型try{ip2=Integer.parseInt(ThreadScan.fromip2.getText());}catch(NumberFormatException e){ThreadScan.DLGINFO.setText("过得的ip!");ThreadScan.DLGError.setVisible(true);return;}//推断ip的7~9位是可为int型try{ip3=Integer.parseInt(ThreadScan.fromip3.getText());}catch(NumberFormatException e){ThreadScan.DLGINFO.setText("过得的ip!");ThreadScan.DLGError.setVisible(true);return;}//推断起初ip的末尾4位是可为int型try{ipstart=Integer.parseInt(ThreadScan.fromip4.getText());}catch(NumberFormatException e){ThreadScan.DLGINFO.setText("过得的ip!");ThreadScan.DLGError.setVisible(true);return;}//推断目标ip的末尾4位是可为int型try{ipend=Integer.parseInt(ThreadScan.toip.getText());}catch(NumberFormatException e){ThreadScan.DLGINFO.setText("过得的目标ip!");ThreadScan.DLGError.setVisible(true);return;}//推断起初ip是可精确//推断条件:大于0且小于等于255if(ip1<0 || ip1>255||ip2<0 || ip2>255||ip3<0 || ip3>255||ipstart<0 || ipstart>255){ThreadScan.DLGINFO.setText(" ip天面为0-255的整数! ");ThreadScan.DLGError.setVisible(true);return;}else{TCPThread.ip1 = ip1;TCPThread.ip2 = ip2;TCPThread.ip3 = ip3;TCPThread.ipstart = ipstart;}//推断目标ip是可精确//推断条件:大于0且小于等于255if(ipend<0 || ipend>255){FO.setText("目标ip天面为0-255的整数! ");ThreadScan.DLGError.setVisible(true);return;}else{TCPThread.ipend = ipend;}ipaddress = "" + ip1 + ip2 + ip3 + ipstart;/**推断ip天面的灵验性*/try{TCPThread.hostAddress=InetAddress.getByName(ipaddress);}catch(UnknownHostException e){ThreadScan.DLGINFO.setText(" 过得的IP大概天面不可达! ");ThreadScan.DLGError.setVisible(true);return;}}//根据主机名举止端心扫描if(ThreadScan.radioHost.isSelected()){TCPThread.type = 1;/**推断主机称呼的灵验性*/try{TCPThread.hostAddress=InetAddress.getByName(Thread Scan.hostname.getText());}catch(UnknownHostException e){ThreadScan.DLGINFO.setText("过得的域名大概天面不可达! ");ThreadScan.DLGError.setVisible(true);return;}}/**推断端心号的灵验性*/try{minPort=Integer.parseInt(ThreadScan.minPort.getText());maxPort=Integer.parseInt(ThreadScan.maxPort.getText());maxThread=Integer.parseInt(ThreadScan.maxThread.getT ext());}catch(NumberFormatException e){ThreadScan.DLGINFO.setText("过得的端心号大概线程数!端心号战线程数必须为整数!");ThreadScan.DLGError.setVisible(true);return;}/**推断最小端心号的灵验范畴*推断条件:大于0且小于65535,最大端心应大于最小端心*/if(minPort<0 || minPort>65535 || minPort>maxPort){ThreadScan.DLGINFO.setText("最小端心必须是0-65535而且小于最大端心的整数!");ThreadScan.DLGError.setVisible(true);return;}else{TCPThread.MIN_port=minPort;}/**推断最大端心号的灵验范畴*推断条件:大于0且小于65535,最大端心应大于最小端心*/if(maxPort<0 || maxPort>65535 || maxPort<minPort){ThreadScan.DLGINFO.setText("最大端心必须是0-65535而且大于最小端心的整数!");ThreadScan.DLGError.setVisible(true);return;}else{TCPThread.MAX_port=maxPort;}/**推断线程数量的灵验范畴*推断条件:大于1且小于200*/if(maxThread<1 || maxThread>200){FO.setText("线程数为1-200的整数! ");ThreadScan.DLGError.setVisible(true);return;}ThreadScan.Result.append("线程数"+ThreadScan.maxThread.getText()+"\n");//开用线程for(int i=0;i<maxThread;i++){new TCPThread("T" + i,i).start();}}}/**真止过得提示框中的“决定”按钮功能*/class OKAction implements ActionListener{public void actionPerformed (ActionEvent e){ ThreadScan.DLGError.dispose();}}多线程类文献:import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class TCPThread extends Thread{public static InetAddress hostAddress;//最小的端心号public static int MIN_port;//最大的端心号public static int MAX_port;//线程总数private int threadnum;//查询办法:0为ip;1为主机名public static int type;//ip天面前3位public static int ip1;//ip天面4~6位public static int ip2;//ip天面7~9位public static int ip3;//起初ip天面的末尾4位public static int ipstart;//中断ip天面的末尾4位public static int ipend;//完备的ip天面public static String ipAll;//扫描的主机称呼大概ipString hostname = "";//端心的类型String porttype = "0";/**构制函数*/public TCPThread(String name,int threadnum){ super(name);this.threadnum = threadnum;}/**运止函数*/public void run() {//ip天面int h = 0;//端心号int i = 0;Socket theTCPsocket;//根据ip天面举止扫描if(type == 0){//ip天面循环扫描for(h = ipstart; h <=ipend; h++){//组成完备的ip天面ipAll = "" + ip1 + "." + ip2 + "." + ip3 + "." + h;hostname = ipAll;try{//正在给定主机名的情况下决定主机的 IP 天面hostAddress=InetAddress.getByName(ipAll);}catch(UnknownHostException e){}//分歧的端心循环扫描for (i = MIN_port+threadnum; i < MAX_port + Integer.parseInt(ThreadScan.maxThread.getText());i += Integer.parseInt(ThreadScan.maxThread.getText())){try{theTCPsocket=newSocket(hostAddress,i);theTCPsocket.close();ThreadScan.Result.append(hostname+":"+i);//推断端心的类型switch(i){case 21:porttype = "(FTP)";break;case 23:porttype = "(TELNET)";break;case 25:porttype = "(SMTP)";break;case 80:porttype = "(HTTP)";break;case 110:porttype = "(POP)";break;case 139:porttype = "(netBIOS)";break;case 1433:porttype = "(SQL Server)";break;case 3389:porttype = "(Terminal Service)";break;case 443:porttype = "(HTTPS)";break;case 1521:porttype = "(Oracle)";break;}//端心不特定类型if(porttype.equals("0")){ ThreadScan.Result.append("\n");}else{ThreadScan.Result.append(":"+porttype+"\n");}}catch (IOException e){}}}//扫描完毕后,隐现扫描完毕,并将“决定”按钮树坐为可用if(i==MAX_port+Integer.parseInt(ThreadScan.maxThread.getTex t())){ThreadScan.Result.append("\n"+"扫描完毕...");//将"决定"按钮树坐成为可用if(!ThreadScan.Submit.isEnabled()){ ThreadScan.Submit.setEnabled(true);}}}//依照主机名举止端心扫描if(type == 1){for (i = MIN_port+threadnum; i < MAX_port+Integer.parseInt(ThreadScan.maxThread.getText());i += Integer.parseInt(ThreadScan.maxThread.getText())){try{theTCPsocket=newSocket(hostAddress,i);theTCPsocket.close();ThreadScan.Result.append(" "+i);switch(i){case 21:porttype = "(FTP)";break;case 23:porttype = "(TELNET)";break;case 25:porttype = "(SMTP)";break;case 80:porttype = "(HTTP)";break;case 110:porttype = "(POP)";break;case 139:porttype = "(netBIOS)";break;case 1433:porttype = "(SQL Server)";break;case 3389:porttype = "(Terminal Service)";break;case 443:porttype ="(HTTPS)";break;case 1521:porttype = "(Oracle)";break;}//端心不特定类型if(porttype.equals("0")){ ThreadScan.Result.append("\n");}else{ThreadScan.Result.append(":"+porttype+"\n");}}catch (IOException e){}}//扫描完毕后,隐现扫描完毕,并将【决定】按钮树坐为可用if(i==MAX_port+Integer.parseInt(ThreadScan.maxThread.getTex t())){ThreadScan.Result.append("\n"+"扫描完毕...");//将【决定】按钮树坐成为可用if(!ThreadScan.Submit.isEnabled()){ ThreadScan.Submit.setEnabled(true);}}}}}四、概括真验归纳大概论断1.通过本次真验,尔对付于JA VA编程又有了一个新的认识2.相识了IP天面扫描战端心扫描的本理.3.通过办理编程逢到的问题,普及编程火仄,聚集体味.。
端口扫描程序设计详细的报告+源代码
public static JTextField hostname=new JTextField("localhost",8);
//输入ip地址前3位的输入框
public static JTextField fromip1=new JTextField("0",3);
//输入ip地址4~6位的输入框
图1-4
3.5增加的保存及快捷键功能
图1-5
4.扫描的整个过程
4.1填写IP地址192、168、1、100—192、168、1、120
4.2填写端口扫描的范围为1—300
4.3线程数选择为100
4.4扫描结果如下
图1-6
三.端口扫描的主要部分程序如下
import java、net、*;
import java、io、*;
2、要求:熟悉有关定义、概念与实现算法,设计出程序流程框图与数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。
二、综合实验正文
1.编程语言的选择
针对编写的就是端口扫描的程序,所以我选择了JAVA编程,因为要简单而方便的试验端口扫描的功能。
2.端口扫描实现的功能就是:显示某个IP或某段IP的计算机的某一个或某些端口就是否正在工作
网络综合实验
任务书
一、目的与要求
1.性质:设计性实验。
2.任务:设计并实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。
3.目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术与方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制与调试网络程序的能力。
4.要求:熟悉有关定义、概念与实现算法,设计出程序流程框图与数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。
基于多线程的端口扫描程序课程设计报告
基于多线程的端口扫描程序课程设计报告IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】滁州学院课程设计报告课程名称:设计题目:基于多线程的端口扫描程序院部:计算机与信息工程学院专业:网络工程组别:第六组起止日期: 2012年12月31日~2013 年1月6日指导教师:计算机与信息工程学院二○一二年制课程设计任务书目录1需求分析1..1网络安全二十一世纪是信息化、网络化的世纪,信息是社会发展的重要资源。
信息安全保障能力是一个国家综合国力、竞争实力和生存能力的重要组成部分,是世界各国在奋力攀登的制高点。
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行。
网络安全包括技术领域和非技术领域两大部分:非技术领域包括一些制度、政策、管理、安全意识、实体安全等方面的内容;技术领域包括隐患扫描、防火墙、入侵检测、访问控制、虚拟专用网、CA认证、操作系统等方面的内容。
这些技术的目标是保证信息的可控性、可用性、保密性、完整性、和不可抵赖性。
端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。
课程背景随着Internet的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。
端口扫描技术是网络安全扫描技术一个重要的网络安全技术。
与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。
安全扫描是安全技术领域中重要的一类。
通过扫描能自动检测远端或本地主机系统信息,包括主机的基本信息(如计算机名、域名、组名、操作系统型等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进行安全评估,及时发现安全隐患,防患于未然。
网络的安全状况取决于网络中最薄弱的环节,任何疏忽都有可能引入不安全的因素,最有效的方法是定期对网络系统进行安全分析,及时发现并修正存在的脆弱,保证系统安全。
基于多线程的端口、漏洞扫描工具的设计毕业设计
目录1 引言1.1课题的来源、意义和目的 (1)1.2完成的内容与设计结果 (1)1.2.1 设计内容 (1)1.2.2 设计结果 (2)2 总体设计与实施方案2.1总体设计 (3)2.1.1 设计目标 (3)2.1.2 系统结构 (4)2.2实施方案 (4)2.2.1 开发平台和工具的选择 (4)2.2.2 方案实施步骤 (4)2.2.3 关键技术介绍 (5)3 系统的实现3.1准备阶段 (7)3.2主要功能、界面的设计 (7)3.2.1 系统菜单界面、功能的设计 (8)3.2.2 扫描系统界面、功能的设计 (10)3.2.3 端口扫描模块设计 (13)3.2.4 漏洞扫描模块设计 (21)3.2.5 弱口令扫描模块设计 (26)3.2.6 本地系统监控模块设计 (31)3.2.7 日志查询模块设计 (34)3.2.8 DOS工具集界面、功能的设计 (36)3.2.9 字典管理界面、功能的设计 (39)4 程序调试5 设计结果与改进要求5.1设计结果 (42)5.2改进要求及目标 (42)参考文献 (43)致谢 (44)1 引言1.1 课题的来源、意义和目的随着科学技术的发展,21世纪的人类已经生活在信息时代,计算机技术与网络技术已经深入到人类社会的各个方面。
近年来网络的迅速发展,给人们的生活带来了新的感受,同时人类社会对于网络的依赖性也越来越强。
信息技术的飞速发展给人们带来了极大的便利,同时也引入了巨大的安全隐患。
因此,网络安全问题越来越引起人们的广泛关注,并成为当今网络技术领域研究的重点。
目前,大多数的网络攻击,如:黑客攻击、木马、病毒都是通过安全漏洞侵入目标主机的。
如果我们能够根据具体的应用环境,尽可能早地通过网络扫描来发现这些漏洞,并及时采取适当的措施进行修补,就可以预防安全威胁的发生。
因此,网络安全管理者需要一套工具能够发现网络主机的脆弱性。
端口、漏洞扫描技术能够检测出网络中潜在的安全漏洞,从而使网络管理者一目了然,了解自身网络系统存在的问题。
端口扫描网络课程设计
端口扫描网络课程设计一、教学目标本课程的教学目标是让学生掌握端口扫描的基本原理和方法,能够使用常见的端口扫描工具进行实际操作,并了解端口扫描在网络安全领域的应用。
具体来说,知识目标包括:了解计算机网络的基本概念,掌握TCP/IP协议的工作原理,理解端口和端口扫描的概念;技能目标包括:能够使用至少一种端口扫描工具进行实际操作,能够分析和解释端口扫描的结果;情感态度价值观目标包括:培养学生对网络安全的兴趣和意识,使学生认识到保护网络安全的重要性。
二、教学内容本课程的教学内容主要包括端口扫描的基本原理、常见端口扫描工具的使用方法和端口扫描在网络安全领域的应用。
具体来说,教学大纲如下:1.计算机网络基本概念:介绍计算机网络的定义、功能和分类,掌握TCP/IP协议的工作原理。
2.端口和端口扫描:介绍端口的概念,掌握端口扫描的原理和方法。
3.常见端口扫描工具:介绍Nmap、Masscan等常见端口扫描工具的使用方法。
4.端口扫描实战:通过实际操作,让学生掌握端口扫描工具的使用技巧。
5.端口扫描在网络安全领域的应用:介绍端口扫描在网络安全检测、漏洞挖掘和攻击防御等方面的应用。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。
具体包括:1.讲授法:讲解计算机网络基本概念、端口扫描原理和常见端口扫描工具的使用方法。
2.案例分析法:分析实际案例,让学生了解端口扫描在网络安全领域的应用。
3.实验法:安排实验室实践环节,让学生亲手操作端口扫描工具,提高实际操作能力。
4.讨论法:学生进行小组讨论,分享学习心得和经验,促进学生之间的交流。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的教材,如《网络安全评估与应用》、《黑客攻防技术宝典》等。
2.参考书:提供网络安全领域的经典著作和最新研究成果,供学生拓展阅读。
3.多媒体资料:制作课件、教学视频等多媒体资料,帮助学生更好地理解课程内容。
基于多线程的端口扫描工具设计
基于多线程的端口扫描工具设计作者:程承来源:《科学与财富》2016年第25期摘要:计算机网络给人们的生活带来了巨大便利,但互联网是一个面向公众的开放系统,对数据的保密性和信息的安全性考虑得并不完善,存在着诸多隐患,网络安全形势日趋严峻。
在众多入侵检测技术当中,端口信息探测技术引起了越来越多人的关注。
本文通过阐述端口扫描与多线程的原理,介绍了一种高效率的端口扫描探测工具。
关键词:网络安全;入侵检测;端口扫描;多线程;对于网络入侵而言,攻击者在选定一个目标时,首先要获取该目标的一些基本信息,如其端口开放情况,再根据该端口的安全性,选择是否为注入木马的“后门”。
在这个过程中,使用端口扫描就是其中最简单但却是最重要的步骤之一,它可以完成上述任务,为下一步攻击做准备。
但是一般而言,单一或少量的端口扫描是没有意义的,原因是计算机端口数量较多,端口扫描必须在短时间内得到结果才有攻击意义。
因此,就需要一种可以充分利用现有计算机资源的技术,那就是多线程。
1 Winsock1.1 Winsock概述Winsock是从 Berkeley Sockets 扩展而来的,其在继承 Berkeley Sockets 的基础上,又进行了新的扩充。
这些扩充主要是提供了一些异步函数,并增加了符合WINDOWS消息驱动特性的网络事件异步选择机制。
Winsock由两部分组成:开发组件和运行组件。
开发组件:Windows Sockets 实现文档、应用程序接口(API)引入库和一些头文件。
运行组件:Windows Sockets 应用程序接口的动态链接库(WINSOCK.DLL)。
1.2 Winsock原理在TCP/IP网络中两个进程间的相互作用模式是客户端/服务器模式。
服务器流程如下:(1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。
(2)等待客户请求到达该端口。
(3)接收到重复服务请求,处理该请求并发送应答信号。
综合实验报告书(端口扫描)
综合实验报告( 2010 -- 2011 年度第二学期)名称:网络综合实验题目端口扫描程序院系:信息工程系班级:网络08K2学号:学生姓名:指导教师:鲁斌李莉王晓霞张铭泉设计周数: 2 周成绩:日期:2011 年7 月1 日一、综合实验的目的与要求1.任务:设计并实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。
2.目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。
3.要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。
4.学生要求人数:1人。
二、综合实验正文1.端口扫描器功能简介:服务器上所开放的端口就是潜在的通信通道,也就是一个入侵通道。
对目标计算机进行端口扫描,能得到许多有用的信息,进行端口扫描的方法很多,可以是手工进行扫描、也可以用端口扫描软件进行。
扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法可以搜集到很多关于目标主机的各种有用的信息,例如远程系统是否支持匿名登陆、是否存在可写的FTP目录、是否开放TELNET 服务和HTTPD服务等。
2.实验所用的端口扫描技术:端口扫描技术有TCP connect()扫描、TCP SYN扫描、TCP FIN 扫描、IP段扫描等等。
本次实验所用的技术是TCP connect()扫描,这是最基本的TCP 扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。
如果端口处于侦听状态,那么connect()就能成功。
否则,这个端口是不能用的,即没有提供服务。
这个技术的一个最大的优点是,你不需要任何权限。
系统中的任何用户都有权利使用这个调用。
3.实验具体实现方案:编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。
端口扫描实验报告
综合实验报告( 2010 -- 2011 年度第二学期)名称:网络综合实验题目:端口扫描程序院系:信息工程系班级:学号:学生姓名:指导教师:鲁斌李莉王晓霞张铭泉设计周数: 2 周成绩:日期:2011年7月1日一、综合实验的目的与要求1.任务:设计并实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。
2.目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。
3.要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。
4.学生要求人数:1人。
二、综合实验正文1.端口扫描器功能简介:服务器上所开放的端口就是潜在的通信通道,也就是一个入侵通道。
对目标计算机进行端口扫描,能得到许多有用的信息,进行端口扫描的方法很多,可以是手工进行扫描、也可以用端口扫描软件进行。
扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法可以搜集到很多关于目标主机的各种有用的信息,例如远程系统是否支持匿名登陆、是否存在可写的FTP目录、是否开放TELNET 服务和HTTPD服务等。
2.实验所用的端口扫描技术:端口扫描技术有TCP connect()扫描、TCP SYN扫描、TCP FIN 扫描、IP段扫描等等。
本次实验所用的技术是TCP connect()扫描,这是最基本的TCP 扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。
如果端口处于侦听状态,那么connect()就能成功。
否则,这个端口是不能用的,即没有提供服务。
这个技术的一个最大的优点是,你不需要任何权限。
系统中的任何用户都有权利使用这个调用。
3.实验具体实现方案:编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。
端口扫描网络课程设计
端口扫描网络课程设计一、课程目标知识目标:1. 让学生掌握端口扫描的基本概念、原理及分类。
2. 让学生了解网络安全中端口扫描的作用和意义。
3. 使学生了解常见端口对应的服务和应用程序。
技能目标:1. 培养学生运用网络工具进行端口扫描实践操作的能力。
2. 培养学生分析端口扫描结果,识别网络安全隐患的能力。
3. 培养学生制定和实施网络安全防护策略的能力。
情感态度价值观目标:1. 培养学生对网络安全的重视和责任感。
2. 培养学生主动探索、合作学习的良好习惯。
3. 培养学生遵守网络道德规范,维护网络安全的意识。
课程性质:本课程为计算机网络技术课程的拓展内容,侧重于实践操作和网络安全意识的培养。
学生特点:学生处于高年级阶段,具备一定的计算机网络知识基础,对实践操作和网络安全有兴趣。
教学要求:结合学生特点,注重理论与实践相结合,提高学生的网络安全意识和技能水平。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 端口扫描概述- 端口扫描的定义与作用- 端口扫描的分类及原理2. 常见端口与服务- 常见端口的分布及对应服务- 应用程序与服务的关系3. 端口扫描工具- 常用端口扫描工具介绍- 工具的选择与使用方法4. 端口扫描实践操作- 实际环境下的端口扫描演示- 学生实践操作练习5. 端口扫描结果分析- 结果解读与安全隐患识别- 网络安全防护策略制定6. 网络安全意识培养- 网络安全的重要性- 遵守网络道德规范,维护网络安全教学内容依据课程目标,结合课本内容进行组织。
教学大纲明确教学内容安排和进度,具体包括:- 端口扫描基础知识:第1章端口扫描概述- 常见端口与服务:第2章常见端口与服务- 端口扫描工具与实践操作:第3章端口扫描工具及第4章实践操作- 端口扫描结果分析与网络安全意识:第5章结果分析及第6章网络安全意识培养教学内容确保科学性和系统性,以帮助学生掌握网络安全知识,提高实践技能。
三、教学方法本课程采用多种教学方法相结合,旨在激发学生的学习兴趣,提高学生的主动性和实践操作能力。
基于多线程的端口扫描程序课程设计心得
感谢张巧云老师对我们小组的帮助和支持。
学生签名:2013年01月06日
通过这次课程实验,我懂得了很多的道理。
1.学习知识必须理论与实践相结合
在刚接到课程设计的题目的时候,我以为这些题的难度已经超过了我们的学习范畴,没想到,经过一番的研究和学习,现阶段,我们还是可以解决这个问题的。这次实践也让我学习到我们在课本上学习的理论的用处。提高了我对学习的兴趣。
2.学会合作
众人拾柴火焰高。没有哪个人能够独立的办成一件大事。通过这次的课程设计,我更加懂得了合作的重要性。小组成员在一起,为了一个目标一起奋斗,那是一种享受。虽然有时候也会发生口角,但是那都是思想和思想之间碰撞。
当天我们就分配起各自的任务.我向小组成员介绍了我们课程设计题目,然后就是小组成员的信息大搜索。当天收获不大。我想,我们不能就这样认输了,我和吴明诏同学详细的审视了题目,开始从最基本的开始,看课本。我们在一遍一遍的思考中渐渐的有了一点头绪。当然,其他同学的第二天,我们开始了尝试。我们提出了一些设计思路.我们先把主函数的整体框架列出来,完后找出所需要的子函数。然后再把子函数分配给大家。这样我们就把大问题化成小问题了。
先大体上写好函数框架,在针对性的编写子函数这样的思路,对我们后来的设计起了很大的好的作用。用了好长时间把基本的程序写好之后,首先调试的时候,出了一些我们解决不了的问题,我们咨询了老师,老师对我们做的软件做了肯定的评价,然后对我们提出的问题进行了解决,这大大提高了我们做这个课程设计的热情。
皇天不负有心人,在我们的共同努力下课程设计的整体已经定型完毕。剩下的修修补补。小组成员开始准备答辩时用的课程设计报告好。有了自己的努力,做什么都会很好写。张老师说课程设计报告应该严格按照他给的模版写。我下载下来好好的看了看,仔细研究了一下,然后就开始着手写课程设计报告了。课程设计走向尾声。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
滁州学院课程设计报告课程名称:设计题目:基于多线程的端口扫描程序院部:计算机与信息工程学院专业:网络工程组别:第六组起止日期: 2012 年12月31日~2013 年1月6日指导教师:计算机与信息工程学院二○一二年制课程设计任务书目录1 需求分析. 01..1 网络安全 01.2 课程背景 01.3 扫描器 01.4 多线程扫描器介绍 (1)错误! 未定义书签。
错误! 未定义书签。
错误! 未定义书签。
错误! 未定义书签。
1.5 端口扫描 (2)2 概要设计. (3)2.1 整体框架设计 (3)2.2 流程图描述 (3)3 详细设计. (3)3.1 端口扫描线程启动 (3)3.2 GUI 图形界面 (5)3.3 按钮监听及异常处理 (6)4 调试与操作说明. (8)4.1 运行界面 (8)4.2 扫描结果 (8)4.3 错误提示 (8)5 课程设计总结与体会. (8)6 参考文献. (9)7 致谢. (9)8 附录. 01 需求分析1..1 网络安全二十一世纪是信息化、网络化的世纪,信息是社会发展的重要资源。
信息安全保障能力是一个国家综合国力、经济竞争实力和生存能力的重要组成部分,是世界各国在奋力攀登的制高点。
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行。
网络安全包括技术领域和非技术领域两大部分: 非技术领域包括一些制度、政策、管理、安全意识、实体安全等方面的内容; 技术领域包括隐患扫描、防火墙、入侵检测、访问控制、虚拟专用网、CA 认证、操作系统等方面的内容。
这些技术的目标是保证信息的可控性、可用性、保密性、完整性、和不可抵赖性。
端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。
1.2 课程背景随着Internet 的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。
端口扫描技术是网络安全扫描技术一个重要的网络安全技术。
与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。
安全扫描是安全技术领域中重要的一类。
通过扫描能自动检测远端或本地主机系统信息,包括主机的基本信息(如计算机名、域名、组名、操作系统型等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进行安全评估,及时发现安全隐患,防患于未然。
网络的安全状况取决于网络中最薄弱的环节,任何疏忽都有可能引入不安全的因素,最有效的方法是定期对网络系统进行安全分析,及时发现并修正存在的脆弱,保证系统安全。
国外安全扫描技术的历史可以追溯到20 世纪90 年代,当时因特网刚刚起步,但是在过去的十年内,扫描技术飞速发展,迄今为止,其扫描技术已经非常完善,但是在全面性,隐蔽性和智能性上还有待提高。
安全扫描从最初专门为UNIX 系统而编写的一些只有简单功能的小程序发展到现在,已经出现了可以运行多个操作系统平台上的,具有复杂功能的系统程序。
国内的扫描技术是在国外的扫描器基础上发展起来的。
其中有一些专门从事安全技术的公司。
这些公司的扫描器以硬件为主,其特点是执行速度快,不像软件一样受到安装主机系统的限制。
然而对于更多的基于主机的端口扫描而言,简单,实用,可靠才是它们的长处。
1.3 扫描器扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可以不留痕迹的发现远程服务器的各种TCP端口的分配。
这就能让我们间接的或直观的了解到远程主机所存在的安全问题。
为了保证网络中计算机的安全性,必须采取主动策略, 快速、及时、准确、安全的检测出网络中计算机及防火墙开放的和未开放的端口。
计算机端口扫描技术就是这种主动防御策略实现的重要技术手段。
扫描器采用模拟攻击的形式对目标可能存在的已知安全漏洞进行逐项检查。
目标可以是工作站、服务器、交换机、数据库应用等各种对象。
然后根据扫描结果向系统管理员提供周密可靠的安全性分析报告,为提高网络安全整体水平产生重要依据。
在网络安全体系的建设中,安全扫描工具花费低、效果好、见效快、与网络的运行相对对立、安装运行简单,可以大规模减少安全管理员的手工劳动,有利于保持全网安全政策的统一和稳定。
1.4 多线程扫描器介绍在java 中,组件放置在窗体上的方式是完全基于代码的。
组件放置在窗体上的方式通常不是通过绝对坐标控制,而是由“布局管理器”根据组件加入的顺序决定其位置。
每个容器都有一个属于的自己布局管理器。
使用不同的布局管理器,组件大小,位置和形状将大不相同。
表格型布局管理器将容器划分成为一个多行多列的表格,表格的大小全部相同,是由其中最大的组件所决定。
通过add 方法可以将组件一一放在每个表格中。
表格包型布局与表格型布局有些相近,但与表格型布局比较起来,表格包型更加灵活,更加复杂。
通常表格包型布局,我们可以设定每个格子的大小,间隙等。
每个正在系统上运行的程序都是一个进程。
每个进程包含一到多个线程。
进程也可能是整个程序或者是部分程序的动态执行。
线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。
也可以把它理解为代码运行的上下文。
所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。
通常由操作系统负责多个线程的调度和执行。
线程是程序中一个单一的顺序控制流程. 在单个程序中同时运行多个线程完成不同的工作, 称为多线程.线程和进程的区别在于, 子进程和父进程有不同的代码和数据空间, 而多个线程则共享数据空间, 每个线程有自己的执行堆栈和程序计数器为其执行上下文. 多线程主要是为了节约CPU时间, 发挥利用, 根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。
在计算机编程中,一个基本的概念就是同时对多个任务加以控制。
许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。
可以通过多种途径达到这个目的。
最开始的时候,那些掌握机器低级语言的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的中断实现的。
尽管这是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题。
中断对那些实时性很强的任务来说是很有必要的。
但对于其他许多问题,只要求将问题划分进入独立运行的程序片断中,使整个程序能更迅速地响应用户的请求。
最开始,线程只是用于分配单个处理器的处理时间的一种工具。
但假如操作系统本身支持多个处理器,那么每个线程都可分配给一个不同的处理器,真正进入“并行运算”状态。
从程序设计语言的角度看,多线程操作最有价值的特性之一就是程序员不必关心到底使用了多少个处理器。
程序在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需作出任何特殊的调校。
根据前面的论述,大家可能感觉线程处理非常简单。
但必须注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到一个问题。
举个例子来说,两个线程不能将信息同时发送给一台打印机。
为解决这个问题,对那些可共享的资源来说(比如打印机),它们在使用期间必须进入锁定状态。
所以一个线程可将资源锁定,在完成了它的任务后,再解开(释放)这个锁,使其他线程可以接着使用同样的资源。
多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。
线程是在同一时间需要完成多项任务的时候实现的。
线程优先级被线程调度用来判定何时哪个线程允许运行。
理论上,优先级高的线程比优先级低的线程获得更多的CPU时间。
实际上,线程获得的CPU 时间通常由包括优先级在内的多个因素决定(例如,一个实行多任务处理的操作系统如何更有效的利用CPU时间)。
一个优先级高的线程自然比优先级低的线程优先。
举例来说,当低优先级线程正在运行,而一个高优先级的线程被恢复(例如从沉睡中或等待I/O 中),它将抢占低优先级线程所使用的CPU。
理论上,等优先级线程有同等的权利使用CPU。
但你必须小心了。
记住,Java 是被设计成能在很多环境下工作的。
一些环境下实现多任务处理从本质上与其他环境不同。
为安全起见,等优先级线程偶尔也受控制。
这保证了所有线程在无优先级的操作系统下都有机会运行。
实际上,在无优先级的环境下,多数线程仍然有机会运行,因为很多线程不可避免的会遭遇阻塞,例如等待输入输出。
遇到这种情形,阻塞的线程挂起,其他线程运行。
但是如果你希望多线程执行的顺利的话,最好不要采用这种方法。
同样,有些类型的任务是占CPU 的。
对于这些支配CPU类型的线程,有时你希望能够支配它们,以便使其他线程可以运行。
多个线程同时读写同一份共享资源的时候,可能会引起冲突。
这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。
同步的关键是管程,管程是一个互斥独占锁定的对象,在给定的时间,仅有一个线程获得管程,当一个线程需要锁定时,他必须进入管程。
1.5 端口扫描一个端口就是一个潜在的通信通道,也就是一个入侵通道。
对目标计算机进行端口扫描,能得到许多有用的信息。
进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。
在手工进行扫描时,需要熟悉各种命令。
对命令执行后的输出进行分析。
用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。
通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞2 概要设计2.1 整体框架设计经过我们组员的思考很研究,得出了以下几个模块的简单端口扫描器,整个端口扫描器的核心模块是是端口扫描系统,它由许多子模块组成,其结构如下图所示:TCP 端口扫描程序2.2 流程图描述开始输输入入主端机口名的或范要围查找的的参ip数设输计入线模块结束3 详细设计3.1 端口扫描线程启动扫描程序主要运用Socket 编程。
对于一个工作齐全的Socket ,其工作过程包含以下四个就基本步骤:创建通信双方的socket 链接,即分别为服务器和客户端创建Socket 对象,建立Socket 连接;打开连接到Socket 的输入流和输出流;按照一定的协议对Socket 进行读/写操作;关闭连接。
以下是程序代码// 运行扫描端口public void run()基本信息检测模块检测信息匹配模块是否在参数范围中线程数通过scoket匹配过滤原则来进行端口扫IP地址是否存结果输出模块(通过GUI 界面输出得到的结果)GUI界面中打印出来读取应答内容{int i;Socket theTCPsocket;for(i{try{theTCPsocket=new Socket(hostAddress,i);theTCPsocket.close();switch(i){case 21:break;case 23:break;case 25:break;case 80:break;case 110:break;case 139:break;}}catch (IOException e){}}if (i==MAX_port){}}}3.2 GUI 图形界面图形用户界面是软件产品和用户交互的接口,是软件产品中用户直接可以看到并直接操作的部分。