简单端口扫描程序的实现
实验指导书2-网络端口扫描

实验2网络端口扫描一、实验目的通过练习使用网络端口扫描器,可以了解目标主机开放的端口和服务程序,从而获取系统的有用信息,发现网络系统的安全漏洞。
在实验中,我们将在Windows 操作系统下使用Superscan 进行网络端口扫描实验,通过端口扫描实验,可以增强学生在网络安全方面的防护意识。
可以增强学生在网络安全方面的防护意识。
利用综合扫描软件利用综合扫描软件利用综合扫描软件“流光”“流光”“流光”扫描系统扫描系统的漏洞并给出安全性评估报告。
的漏洞并给出安全性评估报告。
二、实验原理(一).端口扫描的原理一个开放的网络端口就是一条与计算机进行通信的信道,对网络端口的扫描可以得到目标计算机开放的服务程序、运行的系统版本信息,从而为下一步的入侵做好准备。
侵做好准备。
对网络端口的扫描可以通过执行手工命令实现,对网络端口的扫描可以通过执行手工命令实现,对网络端口的扫描可以通过执行手工命令实现,但效率较低;但效率较低;但效率较低;也可也可以通过扫描工具实现,效率较高。
扫描工具是对目标主机的安全性弱点进行扫描检测的软件。
检测的软件。
它一般具有数据分析功能,它一般具有数据分析功能,它一般具有数据分析功能,通过对端口的扫描分析,通过对端口的扫描分析,通过对端口的扫描分析,可以发现目标可以发现目标主机开放的端口和所提供的服务以及相应服务软件版本和这些服务及软件的安全漏洞,从而能及时了解目标主机存在的安全隐患。
全漏洞,从而能及时了解目标主机存在的安全隐患。
扫描工具根据作用的环境不同,可分为两种类型:网络漏洞扫描工具和主机漏洞扫描工具。
主机漏洞扫描工具是指在本机运行的扫描工具,以期检测本地系统存在的安全漏洞。
网络漏洞扫描工具是指通过网络检测远程目标网络和主机系统所存在漏洞的扫描工具。
本实验主要针对网络漏洞扫描工具进行介绍。
统所存在漏洞的扫描工具。
本实验主要针对网络漏洞扫描工具进行介绍。
1.端口的基础知识为了了解扫描工具的工作原理,首先简单介绍一下端口的基本知识。
端口扫描程序

端口扫描回顾
分类 • 开放扫描(Open Scanning) • 半开放扫描(Half-Open Scanning) • 秘密扫描(Stealth Scanning)
试验题目
• 利用socket中的sock_stream套接字实现一个TCP公开扫描 程序,要求:
• 输入
1. 用户可以通过程序可以设定扫描目的的地址; 2. 用户可以设定扫描端口的范围;
char * s_name; char** s_aliases; int s_port; char* s_proto; }
端口扫描程序
20112011-09
课程内容
• 端口扫描回顾
• Connect端口扫描程序工作原理 端口扫描程序工作原理
端口扫描回顾
• 定义:所谓端口扫描就是发送数据包给被探测端,根 据被探测端的响应信息确定被探测端开启了那些端口。 • 作用:确定有哪些端口正处于监听状态是一个非常重 要的攻击步骤,攻击者不仅可以了解到远程系统上都 运行着哪些服务,还可以准确地探测出目标系统所使 用的操作系统和应用程序的类型和版本
• •
输出
1. 显示扫描目标开启了那些端口;
程序的验证:
• 在shell下输入命令“netstat -ltn”,对比自己程序的输出结果
试 验 题 目 提 示 —— 端 口 扫 描 程 序 工 servent *getservbyport(port,proto) • Struct servenet{
端口扫描与检测技术的实现论文

端口扫描与检测技术的实现摘要随着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世纪的地球人已经生活在信息时代。
Nmap简单扫描过程

Nmap简单扫描过程目录一、主机发现(HOST DISCOVERY) (2)1.探测局域网内活动主机 (2)二、端口扫描 (4)1.半开放扫描(TCP SYN S CANNING) (4)2.TCP CONNECT SCANNING (4)3.TCP ACK SCANNING (4)4.TCP FIN/X MAS/NULL SCANNING (4)5.UDP SCANNING (4)6.其他方式 (4)三、版本侦测 (4)1.版本侦测主要分为以下几个步骤: (5)四、操作系统侦测 (5)1.实现方式如下 (5)一、主机发现(Host Discovery)用于发现目标主机是否在线(Alive,处于开启状态)。
原理:与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。
1.探测局域网内活动主机例子1:扫描局域网192.168.1.100-192.168.1.120范围内哪些IP的主机是活动的。
命令:nmap –sn 192.168.31.100-254Starting Nmap 6.46 ( ) at 2015-06-01 17:07 CSTNmap scan report for 192.168.31.101Host is up (0.00028s latency).MAC Address: 00:0C:29:BD:8B:91 (Super Micro Computer)Nmap scan report for 192.168.31.102Host is up (0.00088s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.110Host is up (0.00047s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.157Host is up (0.00052s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.158Host is up (0.00096s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.161Host is up (0.00045s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.163Host is up (0.00027s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.165Host is up (0.00036s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.180Host is up (0.00085s latency).MAC Address: 00:0C:29:BD:8B:91 (Asustek Computer)Nmap scan report for 192.168.31.202Host is up (0.0011s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.205Host is up (0.00074s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.209Host is up (0.00046s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for (192.168.31.111)Host is up.Nmap done: 155 IP addresses (13 hosts up) scanned in 1.14 seconds例子2:扫描局域网192.168.31.0网段下哪些IP的主机是活动的命令:nmap -sn 192.168.31.0/24Starting Nmap 6.46 ( ) at 2015-06-01 17:35 CSTNmap scan report for 192.168.31.1Host is up (0.014s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.5Host is up (0.0010s latency).MAC Address: 00:0C:29:BD:8B:91 (Realtek Semiconductor)Nmap scan report for 192.168.31.6Host is up (0.00098s latency).MAC Address: 00:0C:29:BD:8B:91 (Lanner Electronics)Nmap scan report for 192.168.31.8Host is up (0.00094s latency).MAC Address: 00:0C:29:BD:8B:91 (Super Micro Computer) Nmap scan report for 192.168.31.9Host is up (0.00080s latency).MAC Address: 00:0C:29:BD:8B:91 (Lanner Electronics) Nmap scan report for 192.168.31.25Host is up (0.00057s latency).MAC Address: 00:0C:29:BD:8B:91 (Asustek Computer) Nmap scan report for 192.168.31.26Host is up (0.00056s latency).MAC Address: 00:0C:29:BD:8B:91 (Asustek Computer) Nmap scan report for 192.168.31.27Host is up (0.00060s latency).MAC Address: 00:0C:29:BD:8B:91 (Asustek Computer) Nmap scan report for 192.168.31.37Host is up (0.00040s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.40Host is up (0.00072s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.49Host is up (0.00042s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.63Host is up (0.00056s latency).MAC Address: 00:0C:29:BD:8B:91 (Super Micro Computer) Nmap scan report for 192.168.31.80Host is up (0.0017s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.81Host is up (0.0016s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.82Host is up (0.0016s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.83Host is up (0.0016s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.90Host is up (0.0016s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.101Host is up (0.00036s latency).MAC Address: 00:0C:29:BD:8B:91 (Super Micro Computer) Nmap scan report for 192.168.31.102Host is up (0.00052s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.105Host is up (0.00037s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.110Host is up (0.00092s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.157Host is up (0.00067s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.158Host is up (0.00082s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.161Host is up (0.00060s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.163Host is up (0.00047s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.165Host is up (0.00054s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.180Host is up (0.00064s latency).MAC Address: 00:0C:29:BD:8B:91 (Asustek Computer)Nmap scan report for 192.168.31.202Host is up (0.00067s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.205Host is up (0.00061s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for 192.168.31.209Host is up (0.00049s latency).MAC Address: 00:0C:29:BD:8B:91 (VMware)Nmap scan report for (192.168.31.111)Host is up.Nmap done: 256 IP addresses (31 hosts up) scanned in 1.33 seconds二、端口扫描用于确定目标主机的TCP/UDP端口的开放情况1.半开放扫描(TCP SYN Scanning)该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么判断端口是开放的;如果收到RST包,说明该端口是关闭的。
简单端口扫描程序的实现

计算机网络课程设计论文题目:简单端口扫描程序的实现院(部)名称:计算机科学与工程学院学生姓名:专业:学号:指导教师姓名:报告提交时间:报告答辩时间:(不填)目录一、设计要求 (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 通过这两个命令,你能收集到目标计算机上的有关用户的消息。
端口扫描程序nmap使用手册

-b username:password@server:port。
除了server以外,其余都是可选的。如果你想知道什么服务器有这种缺陷,可以参考我在Phrack 51发表的文章。还可以在nmap的站点得到这篇文章的最新版本。
-sF -sF -sN
秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式:即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视,而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。FIN扫描使用暴露的FIN数据包来探测,而圣诞树扫描打开数据包的FIN、URG和PUSH标志。不幸的是,微软决定完全忽略这个标准,另起炉灶。所以这种扫描方式对Windows95/NT无效。不过,从另外的角度讲,可以使用这种方式来分别两种不同的平台。如果使用这种扫描方式可以发现打开的端口,你就可以确定目标注意运行的不是Windows系统。如果使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的,而使用SYN扫描显示有打开的端口,你可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处,因为nmap有内嵌的操作系统检测功能。还有其它几个系统使用和windows同样的处理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时,以上这些系统都会从打开的端口发出复位数据包。
根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
实验五 端口扫描器实验报告(付代码)

实验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协议封装数据包进行通信。
计算机网络课程设计题目

计算机网络课程设计一.中小型千兆网吧组建内容及要求:用BOSON软件实现小规模网络的模拟。
熟悉对路由器和交换机的配置命令,调通网络,并通过实例深入理解网络基本工作原理及实现方法。
学会网络构建、日常IP地址1.2.3.4.5.6.写出课程设计报告:设计目的、设计内容、设计方案、拓扑图、设备选型、方案报价、子网划分等内容。
(1)企业网络工程(2)银行网络工程(3)医院网络工程(4)校园网网络工程(5)大型机场信息网络工程(6)邮电综合管理信息网(7)某航空公司网络系统建设(8)某市宽带信息网络(9)证券交易网络系统(10)学校以太网网络建设三.Ping程序的设计与实现设计的目的是使学生掌握网络层协议的原理及实现方法。
设计内容,在给定的Ping程序的基础上做如下功能扩充:●-h 显示帮助信息●●●PingPing消息。
ICMPIdentification,Flags,FragmentOffset用于IP包分段TimetoLiveIP包的存活时长ProtocolICMP=1Addresses发送Echo消息的源地址是发送Echoreply消息的目的地址,相反,发送Echo消息的目的地址是发送Echoreply消息的源地址。
Ping实际上是使用ICMP中的ECHO报文来实现的。
Echo或EchoReply消息格式如下:012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Code|Checksum|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Identifier|SequenceNumber|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Data...+-+-+-+-+-Typeecho消息的类型为8echoreply的消息类型为0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络课程设计论文题目:简单端口扫描程序的实现院(部)名称:计算机科学与工程学院学生姓名:专业:学号:指导教师姓名:报告提交时间:报告答辩时间:(不填)目录一、设计要求 (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 通过这两个命令,你能收集到目标计算机上的有关用户的消息。
扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息。
总之,端口扫描”通常指用同一信息对目标计算机的所有所需扫描的端口进行发送,然后根据返回端口状态来分析目标计算机的端口是否打开、是否可用。
“端口扫描”行为的一个重要特征,是在短时期内有很多来自相同的信源地址,传向不同的目的、地端口的包。
对于用端口扫描进行攻击的人来说,攻击者总是可以做到在获得扫描结果的同时,使自己很难被发现或者说很难被逆向寻踪。
为了隐藏攻击,攻击者可以慢慢地进行扫描。
除非目标系统通常闲着(这样对一个没有listen()端口的数据包都会引起管理员的注意),有很大时间间隔的端口扫描是很难被识别的。
隐藏源地址的方法是发送大量的欺骗性的端口扫描数据包(如1 000个),其中只有一个是从真正的源地址来的。
这样即使全部数据包都被察觉,被记录下来,也没有人知道哪个是真正的信源地址。
能发现的仅仅是“曾经被扫描过”的地址。
也正因为这样,那些黑客们才乐此不疲地继续大量使用,这种端口扫描技术,来达到他们获取目标计算机信息,并进行恶意攻击的目的。
通常进行端口扫描的工具目前主要采用的是端口扫描软件,也称之为“端口扫描器”。
端口扫描器也是一种程序,它可以对目标主机的端口进行连接,并记录目标端口的应答。
端口扫描器通过选用远程TCP/IP协议不同的端口的服务,记录目标计算机端口给予回答的方法,可以收集到很多关于目标计算机的各种有用信息(比如是否有端口在侦听,是否允许匿名登录,是否有可写的FTP目录,是否能用Telnet等)。
虽然端口扫描器可以用于正常网络安全管理,但就目前来说,它主要还是被黑客所利用,是黑客入侵、攻击前期不可缺少的工具。
黑客一般先使用扫描工具扫描待入侵主机,掌握目标主机的端口打开情况,然后采取相应的入侵措施。
无论是正常用途,还是非法用途,端口扫描可以提供4个用途。
1.识别目标主机上有哪些端口是开放的,这是端口扫描的最基本目的。
2.识别目标系统的操作系统类型(Windows、Linux或UNIX等)。
3.识别某个应用程序或某个特定服务的版本号。
4.识别目标系统的系统漏洞,这是端口扫描的一种新功能。
当然以上这些功能不可能是一成不变的,随着技术的不断完善,新的功能会不断地增加。
端口扫描器并不是一个直接攻击网络漏洞的程序,它仅仅能帮助发现目标计算机的某些内在的弱点。
一个好的扫描器还能对它得到的数据进行分析,帮助查找目标计算机的漏洞。
但它不会提供一个系统的详细步骤。
编写扫描器程序必须要很多TCP/IP协议程序,以及C、Perl和SHELL语言的知识,还需要一些Socket编程的背景。
四、系统功能描述及软件模块划分主要功能有:1. 使用端口扫描对一台主机进行扫描,一台主机上有哪些端口是打开的;2. 对一个网段进行 IP 扫描,显示出一个网段内有哪些主机是开机的。
软件所包含的主要模块有:1.对IP的处理。
包括对IP的移位和运算等。
2.对本机个端口的扫描。
3.对本网段的其他主机个端口的扫描。
五、设计步骤六、关键问题及其解决方法完整的代码如下:import java.io.*;import .*;import java.util.*;import ng.*;import ng.String.*;import ng.Integer.*;import java.awt.*;public class ScanPort2{public static void main(String args[]){System.out.println();System.out.println(" *********自定义多IP多TCP端口扫描程序*******");System.out.println(" *******按Ctrl+c退出扫描*******");String shubeginip="",shuendip="";String sp1="",sp2="",sp3="";int beginport,endport;int maxThread=0;// 异常判断变量int bport=0,eport=0;boolean bool = false;boolean bool1 = false;boolean bool2 = false;boolean bool3 = false;boolean bool4 = false;long xxx=0,xxx2=0;//由用户输入扫描范围//读取输入开始ipSystem.out.println();System.out.println("请输入起始ip:");while(!bool){try{BufferedReader in1=new BufferedReader(new InputStreamReader(System.in));shubeginip=in1.readLine();xxx=Com.ipj(shubeginip);if(xxx==0){bool=false;System.out.println("IP格式错误,请输入正确的起始ip:");}elseif(xxx<=Com.ipj("1.0.0.0")){bool=false;System.out.println("IP范围错误,请输入正确的起始ip:");}elsebool=true;}catch(IOException e){System.out.println("IP格式错误,请输入正确的起始ip:");}catch(NumberFormatException e){System.out.println("IP 格式错误,请输入正确的起始ip:");}catch(StringIndexOutOfBoundsExceptione){System.out.println("IP格式错误,请输入正确的开始ip:");}catch(NullPointerException e){System.out.print("退出程序!");}}//读取输入结束ipSystem.out.println();System.out.println("请输入结束ip:");while(!bool1){try{BufferedReader in2=new BufferedReader(new InputStreamReader(System.in));shuendip=in2.readLine();xxx2=Com.ipj(shuendip);if(xxx2==0){bool1=false; System.out.println("IP格式错误,请输入正确的结束ip:");}elseif(Math.abs(xxx2-xxx)>5155130){bool1=false;System.out.println("扫描IP数不能大于5155130,请输入正确的结束ip:");}elsebool1=true;}catch(IOException e){System.out.println("IP格式错误,请输入正确的结束ip:");}catch(NumberFormatException e){System.out.println("IP格式错误,请输入正确的结束ip:");}catch(StringIndexOutOfBoundsExceptione){System.out.println("IP格式错误,请输入正确的结束ip:");}catch(NullPointerException e){System.out.print("退出程序!");}}//读取输入起始端口System.out.println();System.out.println("请输入起始端口:");while(!bool2){try{BufferedReader in3=new BufferedReader(new InputStreamReader(System.in));sp1=in3.readLine();bport=Integer.parseInt(sp1);if(bport<0|bport>65535){System.out.println("端口错误,请输入正确的起始端口:");bool2=false;}elsebool2=true;}catch(IOException e){System.out.println("端口错误,请输入正确的起始端口:");}catch(NumberFormatException e){System.out.println("端口错误,请输入正确的起始端口:");}}beginport=Integer.parseInt(sp1);//读取输入结束端口System.out.println();System.out.println("请输入结束端口:");while(!bool3){try{BufferedReader in4=new BufferedReader(new InputStreamReader(System.in));sp2=in4.readLine();eport=Integer.parseInt(sp2);if(eport<beginport|eport>65535){System.out.println("端口错误,请输入正确的结束端口:");bool3=false;}elsebool3=true;}catch(IOException e){System.out.println("端口错误,请输入正确的结束端口:");}catch(NumberFormatException e){System.out.println("端口错误,请输入正确的起始端口:");}}endport=Integer.parseInt(sp2);//读取输入最大线程数System.out.println();System.out.println("请输入最大线程(1-300):");while(!bool4){try{BufferedReader in5=new BufferedReader(new InputStreamReader(System.in));sp3=in5.readLine();maxThread=Integer.parseInt(sp3);if(maxThread>300|maxThread<1){System.out.println("请输入1-300之间的整数:");bool4=false;}elsebool4=true;}catch(IOException e){System.out.print("退出程序!");} catch(NumberFormatException e){System.out.println("请输入1-300之间的整数");}catch(NullPointerException e){System.out.print("退出程序!");}}maxThread=Integer.parseInt(sp3);//开始扫描System.out.println("正在处理IP地址……");long long_beginip=Com.ipj(shubeginip);//转换iplong long_endip=Com.ipj(shuendip);int allport=endport-beginport+1;//计算扫描端口总数int allip=(int)Math.abs(long_beginip - long_endip) + 1; int t1=0,t2=0; //计算耗时long begint,endt,alltime;Date mydate=new Date();begint=mydate.getTime(); //获取当前时间try{//计算两个ip值之间的所有iplong[] ipduan=new long[(int)Math.abs(long_beginip - long_endip) + 1];for(int k=0;k<=Math.abs(long_beginip - long_endip);k++){if (long_beginip-long_endip < 0)ipduan[k]=long_beginip+k;elseipduan[k]=long_endip+k;}String[] ips1=new String[ipduan.length];System.out.println("正在扫描……");for(int a=0;a<=ipduan.length;a++){ips1[a]=Com.ipk(ipduan[a]);if(ips1[a]!=null){System.out.println("正在扫描:"+ips1[a]);for(intxPort=beginport;xPort<=endport;xPort++ ){int x=quanjubianliang.Threadnum;if(x>maxThread){try{Thread.sleep(100);}catch(InterruptedException e){}}String threadName="thread"+xPort;if(xPort!=21)newScanThread(ips1[a],xPort,threadName).start();}}elseallip=allip-1;}}catch(Exception exp){System.out.println();}Date mydate2=new Date(); //获取结束时间try{Thread.sleep(1000);}catch(InterruptedException e){}System.out.println("扫描完成!");endt=mydate2.getTime();alltime=endt-begint;System.out.print("扫描了"+allip+"个IP共"+allip*allport+"个端口,用时"+alltime+"毫秒");}}//全局变量,用做限制最大线程class quanjubianliang{public static int Threadnum=0;}//扫描线程class ScanThread extends Thread{private String ghost;private int scanP;public ScanThread(String h,int mPort,String threadName) {ghost=h;scanP=mPort;}public void run(){quanjubianliang.Threadnum=quanjubianliang.Threadnum+1;try{SocketAddress sockaddr = new InetSocketAddress(ghost,scanP);Socket scans=new Socket();int timeoutMs=50;scans.connect(sockaddr, timeoutMs);scans.close();System.out.println("主机:"+ghost+" TCP端口:"+scanP+" 在线");}catch(SocketTimeoutException e){}catch(IOException e){}quanjubianliang.Threadnum=quanjubianliang.Threadnum-1;}}//ip处理class Com{//将字符串ip转换成长整型public static long ipj(String ipAddress){long[] ip=new long[4];int position1=ipAddress.indexOf(".");int position2=ipAddress.indexOf(".",position1+1); int position3=ipAddress.indexOf(".",position2+1);ip[0]=Long.parseLong(ipAddress.substring(0,position1));ip[1]=Long.parseLong(ipAddress.substring(position1+1,position2)); ip[2]=Long.parseLong(ipAddress.substring(position2+1,position3)); ip[3]=Long.parseLong(ipAddress.substring(position3+1));if(ip[0]==0|ip[3]==0|ip[0]>255|ip[1]>255|ip[2]>255|ip[3]>255)return 0;elsereturn(ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];}//将长整型ip转换为字符串型public static String ipk(long longIP){StringBuffer sb=new StringBuffer("");//直接右移24位sb.append(String.valueOf(longIP>>>24));sb.append(".");//将高8位置0,然后右移16位sb.append(String.valueOf((longIP&0x00FFFFFF)>>>16));sb.append(".");sb.append(String.valueOf((longIP&0x0000FFFF)>>>8)); sb.append(".");sb.append(String.valueOf(longIP&0x000000FF));String sc=sb.toString();String[] ss = sc.split("\\.");if(Integer.parseInt(ss[3])==0)return null;elsereturn sb.toString();}} 七、设计结果八、软件使用说明运行程序,跟据程序内容的题示输入起始IP,结束IP,端口号,线程等参数,最后程序返回扫描的结果。