基于多线程的端口扫描程序课程设计报告

合集下载

端口扫描实验实验报告范文nmap端口扫描工具

端口扫描实验实验报告范文nmap端口扫描工具

端口扫描实验实验报告范文nmap端口扫描工具网络攻防对抗实验报告实验名称:端口扫描实验(实验三)指导教师:专业班级:姓名:学号:_____电子邮件:___实验地点:实验日期:实验成绩:____________________一、实验目的通过练习使用网络端口扫描器,了解目标主机开放的端口和服务程序,从而获得系统的有用信息,发现网络系统的安全漏洞。

在实验中,我们将在Window操作系统下使用端口扫描工具某can,Nmap和流光Flu某ay5.0进行网络端口综合扫描实验,并给出安全性评估报告,加深对各种网络和系统漏洞的理解。

同时,通过系统漏洞的入侵练习增强网络安全防护意识。

二、实验原理TCP/IP协议在网络层是无连接的,而“端口”,就已经到了传输层。

端口便是计算机与外部通信的途径。

一个端口就是一个潜在的通信通道,也就是一个入侵通道。

对目标计算机进行端口扫描,能得到许多有用的信息。

进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。

在手工进行扫描时,需要熟悉各种命令,对命令执行后的输析出进行分,效率较低。

用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。

通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。

扫描工具根据作用的环境不同可分为:网络漏洞扫描工具和主机漏洞扫描工具。

前者指通过网络检测远程目标网络和主机系统所存在漏洞的扫描工具。

后者指在本机运行的检测本地系统安全漏洞的扫描工具。

三、实验内容和步骤某can的应用1.某can的使用某-canv3.3采用多线程方式对指定IP地址段进行扫描,扫描内容包括:SNMP信息,CGI漏洞,IIS漏洞,RPC漏洞,SSL漏洞,SQL-SERVER、SMTP-SERVER、弱口令用户等。

扫描结果保存在/log/目录中。

其主界面为下图所示。

2.开始扫描(1)配置扫描参数,先点击扫描参数,在下面红框内输入你要扫描主机的ip地址(或是一个范围),本说明中我们设置为靶机服务器的IP地址,45(2)选择需要扫描的项目,点击扫描模块可以选择扫描的项目(3)开始扫描,该扫描过程会比较长,请大家耐心等待,并思考各种漏洞的含义。

操作系统课程设计 基于TCP端口扫描程序

操作系统课程设计 基于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协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机的此端口在规定时间内有回复,则说明该端口是开放的。

基于多线程的端口扫描程序课程设计报告

基于多线程的端口扫描程序课程设计报告

滁州学院课程设计报告课程名称:设计题目:基于多线程的端口扫描程序院部:计算机与信息工程学院专业:网络工程组别:第六组起止日期: 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 的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。

端口扫描技术是网络安全扫描技术一个重要的网络安全技术。

计算机网络课程设计++端口扫描++实验报告

计算机网络课程设计++端口扫描++实验报告

目录1需求分析 (3)1.1课程设计目的 (3)1.2课程设计内容 (3)1.3课程设计要求 (3)2概要设计 (3)2.1原理概述 (3)2.2运行环境 (3)2.3基本设计思路 (3)2.4功能模块设计 (3)3详细设计 (3)3.1程序流程 (3)3.2主要算法 (5)3.3主要数据结构 (6)3.4主要函数说明 (6)4用户使用手册 (7)5项目分析与总结 (7)5.1项目分析 (7)5.2总结与建议 (8)附录 A源程序代码文件说明 (8)附录 B参考文献 (20)1.需求分析1.1课程设计目的加深对 TCP/IP 的理解,熟悉 socket 编程。

课程设计内容实现一个扫描器,使用 TCPconnect 进行端口扫描,并把扫描到的结果记录下来。

课程设计要求(1) Windows 或 Linux 环境下,程序在单机上运行;(2)使用端口扫描对一台主机进行扫描,并显示出结果;对一个网段进行IP 扫描,显示出结果;(3)提供友好的用户界面。

2.概要设计2.1原理概述TCPconnect 扫描是最基本的扫描,操作系统提供的 connect ()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。

如果端口处于侦听状态,那么connect ()就能成功。

否则,这个端口是不能用的,即没有提供服务。

2.2 运行环境Windows xp,VC++6.02.3 基本设计思路创建一个 CSocket 套接字,通过 CSocket 的 Connect 函数测试该主机的某个端口是否能够连通,获得该端口的打开状态。

2.4 功能模块设计(1)测试主机某个端口是否打开;(2)“扫描结果”标题栏;(3)扫描单个或多个端口的单选按钮;(4)“扫描”,“停止”,“保存”按钮。

3.详细设计3.1程序流程开始扫描初始化T F扫描单个端口?m_bSinglePort=true;m_bSinglePort=false;m_cSinglePort.EnableWindow();m_cSinglePort.EnableWindow(false); m_cPortFrom.EnableWindow(false);m_cPortFrom.EnableWindow();m_cPortTo.EnableWindow(false);m_cPortTo.EnableWindow();m_cBtnStop.EnableWindow(false);m_cBtnStop.EnableWindow(false);设置端口开始侦听端口T有错误?F显示结果设置下一端口扫描结束3.2主要算法( 1)测试主机某个端口是否打开的函数TestConnection ():BOOL CMyDlg::TestConnection(CString IP,UINT nPort){ CSocket* pSocket;pSocket=new CSocket;ASSERT(pSocket);if (!pSocket->Create()){ delete pSocket;pSocket=NULL;return false;}while (!pSocket->Connect(IP,nPort)){ delete pSocket;pSocket=NULL;return false;}pSocket->Close();delete pSocket;return true;}( 2)响应单选按钮“扫描单个端口”和“扫描多个端口”的单击消息:void CMyDlg::OnRadio1Single(){m_bSinglePort=true;m_cSinglePort.EnableWindow();m_cPortFrom.EnableWindow(false);m_cPortTo.EnableWindow(false);m_cBtnStop.EnableWindow(false);}void CMyDlg::OnRadio2Range(){ m_bSinglePort=false;m_cSinglePort.EnableWindow(false);m_cPortFrom.EnableWindow();m_cPortTo.EnableWindow();m_cBtnStop.EnableWindow(false);}( 3)显示列表框标题栏的成员函数://增加列表框标题栏的某一列BOOLCMyDlg::AddColumn(LPCTSTR strItem,int nItem,int nSubItem,int nMask,int nFmt) {LV_COLUMN lvc;lvc.mask=nMask;lvc.fmt=nFmt;lvc.pszText=(LPTSTR) strItem;lvc.cx=m_cResult.GetStringWidth(lvc.pszText)+25;if(nMask&LVCF_SUBITEM){ if(nSubItem!=-1)lvc.iSubItem=nSubItem;elselvc.iSubItem=nItem;}return m_cResult.InsertColumn(nItem,&lvc);}//在列表框中加一条BOOL CMyDlg::AddItem(int nItem,int nSubItem,LPCTSTR strItem ,int nImageIndex){ LV_ITEM lvItem;lvItem.mask=LVIF_TEXT;lvItem.iItem=nItem;lvItem.iSubItem=nSubItem;lvItem.pszText=(LPTSTR)strItem;if(nImageIndex!=-1){ lvItem.mask|=LVIF_IMAGE;lvItem.iImage|=LVIF_IMAGE;}if(nSubItem==0)return m_cResult.InsertItem(&lvItem);return m_cResult.SetItem(&lvItem);}//加一列标题栏字符void CMyDlg::AddHeader(LPTSTR hdr){ if (m_pColumns)m_pColumns->AddTail(hdr);}//显示列表框标题栏void CMyDlg::ShowHeaders(){int nIndex=0;POSITION pos=m_pColumns->GetHeadPosition();while(pos){ CString hdr=(CString)m_pColumns->GetNext(pos);AddColumn(hdr,nIndex++);}}(4)“扫描”,“停止”,“保存”按钮,见附录程序。

基于多线程的端口扫描程序

基于多线程的端口扫描程序

计算机网络课程课程设计任务书计算机网络设计说明书学院名称:计算机与信息工程学院班级名称:网络工程122班学生姓名:学号:题目:基于多线程的端口扫描程序指导教师姓名:起止日期:2015年6月13日至2015年6月20日一、选题背景随着互联网的飞速发展,网络入侵行为日益严重,网络安全成为人们关注的焦点。

端口扫描技术是网络安全扫描技术的重要技术之一。

对目标系统进行端口扫描,是网络系统入侵者进入目标系统的第一步。

网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。

网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。

现实世界中的很多过程都具有多条线索同时动作的特性。

Java语言的一大特性就是内置对多线程的支持。

多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。

端口是由计算机的通信协议TCP/IP协议定义的。

其中规定,有IP地址和端口号作为套接字,它代表TCP连接的一个连接端,一般称为Socket。

具体来说,就是用[IP:端口]来定位一台主机的进程。

可见端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。

由此可见,通过扫描端口,就可以判断出目标计算机有哪些通信进程正在等待连接。

利用TCP connect扫描原理,扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机该端口有回复,则说明该端口开放。

利用多线程技术实现了对一目标IP进行设定数目的端口扫描,对多IP段的特定端口进行扫描。

二、方案设计多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序。

端口扫描与设计实验报告

端口扫描与设计实验报告

北京理工大学珠海学院课程设计说明书2013—2014学年第1学期题目: 端口扫描器的设计与实现学院:计算机专业班级:计算机科学与技术4班学号: ************/019学生姓名:官广昌黄晨豪指导教师:***成绩:时间: 2013年12月28北京理工大学珠海学院课程设计任务书2013 ~2014 学年第1 学期学生姓名:官广昌黄晨豪专业班级: 11计算机科学与技术4班指导教师:刘玉仙工作部门:计算机学院一、课程设计题目端口扫描器的设计与实现二、课程设计内容对ip端口进行扫描,分析结果。

三、进度安排(1)1-4学时,选定题目、分析需求、理解需求;(2)5-8学时,制定设计方案;(3)9-16学时,编写程序、调试、测试;(4)17-20学时,编写设计报告;(5)21-24学时,答辩。

四、基本要求1.网络安全设计方案具有实用价值;2.根据指导教师给出的题目进行分配,每个题目最多不超过2个人完成。

3.题目可以相同,但参数要求不同,每人必须独立完成。

4、写出课程设计报告,应不少于3000字(不含附录),同一组学生只需提交1份,但必须在报告中列明分工。

课程负责人签名:年月日课程设计成绩评定表分工:端口扫描器的设计与实现摘要计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。

端口扫描技术是发现安全问题的重要手段之一。

本程序是在Windows系统中使用C语言完成的一个端口扫描程序。

此程序主要完成了ip端口的扫描功能。

扫描能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。

扫描结果以列表的形式直观地展现出来。

通过对扫描结果的分析知道了,有哪些端口是开放的。

关键词:端口扫描 ip端口网络安全 ip扫描目录第一章课程设计的目的 (2)1.1、课题的背景及意义 (2)1.2、端口扫描现状 (2)第二章功能模块与系统结构 (2)第三章相关知识 (3)3.1、端口的基本概念 (3)3.2、常见端口介绍 (4)第四章实验流程 (6)4.1、步骤 (6)4.2、流程图 (6)第五章结果 (7)第六章源程序 (10)参考文献 (19)心得体会 (19)附件 (20)第一章课程设计的目的1.1、课题的背景及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。

端口扫描的课程设计

端口扫描的课程设计

端口扫描的课程设计一、课程目标知识目标: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

基于多线程的端口扫描程序课程设计报告讲解

基于多线程的端口扫描程序课程设计报告讲解

滁州学院课程设计报告课程名称:设计题目:基于多线程的端口扫描程序院部:计算机与信息工程学院专业:网络工程组别:第六组起止日期: 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的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。

端口扫描技术是网络安全扫描技术一个重要的网络安全技术。

与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。

安全扫描是安全技术领域中重要的一类。

通过扫描能自动检测远端或本地主机系统信息,包括主机的基本信息(如计算机名、域名、组名、操作系统型等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进行安全评估,及时发现安全隐患,防患于未然。

网络的安全状况取决于网络中最薄弱的环节,任何疏忽都有可能引入不安全的因素,最有效的方法是定期对网络系统进行安全分析,及时发现并修正存在的脆弱,保证系统安全。

网络综合实验报告--端口扫描资料

网络综合实验报告--端口扫描资料

综合实验报告( 2016-- 2017年度第 1 学期)名称:网络综合实验题目:端口扫描程序设计与实现院系:计算机系班级:网络1301班学号:学生姓名:指导教师:李丽芬设计周数: 1 周成绩:日期:2017年1月13日网络综合实验任务书一、实验名称:端口扫描程序设计与实现二、目的与要求1.任务:设计并实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。

2.目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。

3.要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。

4.学生人数:1人。

三、主要内容1.编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。

编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。

(1)设定好一定的端口扫描范围,并设定每个端口扫描的次数,因为有可能有的端口一次扫描可能不通;(2)创建socket,通过socket的connect方法来连接远程IP地址以及对应的端口;(3)如果返回false,表示端口没有开放,否则端口开放;(4)选择其中一个活动端口,建立连接并发送一个数据块,服务器收到后原样返回客户端。

2.四、进度计划五、设计成果要求1.完成规定的实验任务,保质保量;2.完成综合实验报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注重对实验思路的归纳和对问题解决过程的总结。

六、考核方式1.平时成绩+验收答辩+实验报告;2.五级分制。

学生姓名:指导教师:李丽芬2017 年1 月9 日一、课程设计的目的与要求1.任务实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。

2.目的加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。

基于多线程的端口扫描工具设计

基于多线程的端口扫描工具设计

基于多线程的端口扫描工具设计作者:程承来源:《科学与财富》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的计算机的某一个或某些端口是否正在工作。

端口扫描网络课程设计

端口扫描网络课程设计

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

滁州学院课程设计报告课程名称:设计题目:基于多线程的端口扫描程序院部:计算机与信息工程学院专业:网络工程组别:第六组起止日期: 2012年12月31日~2013 年1月6日指导教师:计算机与信息工程学院二○一二年制课程设计任务书目录1需求分析1..1网络安全二十一世纪是信息化、网络化的世纪,信息是社会发展的重要资源。

信息安全保障能力是一个国家综合国力、竞争实力和生存能力的重要组成部分,是世界各国在奋力攀登的制高点。

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行。

网络安全包括技术领域和非技术领域两大部分:非技术领域包括一些制度、政策、管理、安全意识、实体安全等方面的内容;技术领域包括隐患扫描、防火墙、入侵检测、访问控制、虚拟专用网、CA认证、操作系统等方面的内容。

这些技术的目标是保证信息的可控性、可用性、保密性、完整性、和不可抵赖性。

端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。

课程背景随着Internet的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。

端口扫描技术是网络安全扫描技术一个重要的网络安全技术。

与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。

安全扫描是安全技术领域中重要的一类。

通过扫描能自动检测远端或本地主机系统信息,包括主机的基本信息(如计算机名、域名、组名、操作系统型等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进行安全评估,及时发现安全隐患,防患于未然。

网络的安全状况取决于网络中最薄弱的环节,任何疏忽都有可能引入不安全的因素,最有效的方法是定期对网络系统进行安全分析,及时发现并修正存在的脆弱,保证系统安全。

国外安全扫描技术的历史可以追溯到20世纪90年代,当时因特网刚刚起步,但是在过去的十年内,扫描技术飞速发展,迄今为止,其扫描技术已经非常完善,但是在全面性,隐蔽性和智能性上还有待提高。

安全扫描从最初专门为UNIX系统而编写的一些只有简单功能的小程序发展到现在,已经出现了可以运行多个操作系统平台上的,具有复杂功能的系统程序。

国内的扫描技术是在国外的扫描器基础上发展起来的。

其中有一些专门从事安全技术的公司。

这些公司的扫描器以硬件为主,其特点是执行速度快,不像软件一样受到安装主机系统的限制。

然而对于更多的基于主机的端口扫描而言,简单,实用,可靠才是它们的长处。

扫描器扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可以不留痕迹的发现远程服务器的各种TCP端口的分配。

这就能让我们间接的或直观的了解到远程主机所存在的安全问题。

为了保证网络中计算机的安全性,必须采取主动策略,快速、及时、准确、安全的检测出网络中计算机及防火墙开放的和未开放的端口。

计算机端口扫描技术就是这种主动防御策略实现的重要技术手段。

扫描器采用模拟攻击的形式对目标可能存在的已知安全漏洞进行逐项检查。

目标可以是工作站、服务器、交换机、数据库应用等各种对象。

然后根据扫描结果向系统管理员提供周密可靠的安全性分析报告,为提高网络安全整体水平产生重要依据。

在网络安全体系的建设中,安全扫描工具花费低、效果好、见效快、与网络的运行相对对立、安装运行简单,可以大规模减少安全管理员的手工劳动,有利于保持全网安全政策的统一和稳定。

多线程扫描器介绍在java中,组件放置在窗体上的方式是完全基于代码的。

组件放置在窗体上的方式通常不是通过绝对坐标控制,而是由“布局管理器”根据组件加入的顺序决定其位置。

每个容器都有一个属于的自己布局管理器。

使用不同的布局管理器,组件大小,位置和形状将大不相同。

表格型布局管理器将容器划分成为一个多行多列的表格,表格的大小全部相同,是由其中最大的组件所决定。

通过add方法可以将组件一一放在每个表格中。

表格包型布局与表格型布局有些相近,但与表格型布局比较起来,表格包型更加灵活,更加复杂。

通常表格包型布局,我们可以设定每个格子的大小,间隙等。

每个正在系统上运行的程序都是一个。

每个进程包含一到多个线程。

进程也可能是整个或者是部分程序的动态执行。

线程是一组的集合,或者是程序的特殊段,它可以在程序里独立执行。

也可以把它理解为运行的上下文。

所以线程基本上是轻量级的进程,它负责在单个程序里执行多。

通常由负责多个线程的调度和执行。

线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。

在计算机编程中,一个基本的概念就是同时对多个加以控制。

许多问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主。

可以通过多种途径达到这个目的。

最开始的时候,那些掌握机器低级语言的编写一些“中断服务例程”,主的暂停是通过级的中断实现的。

尽管这是一种有用的方法,但编出的很难移植,由此造成了另一类的代价高昂问题。

中断对那些实时性很强的来说是很有必要的。

但对于其他许多问题,只要求将问题划分进入独立运行的片断中,使整个程序能更迅速地响应用户的请求。

最开始,线程只是用于分配单个处理器的处理时间的一种工具。

但假如本身支持多个处理器,那么每个线程都可分配给一个不同的处理器,真正进入“并行运算”状态。

从的角度看,多线程操作最有价值的特性之一就是不必关心到底使用了多少个处理器。

在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需作出任何特殊的调校。

根据前面的论述,大家可能感觉线程处理非常简单。

但必须注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到一个问题。

举个例子来说,两个线程不能将信息同时发送给一台。

为解决这个问题,对那些可共享的资源来说(比如),它们在使用期间必须进入锁定状态。

所以一个线程可将资源锁定,在完成了它的后,再解开(释放)这个锁,使其他线程可以接着使用同样的资源。

多线程是为了同步完成多项,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。

线程是在同一时间需要完成多项的时候实现的。

线程优先级被线程调度用来判定何时哪个线程允许运行。

理论上,优先级高的线程比优先级低的线程获得更多的CPU时间。

实际上,线程获得的CPU 时间通常由包括优先级在内的多个因素决定(例如,一个实行多任务处理的操作系统如何更有效的利用CPU时间)。

一个优先级高的线程自然比优先级低的线程优先。

举例来说,当低优先级线程正在运行,而一个高优先级的线程被恢复(例如从沉睡中或等待I/O中),它将抢占低优先级线程所使用的CPU。

理论上,等优先级线程有同等的权利使用CPU。

但你必须小心了。

记住, Java是被设计成能在很多环境下工作的。

一些环境下实现多任务处理从本质上与其他环境不同。

为安全起见,等优先级线程偶尔也受控制。

这保证了所有线程在无优先级的操作系统下都有机会运行。

实际上,在无优先级的环境下,多数线程仍然有机会运行,因为很多线程不可避免的会遭遇阻塞,例如等待输入输出。

遇到这种情形,阻塞的线程挂起,其他线程运行。

但是如果你希望多线程执行的顺利的话,最好不要采用这种方法。

同样,有些类型的任务是占CPU 的。

对于这些支配CPU类型的线程,有时你希望能够支配它们,以便使其他线程可以运行。

多个线程同时读写同一份共享资源的时候,可能会引起冲突。

这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。

同步的关键是管程,管程是一个互斥独占锁定的对象,在给定的时间,仅有一个线程获得管程,当一个线程需要锁定时,他必须进入管程。

端口扫描一个端口就是一个潜在的通信通道,也就是一个入侵通道。

对目标计算机进行端口扫描,能得到许多有用的信息。

进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。

在手工进行扫描时,需要熟悉各种命令。

对命令执行后的输出进行分析。

用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。

通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。

2概要设计整体框架设计经过我们组员的思考很研究,得出了以下几个模块的简单端口扫描器,整个端口扫描器的核心模块是是端口扫描系统,它由许多子模块组成,其结构如下图所示:流程图描述3详细设计端口扫描线程启动扫描程序主要运用Socket编程。

对于一个工作齐全的Socket,其工作过程包含以下四个就基本步骤:创建通信双方的socket链接,即分别为服务器和客户端创建Socket对象,建立Socket连接;打开连接到Socket的输入流和输出流;按照一定的协议对Socket进行读/写操作;关闭连接。

以下是程序代码tart();}}}4调试与操作说明运行界面对本机进行多线程的端口扫描,即在ip或域名中输入localhost 可对本机进行端口进行扫描,也可输入其他的ip地址或域名,可自行设置端口范围如从0到1000,最大不超过65535,可设置线程数范围为0~200,扫描状态为未开始,点击确定即可运行程序。

扫描结果程序运行后,可以得到相关的端口扫描过程,其中扫描状态显示正在扫描的端口号,如下:程序运行结束后在扫描结果中显示扫描结束,并在扫描状态中显示完成。

错误提示程序中往往由于一些数据不正确会造成运行后错误,所以在程序中添加了异常处理机制,其中遇到的错误可能有以下几种:当端口号或线程数不是整数时会出现如下错误:当ip地址或域名错误时,会出现如下错误:当最小端口数不在0~65535且不小于最大端口数时会出现如下错误:当最大端口数不在0~65535且不大于最小端口数时会出现如下错误:当线程数范围不在0~200时会出现如下错误:5课程设计总结与体会本组成员共同设计的基于多线程的端口扫描程序基本满足了课程设计的要求,能够很好地对本机或其他电脑端口进行扫描,同时也处理了程序中可能出现的错误。

本次课程设计,使我们对《计算机网络》这门课程有了更深入的理解。

《计算机网络》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。

要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,加强团队合作。

在本课程设计中,我们明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写大程序的能力。

培养了基本的、良好的程序设计技能以及合作能力。

这次课程设计同样提高了我们的综合运用所学知识的能力。

课程设计程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题模块化,划分成小块以后就逐个去解决。

相关文档
最新文档