端口扫描程序设计

合集下载

基于Windows2000的端口扫描系统设计和实现

基于Windows2000的端口扫描系统设计和实现
维普资讯
C 3 15 / P 4 - 2 8 T
计 算机 工 程与科 学
C  ̄ 'E NG N E l OM L R E l E R NG & S I NC T CE E
20 0 2年第 2 4卷第 2期
V0 4. o 2 2 0 l2 N . .0 2
c ni sann ,U Ppr s n i ,s  ̄enBokat ka 3cp r gI a akt psi ytel a hs. g D tc nn o a g i e vr tc n a t i dt p ce as gb cl ot n a un P a s n h o 关键 词 :端 口扫描 ; 『 攻击 ;捕 获 【 玛络 P数据 包;原始套 接 卒
文献标识 码 :A
运行状 况 。国外在这 方 面的实 际产 品研 究 主要 集
1 引 言
漏洞 扫 描是 自动检 测远 端或 本地 主机 安垒 漏
中 在 N I公 司 ( e ok Asc t A Nt r soie w as
h10 |l 0 ,
Ic )和 IS公 司 (n rcScr yt 。下面 n. S It t eut Ssm) e i a y e 介绍 基于 Wi o 00操 作 系统 的端 口扫描 的设 n  ̄20 d 计和 实现 方法 。
洞的技术 ,其 中端 口扫描是 漏洞扫描 的基 础部 分 ,通 过 查 询 T PI C /P端 口,记 录 目标 的 响应 ,
探 测远 端或 本 地主机 服务 端 口的打 开状 态和所 提 供 的服务 ,收集 关 于某 些 特定 项 目的有 用信 息 。
2 端 口扫描的原理
端 口扫 描的方 法 分 为 被 动 扫描 和 主 动扫 描 。 被 动扫 描 的 方 法 主要 有 :T PeD ̄t)端 口扫 C o/e( l

端口扫描与检测技术的实现论文

端口扫描与检测技术的实现论文

端口扫描与检测技术的实现摘要随着Internet日益广泛的应用,黑客攻击行为也是有增无减。

如何有效地抵御这种攻击行为,一直是信息安全领域的焦点。

而其中,端口扫描技术吸引了越来越多人的关注。

端口扫描是黑客搜集目标主机信息的一种常用方法。

为了有效地对付网络入侵行为,对端口扫描进行研究是非常有益和必要的。

攻击者在攻击一个目标时,首先要获取目标的一些基本信息,端口扫描就是其中最简单最重要的方法之一,它可以扫描目标机器中开放的端口,从而确定目标机器中提供的服务,为下一步攻击做准备。

针对端口扫描技术,相应的端口扫描检测技术显的越发重要,作为网络安全技术中的一个重要课题,端口扫描检测技术意义重大。

本文首先阐述了端口扫描技术以及端口扫描检测技术的基本原理和常用方法,然后在此基础上设计了一个对基于网络的端口进行扫描,能判断出目标主机端口开放情况的程序以及一个从网络信息的数据包的捕获和分析着手,再通过统计判断是否存在端口扫描行为的程序,最后从攻击和防御的角度对端口扫描和检测技术作了演示及分析。

关键词:端口;端口扫描;数据包捕获;端口检测The Realization of Port Scanning and Detecting TechnologyAbstractAs the widely applying of Internet, the attacking behavior made by hacker is increasing but not decreasing. How to resist this kind of attacking behavior is always the key point of the domain of the information security.And the port scanning draws people's attention more and more. Port scanning is a usual method which is used by the hacker to collect the information of the target main processor. In order to deal with the invading behavior of the Internet effectively, it is very useful and necessary to work on the port scanning. When an attacker attacks to a target, he or she will firstly gets some basic information about the target, and the port scanning is one of the most simple and important methods which can scan the opening Port of the target machine to make sure the offering service made by the target machine, and it is a preparation to the next attacking. The port detecting seems more and more important referring to the port scanning. As an important task of the secure technique of Internet, the port detecting is of great significance.In this thesis, it firstly elaborates the basic principles and usual methods of the port scanning. On this basis, it then designs a program which can scan the Port of the Internet, and assess the opening situation of the target main processor, and the other program which begins on capturing and analyzing the information packet of Internet, and then assess whether there is a behavior about port scanning through statistic analyses. Lastly, it demonstrates and analyses the technology of port scanning and port detecting from the viewpoint of attacking and resisting.Key Words:port; port scanning; packet capture; port detecting目录论文总页数:23页1 引言 (1)1.1 本课题研究的意义 (1)1.2 本课题的研究方法 (2)2 端口扫描概述 (2)2.1 基本概念 (2)2.2 端口扫描原理 (3)2.3 端口扫描技术简介 (5)3 检测端口扫描概述 (7)3.1 端口扫描检测的分析 (7)3.2 普通端口扫描检测技术概述 (8)3.3 慢速端口扫描检测技术概述 (9)3.4 端口扫描的分布式检测概述 (9)3.5 主流的端口扫描工具 (11)4 端口扫描的实现 (12)4.1 扫描程序的设计原理 (12)4.2 程序流程图 (12)5 检测端口扫描的实现 (13)5.1 检测程序的设计原理 (13)5.2 程序流程图 (13)5.3 设计实现重点代码 (14)6 性能测试 (18)6.1 端口扫描程序性能测试 (18)6.2 检测端口扫描程序性能测试 (19)结论 (20)参考文献 (21)致谢 (22)声明 (23)1引言随着科学技术的飞速发展,21世纪的地球人已经生活在信息时代。

分布式端口扫描检测系统的设计与实现

分布式端口扫描检测系统的设计与实现

MP构建的分布式环境 I 包。 缺点是不能侦测分布式扫描、 慢速扫描. 不 息传 递建立一个实际的、 可移植的、 有效的和灵 3
能处理分片。
14 E e ad 。 m r l
活的标准。它的目标如下:
在L nx iu 环境下安装MP . I 首先解压源程
生成目录 /mpc 。 iu 环境下c— ih 在L nx h () 1设计一个应用编程接口( 不必为编译器或 序包 .

E e l系统使用异常检测技术. mrd a 使用行为
规则匹配和流量监控来发现扫描。 缺点是不能侦 测慢速扫描、分布式扫描和新的 地址。
个系统实现库) 。
p 设备被设为缺省 . 4 通常c— 设备在网 hp 4 络的
s r t l e h ) s 的使 ( 允许有效的 2 ) 通信: 避免存储器到存储器 启动进程是rh( moese1。但是 rh 而这种权限 的拷贝 而允许计算和通信的重叠 尽可能给通 用要求在相应的主机上设置权限.
( 接E应 7 l 设计成允许线程 一 ) 安全 (ra— ted h
aey。 向 超过 P 个端口进行T P C 连接尝试. 或者在时 消息传递接口的目的是为编写消息传递程序而开 sft)
间T( 之内向超过 P个端口发送 U P数据 发的广泛使用的 秒) D 标准。象这个接口 一样, 应为消
W o d a dD. le,ewoksc rt ntrPo . o , n Wob r t r ui mo i ,r c, n e y e
个较长的时间窗内.对发起连接的I 难以解决的问题 ( P 如分片扫描包检测)检测规 。

如发现其连接的风险端 口数目达到 则使用了基于时间窗, 口策略等方法较好地 端

实验五 端口扫描器实验报告(付代码)

实验五 端口扫描器实验报告(付代码)

实验5:端口扫描器的设计与实现姓名:学号:专业年级:(一)实验目的和内容:目的:加深对TCP的理解,学习端口扫描技术和原理,熟悉socket编程。

内容:实现一个扫描器,使用TCP connect进行端口扫描,并对扫描结果进行记录。

(二)课程设计要求:Windows或Linux环境下,程序在单机上运行;使用端口扫描器对一台主机进行扫描,并显示出结果;编程语言不限;提供友好的用户界面。

(三)端口扫描技术:“端口”是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。

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

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

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

计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。

端口与进程是一一对应的,入侵者通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。

(四)扫描端口的目的:端口扫描是入侵者搜集信息的几种常用手法之一,也正是这一过程最容易使入侵者暴露自己的身份和意图。

•判断目标主机上开放了哪些服务;•判断目标主机的操作系统。

如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能够使用相应的手段实现入侵。

(五)端口的分类:端口是一个16 bit的地址,用端口号进行标识不同的作用。

端口一般分为两类。

•熟知端口号(公认端口号):由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用的熟知端口,其数值一般为0~1023。

•一般端口号:用来随时分配给请求通信的客户进程。

(六)扫描原理的基础知识:TCP/IP模型四层结构TCP与UDP协议TCP报文结构TCP连接和释放过程(七)TCP/IP模型四层结构:(八)TCP与UDP协议:Internet的网络通信大多是建立在这两个协议之上的,各个主机遵循着TCP/IP协议封装数据包进行通信。

端口扫描程序的设计49681

端口扫描程序的设计49681

课程设计题目:端口扫描程序设计院、系:计算机科学与技术学院网络工程系班级:学号:姓名:同组成员:指导教师:成绩:一.系统设计的目标:扫描器是网络信息收集的一种方法,从功能上可分为漏洞扫描器和端口扫描器。

通过此次课程设计,能够掌握漏洞、端口的基础知识,掌握扫描器的基本原理并设计实现端口扫描和漏洞扫描程序。

二.系统原理:常用的端口扫描技术有以下几种:2.1 TCP connect()扫描:2.1.1简介:这是最基本的TCP扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。

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

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

2.2.2优点:不需要任何权限。

系统中的任何用户都有权利使用这个调用。

另一个好处就是速度,如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,使用者可以通过同时打开多个套接字来加速扫描。

使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。

2.2.3 缺点:很容易被察觉,并且被防火墙将扫描信息包过滤掉。

目标计算机的logs文件会显示一连串的连接和连接出错消息,并且能很快使它关闭。

2.2 TCP SYN扫描:2.2.1简介:这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP 连接。

扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。

一个SYN|ACK的返回信息表示端口处于侦听状态:返回RST表示端口没有处于侦听态。

如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。

2.2.2优点:一般不会在目标计算机上留下记录。

2.2.3缺点:必须要有root权限才能建立自己的SYN数据包。

2.3 TCP FIN 扫描:2.3.1简介:SYN扫描虽然是“半开放”方式扫描,但在某些时候也不能完全隐藏扫描者的动作,防火墙和包过滤器会对管理员指定的端口进行监视,有的程序能检测到这些扫描。

nmap端口扫描实验

nmap端口扫描实验

《信息安全技术与应用》课程实验实验二端口扫描与安全审计一、Nmap简介1. 基本功能与目标端口状态说明Nmap(Network Mapper)是开放源码的网络探测和端口扫描工具,具有主机发现、端口扫描、操作系统检测、服务和版本检测、逃避放火墙及入侵检测系统等功能。

可从网站/nmap/下载不同操作系统版本的源代码和可执行程序,而且提供了详细的中文使用手册(/nmap/man/zh/)。

Nmap以表格形式输出扫描目标的端口号、协议、服务名称和状态,端口状态分别用开放(open)、关闭(closed)、已过滤(filtered)和未过滤(unfiltered)表示。

其中“开放”表示应用程序正在该端口监听连接或分组;“关闭”表示没有应用程序在该端口监听;“已过滤”表示防火墙或其他过滤器封锁了该端口,Nmap无法知道该端口的状态;“未过滤”表示端口对Nmap探测有响应,但Nmap 不能确定端口是开放还是关闭。

Nmap有时也可能输出open|filtered或closed|filtered的状态组合,表示不能正确识别端口处于其中那一个状态。

2. 命令格式与帮助Nmap命令格式:nmap [ Scan Type ...] [ Options ] { target specification }Nmap命令帮助:C:\>nmap(不带命令参数运行nmap)3. 常用扫描类型(1)-sT (TCP connect() 端口扫描);(2)-sS (TCP SYN 同步扫描);(3)-sU (UDP端口扫描);(4)-sN (Null扫描 ) ;(5)-sF 扫描 (FIN)(6)-sP(Ping扫描);(7)-sX (Xmas扫描 );(8)-sA (TCP ACK扫描,探测端口是否被过滤,open和closed端口返回RST报文,表示unfiltered,否则为filtered)(9)-sM (TCP Maimon扫描, Maimon发现BSD系统探测报文FIN-ACK,响应RST ) ;(10)--scanflags (定制TCP标志位URG, ACK,PSH, RST,SYN,和FIN的任何组合设计扫描探测报文 )(11)-sW (TCP窗口扫描) ;-sI (Idlescan盲扫描) ;-sO (IP协议扫描) 等,详细内容参考Nmap 手册;(12)未指定扫描类型,默认扫描类型为TCP SYN 同步扫描。

简单端口扫描程序的实现

简单端口扫描程序的实现

计算机网络课程设计论文题目:简单端口扫描程序的实现院(部)名称:计算机科学与工程学院学生姓名:专业:学号:指导教师姓名:报告提交时间:报告答辩时间:(不填)目录一、设计要求 (3)二、开发环境与工具 (3)三、设计原理 (3)四、系统功能描述及软件模块划分 (3)五、设计步骤 (5)六、关键问题及其解决方法 (5)七、设计结果 (15)八、软件使用说明 (16)九、参考资料 (16)一、设计要求本系统实现了一个简单的端口扫描器。

1. 使用端口扫描对一台主机进行扫描.一台主机上有哪些端口是打开的;2. 对一个网段进行 IP 扫描.显示出一个网段内有哪些主机是开机的。

二、开发环境与工具Windows的pc机Jdk包.:具备网络环境并连入Internet。

三、设计原理IP地址和端口被称作套接字.它代表一个TCP连接的一个连接端。

为了获得TCP服务.必须在发送机的一个端口上和接收机的一个端口上建立连接。

TCP连接用两个连接端来区别.也就是(连接端1.连接端2)。

连接端互相发送数据包。

端口扫描是在应用程序运行在 TCP 或者 UDP 协议之上工作的, 这些协议是众多应用程序使用的传输机制,端口扫描是通过扫描主机确定哪一些 TCP 和UDP 端口可以访问的过程. 端口扫描常见的几种类型: TCP Connect()扫描 SYN 扫描 NULL 扫描 ACK 扫描 Xmas-Tree Dumb 扫描。

Ping命令经常用来对TCP/IP网络进行诊断。

通过目标计算机发送一个数据包.让它将这个数据包反送回来.如果返回的数据包和发送的数据包一致.那就是说你的PING命令成功了。

通过这样对返回的数据进行分析.就能判断计算机是否开着.或者这个数据包从发送到返回需要多少时间。

Tracert命令用来跟踪一个消息从一台计算机到另一台计算机所走的路径. rusers和finger 通过这两个命令.你能收集到目标计算机上的有关用户的消息。

网络扫描实验报告

网络扫描实验报告

网络扫描实验报告班级:10网工三班学生姓名:谢昊天学号:1215134046实验目的和要求:1、掌握网络扫描技术原理;2、熟悉各种常用服务监听端口号;3、掌握典型的网络扫描工具;实验内容与分析设计:1、系统用户扫描使用工具软件:GetNTUser,该工具可以在Winnt4以及Win2000操作系统上使用。

(1)扫描出NT主机上存在的用户名。

(2)自动猜测空密码和与用户名相同的密码。

(3)可以使用指定密码字典猜测密码。

(4)可以使用指定字符来穷举猜测密码。

2、开放端口扫描使用工具软件PortScan扫描对方计算机开放了哪些端口。

3、共享目录扫描通过工具软件Shed来扫描对方主机,得到对方计算机提供了哪些目录共享。

4、漏洞扫描使用工具软件X-Scan-v2.3扫描:(1)远程操作系统类型及版本(2)标准端口状态及端口Banner信息(3)SNMP信息,CGI漏洞,IIS漏洞,RPC漏洞,SSL漏洞(4)SQL-SERVER、FTP-SERVER、SMTP-SERVER、POP3-SERVERNT-SERVER弱口令用户,NT服务器NETBIOS信息注册表信息等。

实验步骤与调试过程:1.安装虚拟机,因为本实验需要虚拟机内装载的系统为windows sever 2000时系统网络才能使GetNTuser软件检测到。

2.设置密码字典,设置完密码字典以后,将会用密码字典里的每一个密码对目标用户进行测试,如果用户的密码在密码字典中就可以得到该密码。

其中就有虚拟机中的用户Administoator,user id为500 ,password为空。

3.开放端口扫描使用工具软件PortScan扫描对方计算机开放了那些端口。

对192.168.174.129的计算机进行端口扫描,在“scan”文本框中输入ip地址,单击按钮start开始扫描。

4.打开软件shed,输入起始ip和终止ip,输入192.168.174.129,192.168.174.129,单击“开始”按纽,从而对方的共享目录。

COOlscan端口扫描器操作手册

COOlscan端口扫描器操作手册

4.1运行表
运行主程序;
4.2运行步骤
1.主程序运行;
2.设置扫描器参数;
3.开始扫描
4.输出扫描结果
5.保存或者删除;
4.3运行说明
1.双击CoolScan.exe执行程序,出现程序主界面;
2.设置扫描IP,有三个选择模式:单个IP、多个IP、从文件导入;
3.扫描设置:分为connect模式和SNY模式;设置扫描端口和模式;
4.设置线程数:可设置1——200个线程同时扫描;
5.点击开始键开始扫描;
6.等待扫描结束,查看扫描结果;
7.保存,删除:对扫描结果进行保存或者删除;
无;
给出为操作中心的操作人员和管理人员所需要的信息,如:
a.运行目的:启动扫描器
b.操作要求:双击CoolScan.exe;出现主界面即为运行成功;
c.扫描控制:设置好扫描参数,开始扫描;。

端口扫描技术(NMAP中文使用手册)

端口扫描技术(NMAP中文使用手册)

端口扫描技术/xiaojiwen整理 2012-4-10作为一个修车新手,我可能折腾几个小时来摸索怎样把基本工具(锤子,胶带,扳子等) 用于手头的任务。

当我惨痛地失败,把我的老爷车拖到一个真正的技师那儿的时候,他总是在他的工具箱里翻来翻去,直到拽出一个完美的工具然后似乎不费吹灰之力搞定它。

端口扫描的艺术和这个类似。

专家理解成打的扫描技术,选择最适合的一种 (或者组合)来完成给定的任务。

另一方面,没有经验的用户和刚入门者总是用默认的SYN扫描解决每个问题。

既然Nmap是免费的,掌握端口扫描的唯一障碍就是知识。

这当然是汽车世界所不能比的,在那里,可能需要高超的技巧才能确定您需要一个压杆弹簧压缩机,接着您还得为它付数千美金。

大部分扫描类型只对特权用户可用。

这是因为他们发送接收原始报文,这在Unix 系统需要root权限。

在Windows上推荐使用administrator账户,但是当WinPcap 已经被加载到操作系统时,非特权用户也可以正常使用Nmap。

当Namp在1997年发布时,需要root权限是一个严重的局限,因为很多用户只有共享的shell 账户。

现在,世界变了,计算机便宜了,更多人拥有互联网连接,桌面UNIX系统 (包括Linux和MAC OS X)很普遍了。

Windows版本的Nmap现在也有了,这使它可以运行在更多的桌面上。

由于所有这些原因,用户不再需要用有限的共享shell账户运行Nmap。

这是很幸运的,因为特权选项让Nmap强大得多也灵活得多。

虽然Nmap努力产生正确的结果,但请记住所有结果都是基于目标机器(或者它们前面的防火墙)返回的报文的。

这些主机也许是不值得信任的,它们可能响应以迷惑或误导Nmap的报文。

更普遍的是非RFC兼容的主机以不正确的方式响应Nmap探测。

FIN,Null和Xmas扫描特别容易遇到这个问题。

这些是特定扫描类型的问题,因此我们在个别扫描类型里讨论它们。

这一节讨论Nmap支持的大约十几种扫描技术。

端口扫描程序的设计与实现

端口扫描程序的设计与实现

端口扫描程序的设计与实现
端口扫描程序的设计与实现
简介
设计目标
端口扫描程序的设计目标如下:
快速:能够在最短的时间内扫描目标主机上的所有端口。

精确:能够准确判断目标主机上端口的开放与关闭状态。

轻量:具有较小的资源占用,不会对目标主机和网络造成过多负担。

可扩展:能够灵活扩展功能,满足不同场景下的需求。

设计思路
端口扫描程序的设计思路如下:
1. 确定目标主机:输入目标主机的IP地质或域名。

2. 确定扫描范围:指定要扫描的端口范围,默认为常用端口范围。

3. 并发扫描:使用多个线程扫描目标主机上的端口,提高扫描效率。

4. 端口连接:针对每个要扫描的端口,尝试建立TCP连接,判断端口是否开放。

5. 扫描结果展示:将扫描结果以可读的方式输出,包括开放的端口和关闭的端口。

实现步骤
端口扫描程序的实现步骤如下:
1. 解析参数:根据命令行参数解析目标主机和端口范围。

2. 并发扫描:创建多个线程,并发执行端口扫描任务。

3. 端口扫描:每个线程负责扫描指定范围内的端口,并判断端口是否开放。

4. 扫描结果:将扫描结果保存到一个数据结构中,包括开放的端口和关闭的端口。

实现工具
端口扫描程序可以使用语言实现,借助的socket库可以进行网络连接,使用的多线程库可以实现并发扫描。

示例代码
以下是一个简单的端口扫描程序的示例代码:
import socket
import threading target_host = \。

面向入侵防范的反端口扫描系统ScanAnti的设计与实现

面向入侵防范的反端口扫描系统ScanAnti的设计与实现

找到 一种 能够 对 端 口扫 描进 行有效 入侵 防范 的方法 。 针 对 目前端 口扫描 的类型 及工 作原理 , 改进 一些端 口扫 在 描检 测系统 不足之 处 的基础上 , 计 了一个反 端 口扫描 设 系统 S a A t,主要实 现局 域 网内的反 扫描 干扰功 能 , cn ni 可作 为 Wid ws 统防火 墙 的辅 助 工具 。它 应用于 共 no 系
针 对 目前端 口扫描 的类 型及工作 原理 ,设 计并实现

个 适用于局域 网的反端 口扫描 系统 ,对 端 口扫 描进行
1 1 系 统设 计 思 路 . 设 计反端 口扫描 系统 S a An i c n t 的初衷 ,就是试 图
检测 并进ห้องสมุดไป่ตู้行有效 的入 侵防范 , 是本论文 主要探讨 的内容 。
加快 了系统记 录 、检 索 、统计 网络 信 息的速度 , 为 系统 的 高效运行提 供 了有 力的保 障 。 关键词 :入侵 防 范 ;反 端 口扫描 ;数据库
1 反 端 口扫描 系统 SaA t的设计 cn ni 端 口扫描是 通过称 为 “ 扫描 器 ” ( an r s n e)的程 序 c
“ o e t c l os I o” “ ot c Po t nf 、 Pr t c Lo a H t nf 、 Pr e t r l o”
“cn nivn” Sa A t e t,分别存储本地局域网受保护主机信 E 针对现有端 口扫描检测工具和软件所存在 的主要 问 息 、受保 护端 口信息 以及 1 P异常 数据包信 息记录 。 在 反 端 口扫 描 系 统 S Ca n A nti 中 ,数 据 表 题 ,在 设计反 端 口扫描 系统 S a An i c n t 的过程 中运 用 了 如下 的手段和 技术方 案 。 “ rtcL cl sIf”实现对 受保护 主机信息 的存 P oe to aHotno ①用 Wip a n c p来 捕获局域 网 内数 据包 储 ;数据表 “ r tcP rlf ”实 现对受保护 端 口信息 P oet o t o n W ip a n c p是 UNI X下 的 l p a i c p移植到 wid ws 的 存 储 ; 而 在 系 统 执 行 过 程 中 , 数 据 表 b no

Linux的企业端口扫描及实战

Linux的企业端口扫描及实战

扫 描 器 。 此 外 还 有 间 接 扫 描 和 秘 密 在 这 个 端 口 使 用 a c c e p t ( ) 系统 调 用 接
企业 端 口扫 描 策略 1 、 端 口扫描 的 目的
扫 描 等 。T CP扫 描 方 式是 通 过 与被 受 连接 ; 扫描主机建立标 准的 T C P连 接 , 因 lt i f e r e d状 态 表 示 防 火 墙 、 包 过 滤
口提 供 的服 务或 信 息 。端 口扫 描 也 例如 : UDP 、 T C P c o n n e c t ( ) 、 T C P S Y N 以 及其 他 一些 东西 。
可 以 通 过 捕 获本 地 主机 或 服 务 器 的 ( 半 开 扫描 ) 、 郇 代理 ( b o u n c e攻 击 ) 、 在使用之前, 我 们 需 要下 载 该软
多 有 用 的 信 息从 而发 现 系统 的 安 全 标 主 机 记 录 ,但 是 扫描 结 果 会 出现 n m a p的 探 测企 图 。 通 常情 况 下 , 端 口 漏 洞 。通 过其 可 以使 系统 用户 了 解 漏 报 ,在 网 络状 况 不好 的 情 况下 这 的 状态 基 本都 是 u n i f l t e r e d状 态 , 只有 系 统 目前 向 外 界 提 供 了 哪 些 服 务 , 从 而 为 系 统 用 户 管理 网络 提 供 了一 种 参考 的 手段 。 从 技 术原 理上 来 说 , 端 口扫描 向 种 漏报 是严 重 的 。 2 、 快 速 安装 n ma p进 行企 业端 口 扫描 n ma p是 一个 网络 探 测 和 安全 扫 在 大 多数 被 扫 描 的 端 口 处 于 f i l t e r e d 状 态下 , 才 会 显示 处 于 u n i f l t e r e d状态 的端口。 根据 使用的 功能选 项 , n ma p也

多线程端口扫描程序设计与实现

多线程端口扫描程序设计与实现

中南大学之五兆芳芳创作《计较机网络》课程设计陈述题目多线程端口扫描程序设计与实现学生姓名孙毅指导教师刘嫔学院信息科学与工程学院专业班级信息平安1401完成时间/10/19目录第一章需求阐发 (1)1.2 系统功效描述11.2.2本系统要实现的功效 (1)第二章总体设计 (2)2.1总体阐发 (2)2.1界面设置构想图 (2)2.3界面使用设置构想 (2)2.4后台设计构想 (3)第三章详细设计 (4)3.1界面设计 (4)3.2界面设计图 (4)3.3后台设计 (5)第四章调试阐发与运行结果 (9)4.1运行情况与要求 (9)4.2 运行程序流程图 (9)4.3运行界面 (10)错误!未指定书签。

第六章??参考文献??错误!未指定书签。

第七章附录 (15)第一章需求阐发本设计要求完成一个多线程端口扫描程序的设计与实现,具有易用、美不雅的界面.功效要求:能够对当地或远程主机进行端口扫描.能够对制定端口段进行扫描.能够扫描制定IP地址规模内哪些主机开放了特定端口,如罕有的TCP端口FTP(21)等.使用 TCP connect进行端口扫描;使用 TCP SYN 进行端口扫描;使用 ICMP echo 扫描实现IP 扫描;能把扫描结果记实保管下来.系统功效描述多线程端口扫描器是实现计较机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序.IP设置应为所在主机的IP 地址,起始端口和结束端口应为0~65535之间的一个数,且起始端口应小于结束端口的大小.线程数为0~200之间的一个数.点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕.① 端口扫描功效:扫描开放的端口,并将扫描到的开放端口号送到前台.② 图像显示功效:显示界面图形.③ 多线程功效:当客户端要求与办事器端成立连接时,办事器端就将用到多线程功效,为每一个成立起来的连接创建一个线程.④ 异常抛出功效:对于明显的错误,能提示出错误的类型并结束程序的运行.第二章总体设计本程序分为前后台系统,后台系统用于扫描主机开放端口,并把节扫描的数据送至前台窗口显示;前台要显示扫描的结果,所以应为一个窗口,这个窗口应能够设置主机的IP 地址,设置端口的开始端口、结束端口和线程数,并且还能够显示扫描的状态.在中央是显示结果的窗体.本程序还应能够有控制扫描的状态命令,附加设置最小化和封闭按钮.图1 系统构想图当出现如图所示的界面时,填写好要扫描的IP地址,需要扫描的端口规模和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕.流程图如下:图2 系统构想流程图后台系统使用Scanner和Scan类,创建前台计划和创建扫描端口、事件处理,并且能对复杂的错误进行判断,显示错误原因.调用数据处理包,处理异常情况;调用皮肤包,美化显示窗口.第三章详细设计本程序界面图形设计要能清楚显示扫描后的结果,并且能很好的体现出界面的整洁大方,但其实不失去吸引人眼球的画面,所以在做界面的时候考虑了界面的色彩,并且添加了皮肤,界面上面的字体设置和windows窗口设置一样采取宋体,界面上的按钮不设置过量的按钮,仅设置有需要的按钮便可,界面设置大方.使用的时候有默认的IP地址、需要扫描的端口和线程数,如果需要扫描其他主机,只需要填写好要扫描的主机的IP地址,需要扫描的端口规模和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕.本程序采取小窗口形式,外围大小为700mm*700mm,结果显示字幕为主机地址加开放端口.添加特性皮肤.其余地方设置按钮和扫描的主机地址、端口和线程数.设计的预计页面图形如图:图3 系统界面设计图本程序使用了为主要的Scanner2类和ScanTcpConnect类.ScanTcpConnect类的作用是创建线程扫描端口,然后把结果显示到前台.Scanner2类的作用是机关前台计划,调用ScanTcpConnect类添加事件处理,对输入进行错误判断,如果输入不在允许的规模之内则显示相关错误.在本程序中用到了网络编程的两个类,下面介绍这两个类的经常使用办法.InetSocketAddress类机关办法如下:●InetSocketAddress(InetAddress addr, int port):按照 IP 地址和端口号创建套接字地址.●InetSocketAddress(int port):创建套接字地址,其中 IP 地址为通配符地址,端口号为指定值.●InetSocketAddress(String hostname, int port):按照主机名和端口号创建套接字地址.Socket类经常使用办法如下:●Socket():通过系统默认类型的 SocketImpl 创建未连接套接字●Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口号.●void bind(SocketAddress bindpoint):将套接字绑定到当地地址.●void close():封闭此套接字.●void connect(SocketAddress endpoint):将此套接字连接到办事器.●void connect(SocketAddress endpoint, int timeout):将此套接字连接到具有指定超时值的办事器.●boolean isClosed():前往套接字的封闭状态.●boolean isConnected():前往套接字的连接状态.本程序还调用其他的一些类和包,比方软件包java.awt.color 、java.awt.event、io.IOException、Javax.Swing、jvnet.substance.*.●java.awt.color包的的描述:提供用于颜色空间的类.它包含了基于国际色彩联盟(ICC) 配置文件格局标准的颜色空间实现.它还包含了基于ICC 配置文件格局标准的颜色配置文件.用来使界面加倍具有色彩.Result.setBackground(Color.PINK);//设置窗口为粉红●java.awt.event 的描述:提供处理由AWT 组件所激起的各类事件的接口和类.事件由事件源所激起,向事件源注册的事件侦听器可接收有关特定事件类型的通知.此包定义了事件和事件侦听器,以及事件侦听器适配器,它是让事件侦听器的编写进程更加轻松的便捷类.在本程序中使用:public void actionPerformed(ActionEvent e) {String cmd = e.getActionCommand();if(cmd.equals("Start"))…………}io.IOException包的描述:用来处理io的错误,不但仅是文件读写,还包含良多stream的读写,并且throws是用来放在函数定义的函数体前函数名后的,暗示这个函数将会在出现异常的书后会抛出io异常,所以在以后的程序中调用这个函数的时候就必须用try和catch来捕获异常,不然编译会报错,这主要涉及到java的平安机制.本程序中使用如下: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;…………}●Javax.Swing荟萃描述:由所有Java图形用户界面(GUI)组件所组成,可运行在任一支持Java虚拟机(JVM)的当地平台上.由于这些组件全都是用Java语言编写的,因此它们可以提供比当地平台GUI组件更多的功效.(与抽象窗口东西箱对比).Java Swing是Java Foundation Classes(JFC)的一部分.在Swing中,Sun开发了一个经过仔细设计的、灵活而强大的GUI 东西包.Swing是在AWT组件根本上构建的.它所提供的功效要比AWT提供的更加普遍.它也是Java技巧的一种尺度配置.Swing模型一个Java GUI通常由顶层容器、中间容器以及多个原子组件组成.每个原子组件或容器都可能触发相应事件的产生.容器是一类能够在其中容纳其他组件的特殊组件.Swing的GUI 组件类是依照类属条理以树状结构进行组织的.在这个树的最顶层,即树的根部,使一个最根本的容器类,被称为顶层容器.Swing 提供了三个通用的顶层容器类JFrame,JDialog和JApplet.JFrame提供了基于窗体的应用程序,JDialog提供对话框形式的界面,JApplet提供Java小应用程序的界面形式.在顶层容器下是中间容器,用于容纳其他的组件.通常窗格自己在显示界面中是看不到的.面板类Panel是一种中间容器,它的唯一作用是使组件更容易定位.顶层容器通过getContentPane()办法获得内部的一个内容窗格.Swing包的组成:●javax.swing:根本Swing包,包含Swing容器、组件及相关设置的类和接口.●javax.swing.border:包含与鸿沟设计相关的类和接口.●javax.swing.colorchooser:与颜色选择相关的类和接口.●javax.swing.event:包含事件处理相关的类和接口.●javax.swing.filechooser:包含对文件进行查抄选取的相关类.●javax.swing.plaf:包含一些对外不雅样式操纵的类和接口.●javax.swing.tree:包含对树形组件进行操纵的类和接口.经常使用Swing组件:●按钮:JButton●文本区:JTextArea●文本字段:JTextField在本程序中使用如下:// 设置主窗体位置和大小Frame.setSize(700, 700); //设置主窗体大小//添加窗口监听,使之可以封闭窗口Frame.addWindowListener(new WindowAdapter() {publicvoid windowClosing(WindowEvent e) {System.exit(0);}});// 设置扫描按钮和退出按钮//Tcp connect扫描按钮Tcp_connect.setBounds(17,313,140,30);Tcp_connect.setActionCommand("Tcp_connect");//设置JButton的属性值Tcp_connect.addActionListener(this);//监听按钮的行动//Tcp SYN扫描按钮Tcp_SYN.setBounds(17,363,140,30);Tcp_SYN.setActionCommand("Tcp_SYN");//设置JButton的属性值Tcp_SYN.addActionListener(this);//监听按钮的行动//Icmp echo扫描按钮ICMP_echo.setBounds(17,413,140,30);ICMP_echo.setActionCommand("ICMP_echo");//设置JButton的属性值ICMP_echo.addActionListener(this);//监听按钮的行动//退出扫描按钮Exit.setBounds(17,463,140,30);Exit.setActionCommand("Exit");Exit.addActionListener(this);jvnet.substance.*:目的是提供一个流行的外不雅(look & feel). //设置窗体皮肤SubstanceAutumnLookAndFeel.setSkin(new FieldOfWheatSkin());第四章调试阐发与运行结果(1)性能要求实时性好、可靠性强、不占用系统太多的内存和存储空间.(2)设计约束开发东西:jdk1.8.0_102 Eclipse jee图四开发东西运行情况:Windows 10能实现用户所定义的各项需求.4.2 运行程序流程图图4 流程图未扫描状态:图6 运行界面未扫描状态图 在Eclipse 中右击,选择运出现程序界面设置开始端口大小,设置设置结束口,设置0~65535之 设置进程点击扫描可以结果显示是否持续扫结束程序 否,点击退出是,重新设置正常扫描后状态:图7 运行界面正常扫描状态图起始端口设置有误扫描开始后状态报错:图8 运行界面起始端口设置错误报错图结束端口设置有误扫描开始后状态报错:图9 运行界面结束端口设置错误报错图线程数设置错误报错:图10 运行界面线程数设置错误报错图正常运行:图11正常运行图正常运行后且保管扫描结果之前的文件内容:图12 保管扫描结果之前的文件内容图正常运行后且保管扫描结果之后的文件内容:图13 保管扫描结果之后的文件内容第五章课程设计总结在此次课程设计中,遇到了一些问题,如:程序功效不克不及完全实现,对于面向对象的办法了解不敷透彻,运用到实际的软件开发中存在着困难;对于Java语言,以前只学习到了一些最根本的知识,要在短时间内用Java语言来开发软件是一个较大的挑战;对于开发软件的流程不熟悉,适应起来比较慢,编写需求说明书和设计规格说明书时,自己感到难以动手,这标明所学的知识不克不及灵活运用到实际中.对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,多看些项目的源代码.对于书上以及网站上下载的资料中的Java实例必须理解,还有多跟精通JAVA语言的老师和同学请教和交换,取其精华.对于实际动手能力与软件开发的流程的适应,必须多进行实际的练习与操纵,才干有所进步.我自己感到此次课程设计做得挺成功的,通过这一次实践编程,我学到了良多有关JAVA的实际编程的知识.在这次设计开始的第一天开始,我就开始着手修改一个用JAVA编写的短线呈端口扫描的程序.我刚开始很自信自己能修改成功,但这一进程太不顺利.用了两天时间来修改那个JAVA程序,但调试的时候都没有成功.后来我请教一个班上成绩好的同学,在他的帮忙下我不竭的发明错误,并更正它们,工夫不负有心人人,我的程序最后运行成功了.在这课程设计期间我的同学和老师帮忙了我,有些东西是我们一起探讨,一起解决办法的.当然在学习Java和设计程序的进程中还得到了杭志老师的辛勤指导,为我解答了良多的疑问.同时,在刘老师身上我们学到了良多实用的东西,在此暗示衷心的感激!同时,还要感激帮忙过我的其他同学!这次课程设计令我感触感染良多.从拿到题目到改编JAVA程序;然后请教他人慢慢研究琢磨;从理论到实践;从失败到成功;忘不了我坐在电脑前苦苦思索,低温下熬夜地编程的疲惫;忘不了因沉迷于编程却耽误了吃饭时间而受饿辛酸;忘不了……这其中了良多的东西,磨砺了我的意志;同时还稳固了以前所学的知识,学到了良多书本上没有的知识;学到了良多java编程知识,并学会了复杂的使用eclipse来开发java程序的一些使用技能这次课程设计是对我本学期所学的知识的查验,由此我发明了良多的问题.可以说它给了我一次自我评估的机遇.通过设计让我知道了那些方面我仍是有欠缺的,促使我花时间弥补.临近考试,时间太紧迫,致使程序实现的功效在办法上也许不是很完美,但我以后会多向老师请教,自己也要增强对Java 的学习.努力进一步提高自己的编程水平.此次的课程设计,对我来说撰写文档似乎是一个更大的挑战.撰写文档不但要求我们要对自己程序很是熟悉:程序的总体框架,功效,如何实现,存在什么问题等,同时还要求我们有清晰的思维和准确的表达能力以及严密的逻辑性.因此,写完这篇文档对于我们自身来说自然是获益匪浅的.第六章参考文献1、Sharon Zakhour Scott Hommel等著. Java 语言导学.人民邮电出版社,2、耿祥义编著. Java根本教程. 清华大学出版社,3、Joe Wigglesworth Paula Lumby. Java程序设计初级主题. 北京大学出版社,4、Y.Daniel Liang著,王镁等译.Java语言程序设计根本篇.5、朱福喜等.Java项目设计与开发典范.电子产业出版社,6、李瑞民.网络扫描技巧揭秘.机械产业出版社,第七章附录带注释的源程序://多线程端口扫描程序设计与实现带有注释的源程序import java.awt.*; //抽象窗口东西包,图形界面组件类import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.*; //各类IOimport javax.swing.*; //awt根本上的一套图形界面系统import .*;//第一大类:Scanner2类publicclassScanner2extends JFrame implements ActionListener { publicstaticvoid main(String[] args){ //程序入口new Scanner2();}staticintj = 0;//主窗口的创建,new组件publicstatic JFrame Frame = new JFrame();publicstatic Label labelIPStart = new Label("起始IP");publicstatic Label labelIPEnd = new Label("结束IP");publicstatic Label labelPortStart = new Label("起始端口");publicstatic Label labelPortEnd = new Label("结束端口");publicstatic Label labelThread = new Label("线程数");publicstatic Label labelTimeOut = new Label("请求超时:");publicstatic Label labelState = new Label("扫描状态:");publicstatic Label labelResult = new Label("扫描结果:");publicstatic Label labelScanning = new Label("扫描待命");JLabel photo= new JLabel(new ImageIcon("G://图片//QQ图片0724195038.jpg")); publicstatic JTextField hostNameStart = new JTextField("127.0.0.1");publicstatic JTextField hostNameEnd = new JTextField("127.0.0.1");publicstatic JTextField PortStart = new JTextField("10");publicstatic JTextField PortEnd = new JTextField("30");publicstatic JTextField ThreadNum = new JTextField("9");publicstatic JTextField time = new JTextField("2000");publicstatic TextArea Result1 = new TextArea();publicstatic TextArea Result2 = new TextArea();publicstatic Label DLGINFO = new Label("");publicstatic JButton Tcp_connect = new JButton("Tcp connect 扫描");publicstatic JButton Tcp_SYN = new JButton("Tcp SYN 扫描");publicstatic JButton ICMP_echo = new JButton("ICMP echo 扫描");publicstatic JButton Exit = new JButton("退出扫描");publicstatic JButton save = new JButton("保管结果");//错误提示对话框publicstatic JDialog DLGError = new JDialog(Frame, "ERROR");publicstatic JButton OK = new JButton("OK");//在机关函数里进行窗口设计public Scanner2(){//设置主窗体题目Frame.setTitle("计较机网络课设:多线程端口扫描信安1401 孙毅 CSU"); Frame.setSize(700, 700); //设置主窗体大小//添加窗口监听,使之可以封闭窗口Frame.addWindowListener(new WindowAdapter() {publicvoid windowClosing(WindowEvent e) {System.exit(0);}});//设置一系列按钮和小窗口及图片//IPlabelIPStart.setBounds(17,13,50,20);hostNameStart.setBounds(67,13,90,25);hostNameStart.setHorizontalAlignment(JTextField.CENTER);//文本水平对齐方法labelIPEnd.setBounds(17,63,50,20);hostNameEnd.setBounds(67,63,90,25);hostNameEnd.setHorizontalAlignment(JTextField.CENTER);//文本水平对齐方法//起始端口labelPortStart.setBounds(17,113,50,20);PortStart.setBounds(67,113,90,25);PortStart.setHorizontalAlignment(JTextField.CENTER);//结束端口labelPortEnd.setBounds(17,163,50,20);PortEnd.setBounds(67,163,90,25);PortEnd.setHorizontalAlignment(JTextField.CENTER);//线程数labelThread.setBounds(17,213,50,20);ThreadNum.setBounds(67,213,90,25);ThreadNum.setHorizontalAlignment(JTextField.CENTER);//请求超时labelTimeOut.setBounds(17,263,50,20);time.setBounds(67,263,90,25);time.setHorizontalAlignment(JTextField.CENTER);//Tcp connect扫描按钮Tcp_connect.setBounds(17,313,140,30);Tcp_connect.setActionCommand("Tcp_connect");//设置JButton的属性值Tcp_connect.addActionListener(this);//监听按钮的行动//Tcp SYN扫描按钮Tcp_SYN.setBounds(17,363,140,30);Tcp_SYN.setActionCommand("Tcp_SYN");//设置JButton的属性值Tcp_SYN.addActionListener(this);//监听按钮的行动//Icmp echo扫描按钮ICMP_echo.setBounds(17,413,140,30);ICMP_echo.setActionCommand("ICMP_echo");//设置JButton的属性值ICMP_echo.addActionListener(this);//监听按钮的行动//退出扫描按钮Exit.setBounds(17,463,140,30);Exit.setActionCommand("Exit");Exit.addActionListener(this);//保管结果按钮save.setBounds(17,513,140,30);save.setActionCommand("save");save.addActionListener(this);//扫描状态栏labelState.setBounds(180,13,50,20);labelScanning.setBounds(240,8,120,30);Result1.setBounds(180,40,210,332);Result1.setEditable(false);Result1.setBackground(Color.GREEN);//图片的显示photo.setBounds(393,13,283,360);//扫描结果栏labelResult.setBounds(180,390,50,20);Result2.setBounds(180,420,500,200);Result2.setEditable(false);Result2.setBackground(Color.GREEN);//设置错误提示框Container ErrorDisplay = DLGError.getContentPane(); ErrorDisplay.setLayout(null);ErrorDisplay.add(DLGINFO);ErrorDisplay.add(OK);OK.setActionCommand("OK");OK.addActionListener(this);//将组件添加到主窗体Frame.setLayout(null);Frame.setResizable(false);//窗口大小设置为不成变Frame.add(labelIPStart);Frame.add(labelIPEnd);Frame.add(labelPortStart);Frame.add(labelPortEnd);Frame.add(labelThread);Frame.add(labelTimeOut);Frame.add(hostNameStart);Frame.add(hostNameEnd);Frame.add(PortStart);Frame.add(PortEnd);Frame.add(ThreadNum);Frame.add(time);Frame.add(Tcp_connect);Frame.add(Tcp_SYN);Frame.add(ICMP_echo);Frame.add(Exit);Frame.add(save);Frame.add(labelState);Frame.add(labelScanning);Frame.add(Result1);Frame.add(photo);Frame.add(labelResult);Frame.add(Result2);Frame.setVisible(true);}//几个产生错误的原因@Overridepublicvoid actionPerformed(ActionEvent arg0) {// TODO Autogenerated method stubString cmd = arg0.getActionCommand(); intminPort,maxPort,threadNum;InetAddress hostAddressStart = null;InetAddress hostAddressEnd = null;try{//获得输入的相关数据minPort = Integer.parseInt(PortStart.getText());maxPort = Integer.parseInt(PortEnd.getText()); threadNum = Integer.parseInt(ThreadNum.getText());}catch(NumberFormatException e1){ DLGError.setBounds(300,280,300,200);DLGINFO.setText("靓仔,端口号、线程号必须得是整数"); DLGINFO.setBounds(25,15,350,20);OK.setBounds(110,50,60,30);DLGError.setVisible(true);return;}//输入信息错误处理if((minPort < 0)||(maxPort > 65536)||(minPort > maxPort)){DLGError.setBounds(300,280,400,200);DLGINFO.setText("端口必须在0~65536之间,且起始端口应小于结束端口"); DLGINFO.setBounds(25,15,350,20);OK.setBounds(110,50,60,30);DLGError.setVisible(true);return;}if((threadNum > 200)||(threadNum < 0)){DLGError.setBounds(300,280,300,200);DLGINFO.setText("线程数应是在1~200之间的整数");DLGINFO.setBounds(25,15,200,20);OK.setBounds(110,50,60,30);DLGError.setVisible(true);return;}//如果按了保管按钮if (cmd.equals("save")){try{BufferedWriter bw = new BufferedWriter(new FileWriter("G:\\java语言文件\\DXCDKSMQ2\\扫描结果.txt"));bw.write(ScanTcpConnect.str);bw.newLine();ScanTcpConnect.str = "";bw.close();}catch(IOException e1){e1.printStackTrace();}}//如果按了开始扫描按钮if (cmd.equals("Tcp_connect")||cmd.equals("Tcp_SYN")||cmd.equals("ICMP_echo")){ Result1.setText(null);Result2.setText(null);//相关显示,.append()的用途是将前面的字符串接到原来的字符串上面来labelScanning.setText("开始扫描......");Result1.append("正在扫描"+hostNameStart.getText()+", 线程数:"+threadNum+"\n"); Result1.append("起始端口:"+minPort+"; 结束端口: "+maxPort+"\n");//j++;try{ScanTcpConnect.hostAddress =InetAddress.getByName(Scanner2.hostNameStart.getText());ScanTcpConnect.time =Integer.parseInt(Scanner2.time.getText());}catch(UnknownHostException e1){DLGError.setBounds(300,280,300,200);DLGINFO.setText("靓仔,你的IP或域名输入仿佛有误哦");DLGINFO.setBounds(25,15,200,20);OK.setBounds(110,50,60,30);DLGError.setVisible(true);return;}//多线程焦点算法for(inti = minPort;i <= maxPort;){if((i+threadNum) <= maxPort){new ScanTcpConnect(i,i+threadNum).run();//引用Scan类的run()办法i += threadNum;}else{new ScanTcpConnect(i,maxPort).run();i += threadNum;}}try{Thread.sleep(1);//设置睡眠时间}catch(InterruptedException e1){e1.printStackTrace();}Result1.append("扫描完成!");labelScanning.setText("扫描完成!");}//如果按了OK按钮if(cmd.equals("OK")){DLGError.dispose();//释放资源}//如果按了退出扫描按钮if(cmd.equals("Eixt")){System.exit(0);//非正常退出正在运行中的java虚拟机}}}//第二大类:完成Tcp connect 扫描>ScanTcpConnect类class ScanTcpConnect extends Thread{staticinttime;static String str = "";intminPort,maxPort;publicstatic InetAddress hostAddress;//机关函数ScanTcpConnect(intminPort,intmaxPort){ //传递参数this.minPort = minPort;this.maxPort = maxPort;}publicvoid run(){//扫描指定端口for(inti= minPort; i < maxPort; i++){Scanner2.Result1.append("主机:"+Scanner2.hostNameStart.getText()+" TCP端口:"+i+"\n");try{belScanning.setText("正在扫描"+i+"端口");//按照主机名和端口号创建套接字地址//InetSocketAddress是SocketAddress的实现子类SocketAddress sockaddr = newInetSocketAddress(hostAddress,i);Socket socket = new Socket();//将创建的套接字连接到具有指定超时值得办事器socket.connect(sockaddr, time);Scanner2.Result2.append("主机:"+Scanner2.hostNameStart.getText()+" TCP端口号为:"+i+" > 端口开放"+"\n");socket.close();str += "主机:"+Scanner2.hostNameStart.getText()+" TCP端口号为:"+i+" > 端口开放" + "\n";}catch(ConnectException e){ //因端口封闭而失败的情况Scanner2.Result2.append("主机:"+Scanner2.hostNameStart.getText()+" TCP端口号为:"+i+" > 端口封闭"+"\n");str += "主机:"+Scanner2.hostNameStart.getText()+" TCP端口号为:"+i+" > 端口封闭" + "\n";}catch(SocketTimeoutException e){ //因请求超时而失败的情况Scanner2.Result2.append("主机:"+Scanner2.hostNameStart.getText()+" TCP端口号为:"+i+" > 请求超时"+"\n");str += "主机:"+Scanner2.hostNameStart.getText()+" TCP端口号为:"+i+" > 请求超时" + "\n";}catch (IOException e) {// TODO Autogenerated catch blocke.printStackTrace();}}}}。

网络主机扫描程序的设计与实现

网络主机扫描程序的设计与实现

网络主机扫描程序的设计与实现网络主机扫描程序的设计与实现一、简介网络主机扫描程序是一种用于主机发现与端口扫描的工具。

它通过发送ICMP和TCP/UDP报文来探测网络上活跃的主机,还可以扫描这些主机的开放端口。

网络主机扫描程序在网络安全评估、系统管理以及漏洞扫描等领域中得到广泛应用。

二、设计目标网络主机扫描程序的设计目标主要包括:1. 快速高效:能够快速扫描大规模的网络主机,提高扫描效率。

2. 准确可靠:能够准确地识别活跃的主机和开放的端口,并提供准确的扫描结果。

3. 可扩展性:能够灵活扩展功能,满足不同用户的需求。

4. 用户友好:提供简洁易用的用户界面,方便用户使用和操作。

三、设计原理网络主机扫描程序的设计原理主要包括以下几个方面:1. 主机发现:通过发送ICMP报文来判断目标主机是否活跃。

常用的方法有发送Ping请求和发送ARP请求。

2. 端口扫描:通过发送TCP和UDP报文来判断目标主机的端口状态。

常用的方法有全连接扫描、半开放扫描和综合扫描。

3. 扫描策略:可以根据需求选择扫描的目标地质范围、端口范围、扫描速度等参数。

4. 结果输出:将扫描结果以可读形式输出,如文本、、CSV等格式。

四、实现步骤网络主机扫描程序的实现步骤包括以下几个阶段:1. 参数解析:解析命令行参数,获取扫描目标和扫描选项。

2. 主机发现:根据目标地质范围发送ICMP或ARP请求,判断目标主机是否活跃。

3. 端口扫描:根据扫描选项和目标主机的活跃状态,发送TCP/UDP报文来判断目标主机的端口状态。

4. 结果输出:将扫描结果按照指定格式输出到文件或打印到控制台。

5. 异常处理:处理网络连接超时、目标主机不可达等异常情况。

五、实现工具和技术网络主机扫描程序可以使用多种编程语言和工具来实现,如、C、Nmap等。

常用的技术包括:1. 网络编程:使用Socket库进行网络通信,发送和接收报文。

2. 多线程/多进程:利用并发编程技术提高扫描效率。

基于三次握手的端口扫描器设计与实现

基于三次握手的端口扫描器设计与实现

摘 要: 使用 端 口扫 描器 可以主 动的发 现网络 安全 隐患 ,端 口扫描 器的 实现途径 很多 ,使用 TCP 二次握手 协议 是一种 基本 的方 法 ,最后 给 出 了 C 语 言下 实现的 源程 序 。 关键 词 :端 口扫 描 ;T C P 报 文 ;三 次握 手 中图分类号 :G6 . 8 2 5 文献标识C &1 H00Yl0MQ N C NE NLO !RA1 E E C N F T 0 :
基于 三次 握 手的端 口扫描器 设计 与实现
王树森 杨艳 ( 济源职业技 术学院 河南济 源 445 ; 5 6 C
1 引言 .
随 着互联 网络 的飞 速发 展 , 网络 入 侵行 为 日益严 重 ,网络 安全 成为 人们 的关 注 的热 点问 题。扫描 技 术是解 决 网络安 全领 域的 重 要技 术之一 ,使 用扫描 技术 可以 发现 计算 机 安全 漏洞并 加以 防范 。安全 扫描 技术 与防 火 墙 ,入侵检 测 系统互相 配 合 ,能够 有效 提高 网络 的安 全性 。安全 扫描技 术是 一种 主 动的 防范 措施 ,可 以有效 避免 黑客攻 击行 为 ,做 到防患于未然 。 在计算 机 网络通 信 中 ,通 信双 方是 通过 个称为套接 口的二元组 (P地址 ,端 口 I 号 ) 标识 的 , 传输 层来 说 , 口 是 一个 来 对 端 就 通 信的通 道 , 同时也是 一 个非法 入侵 通道 , 所 以说 , 口扫描 是发现 入 侵的关 键 。 口扫描 端 端 器是 用于端 口扫描的 重要 工具 ,通过 端 口扫 描 器可 以知道 本地或 远端 主机 的哪 些端 口被 使用, 并即时关闭被非法使用的端 口。 下面详 细介 绍端 口扫描 器 的工 作原理 ,并 给出 了一 个实 用的端 口扫描 程序 。

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

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

基于多线程的端口扫描工具设计作者:程承来源:《科学与财富》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)接收到重复服务请求,处理该请求并发送应答信号。

基于网络的端口扫描及检测程序

基于网络的端口扫描及检测程序

基于网络的端口扫描及检测程序摘要:黑客攻击技术是伴随着日益发达的网络技术而发展起来的,而互联网的开放性则是造成黑客攻击的主要原因。

因而,设计和开发新的强势的扫描技术就是刻不容缓的事情。

探讨了基于网络端口的几种扫描技术和检测技术,以期抵御黑客攻击,维护网络安全。

关键词:端口;端口扫描;端口检测1 端口扫描定义及其特点端口扫描通常指攻击者尝试很多的目的地端口,其中包括没有listen()的端口。

TCP端口扫描器是真正的扫描器,TCP端口这种程序可以自主选通TCP/IP端口以及服务(比如,Telnet或FTP),并记录目标的回答。

通过这种方法,可以搜集到关于目标主机的有用信息,比如说,匿名用户是否可以顺利登陆。

但是,其他所谓的扫描器一般只是用于观察一台远程机器的某一服务是否正常工作,仅仅是UNIX 网络应用程序,不是真正的扫描器,然而,这种程序也可以收集目标主机信息,比如说rusers和host命令,这是UNIX程序中很好的例子。

端口扫描行为的一个重要特征是“短时期内有很多来自相同的信源地址传向不同的目的地端口的包”。

另一个特征是“到未listen()端口的SYN”。

显然,有很多方法可以检测端口扫描,最笨的方法就是记录所有的包头,存到一个文件里,然后手工分析。

这些不同的方法有各自的优点和不利。

2 常用的端口扫描技术2.1 TCP connect() 扫描这是最基本的TCP扫描。

长期以来TCP端口扫描的基础就是全TCP连接。

通过使用三次握手即扫描主机尝试与指定的目的机端口建立连接,连接从调用connect()开始,具体表现为对于每个监听端口,connect()会获得成功,不然的话就会返回-1,说明端口是不可访问的。

一般情况下,由于不需要特权,所以计时在多用户环境下,用户们都可以通过connect来完成这个技术,如在日志文件中一般会存在大量密集的连接和错误记录,这些通过TCP connect() 扫描方法会很容易检测出来。

端口扫描实验报告

端口扫描实验报告

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

网络安全程序设计结课论文端口扫描程序设计目录第一章序言 (3)第二章系统设计 (5)2.1 运行环境及语言 (5)2.2系统功能 (6)2.3程序运行流程图 (6)2.4 程序设计过程 (6)2.41创建工程 (6)2.42 主机端口扫描程序设计流程 (8)2.43主要代码 (9)2.5运行结果测试 (15)第三章总结及心得 (16)3.1 总结 (16)3.2 心得体会 (16)第四章参考文献 (16)第一章序言1.1 背景Internet快速的发展,为我们带来了方便同时也带给了我们信息安全担忧。

在计算机信息安全管理中可以通过端口扫描收集系统的信息来自动监测远程或本地主机安全性弱点的程序,可以发现远程服务器的各种tcp端口的分配及提供的服务与他们的软件版本。

从而让管理员间接的或直观的了解到远程主机所存在的安全问题。

从而端口扫描技术得到人们的重视。

1.2目的该文章对端口扫描技术的原理和应用进行了阐述,并设计了一个简单的基于windows平台上的端口扫描系统。

此程序主要完成了TCP connect()扫描和UDP扫描功能。

TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段的主机进行逐个扫描。

能扫描特定的部分端口号或对指定的端口段的端口进行逐个扫描。

此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。

而对于UDP扫描只支持单线程,速度较慢。

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

1.3端口扫描概述网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。

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

每一个网络主机都相当于一个“房间”,黑客能否进入“房间”,取决于是否发现了打开的“门窗”。

也就是说,能否入侵网络主机,或者网络主机是否安全,关键在于能否查出网络主机的系统信息。

而端口是主机与外界通讯交流的数据出入口,即是“门窗”。

端口分为硬件端口和软件端口,所谓硬件端口又称为接口,包括:USB 端口、串行端口、并行端口等。

软件端口一般指网络中面向连接服务(TCP)和无连接服务(UDP)的通讯协议的端口。

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

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

通过端口扫描,发现系统的安全漏洞。

它使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种手段1.4端口扫描的原理端口有两种,UDP端口和TCP端口。

由于UDP端口是面向无连接的,从原理的角度来看,没有被扫描的可能,或者说不存在一种迅速而又通用的扫描算法;而TCP端口具有连接定向(Connection Oriented)的特性(即是有面向连接的协议),为端口的扫描提供了基础。

TCP建立连接时有三次握手:首先,Client端往Server某一端口发送请求连接的SYN包,如果Server的这一端口允许连接,就会给Client端发一个ACK回包,Client端收到Server的ACK包后再给Server端发一个ACK包,TCP连接正式建立,这就是连接成功的过程。

当Client端往Server某一端口发送请求连接的SYN包,此时若Server的这一端口不允许连接,就会给Client端发一个RST 回包,Client端收到Server的RST包后再给Server端发一个RST 包,这就是连接失败的过程。

基于连接的建立过程,可以想到,假如要扫描某一个TCP端口,可以往该端口发一个SYN包,如果该端口处于打开状态,我们就可以收到一个ACK,也就是说,如果收到ACK,就可以判断目标端口处于打开状态,否则,目标端口处于关闭状态。

这就是TCP端口扫描的基本原理第二章系统设计2.1 运行环境及语言运行环境:Visual C++ 6.0语言:c++2.2系统功能简易的TCP connect()扫描,支持多线程; UDP 扫描功能; 能对单个指定的主机进行扫描或扫描指定网段的主机;能扫描特定的部分端口号或对指定的端口段的端口进行逐个扫描。

2.3程序运行流程图2.4 程序设计过程2.41创建工程使用VC++的应用程序生成向导(MFC AppWizard[exe])创建一个基于对话框的工程,该工程的名称0fandi ,如图 所示:否单击确定,然后选择基本对话框,如图所示点击下一步,再在Windows Sockets[W]前打上勾,支持Winsock编程,如图接下来一直选择默认直到完成。

2.42 主机端口扫描程序设计流程1.设计对话框2按Ctrl+W打开类向导,添加变量如图2.43主要代码1.在头文件findport100114019Dlg.h里添加private:SOCKET Socket;2. findport100114019Dlg.cpp文件中添加如下文件包含信息:#pragma comment (lib,"ws2_32.lib") // 静态库#include <winsock.h>3..编写Tcpscan按钮下的代码如下:UpdateData(true); //MFC窗口函数,用来刷新数据WSADATA WSAData;CString str;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0){MessageBox("初始化Winsock失败!");return;}Socket=socket(AF_INET,SOCK_STREAM,0); //创建连接套接字if(Socket==INVALID_SOCKET){MessageBox("创建Socket失败!");WSACleanup();return;}int IpAddress; //判断域名或IP地址int i=0;CString r;m_ip.GetWindowText(r);IpAddress=inet_addr(r);if(IpAddress==INADDR_NONE){hostent* pHostent=gethostbyname(str);if(pHostent)IpAddress=(*(in_addr*)pHostent->h_addr).s_addr;}if (m_port1>m_port2){MessageBox("请确保起始Port不大于终止port");WSACleanup();return;}struct sockaddr_in desthost; //定义套接字地址memset(& desthost,0,sizeof(desthost));desthost.sin_family=AF_INET;//desthost.sin_port=htons(atoi(m_Port));desthost.sin_addr.s_addr=IpAddress;for(unsigned int a =m_port1;a<=m_port2;a++){desthost.sin_port=htons(a);char *SendBuf;SendBuf=new char[2];memset(SendBuf,0,2);int nConnect=connect(Socket,(sockaddr*)&desthost,sizeof(desthost)); if(nConnect==SOCKET_ERROR){str.Format("%d",a);m_status+="TCP Port";m_status+=str;m_status+=": Close\r\n";}else{str.Format("%d",a);m_status+="TCP Port";m_status+=str;m_status+=": open\r\n";}}UpdateData(false);closesocket(Socket);WSACleanup(); //释放套接字绑定4.编写Udpscan按钮下的代码如下:UpdateData(true); //MFC窗口函数,用来刷新数据WSADATA WSAData;CString str;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0){MessageBox("初始化Winsock失败!");return;}Socket=socket(AF_INET,SOCK_DGRAM,0); //创建连接套接字if(Socket==INVALID_SOCKET){MessageBox("创建Socket失败!");WSACleanup();return;}int nIotrl;unsigned long flag=1;nIotrl=ioctlsocket(Socket,FIONBIO,&flag);if(nIotrl==SOCKET_ERROR){MessageBox("设置socket模式失败!");closesocket(Socket);WSACleanup();return;}int IpAddress;int i=0;CString r;m_ip.GetWindowText(r);IpAddress=inet_addr(r);if(IpAddress==INADDR_NONE){hostent* pHostent=gethostbyname(str);if(pHostent)IpAddress=(*(in_addr*)pHostent->h_addr).s_addr;}/*if (m_port1>m_port2){MessageBox("请确保起始Port不大于终止port");WSACleanup();return;}*/struct sockaddr_in desthost; //定义套接字地址memset(&desthost,0,sizeof(desthost));desthost.sin_family=AF_INET;//desthost.sin_port=htons(atoi(m_Port));desthost.sin_addr.s_addr=IpAddress;for(unsigned int a =m_port1;a<=m_port2;a++){desthost.sin_port=htons(a);char *SendBuf;SendBuf=new char[2];memset(SendBuf,0,2);int nSend=sendto(Socket,SendBuf,1,0,( struct sockaddr*)&desthost,sizeof(desthost));if(nSend==SOCKET_ERROR){MessageBox("UDP包发送失败!");closesocket(Socket);WSACleanup();return;}Sleep(500);sockaddr_in SourceHost;int SourceSize;SourceSize=sizeof(SourceHost);memset(&SourceHost,0,SourceSize);char *RecvBuf;RecvBuf=new char[2];memset(RecvBuf,0,2);int nRecv;nRecv=recvfrom(Socket,RecvBuf,1,0,(structsockaddr*)&SourceHost,&SourceSize);if(nRecv==SOCKET_ERROR){int ErrorCode=GetLastError();if(ErrorCode==10054){str.Format("%d",a);m_status+="UDP Port";m_status+=str;m_status+=": Close\r\n";}if(ErrorCode==10035){str.Format("%d",a);m_status+="UDP Port";m_status+=str;m_status+=": open\r\n";}}else{m_status+="UDP Port";m_status+=a;m_status+=": open\r\n";}}UpdateData(false);closesocket(Socket);WSACleanup(); //释放套接字绑定2.5运行结果测试如图:第三章总结及心得3.1 总结端口扫描是综合扫描器最基础的功能,也是黑客攻击的基本步骤,因此,掌握端口扫描的常用技术和防措施对维护系统安全有重要作用。

相关文档
最新文档