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

合集下载

端口扫描工具Nmap

端口扫描工具Nmap

端口扫描工具Nmap一、Nmap简介Nmap(Network Mapper)是开放源码的网络探测和端口扫描工具,具有主机发现、端口扫描、操作系统检测、服务和版本检测、逃避放火墙及入侵检测系统等功能。

可从网站/nmap/下载不同操作系统版本的源代码和可执行程序。

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

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

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

命令格式与帮助:Nmap命令格式:nmap [ Scan Type ...] [ Options ] { target specification }Nmap命令帮助:C:\>nmap(不带命令参数运行nmap)常用扫描类型:(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 同步扫描。

Linux服务器端口扫描工具的Python脚本

Linux服务器端口扫描工具的Python脚本

Linux服务器端口扫描工具的Python脚本在现代信息技术的发展中,服务器的安全性显得尤为重要。

为了确保服务器的安全,管理员需要定期扫描服务器上的开放端口,以及及时发现潜在的安全漏洞。

而Linux服务器为管理员提供了强大的端口扫描工具,本文将介绍一种基于Python的服务器端口扫描工具脚本。

Linux操作系统的内核具有精巧的网络功能,管理员可以使用它来构建自己的端口扫描工具。

Python作为一种简洁高效的编程语言,为我们提供了丰富的库和模块,使得编写端口扫描脚本变得相对容易。

我们首先需要导入必要的库和模块。

在Python中,我们可以使用socket模块来进行网络通信。

下面是一个简单的Python脚本示例:```import socketdef port_scan(target_host, target_ports):for port in target_ports:try:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1)result = sock.connect_ex((target_host, port))if result == 0:print(f"端口 {port} 已开放")sock.close()except KeyboardInterrupt:print("程序被中断")sys.exit()except socket.gaierror:print("主机名无法解析")sys.exit()except socket.error:print("无法连接到服务器")sys.exit()target_host = "127.0.0.1" # 目标主机的IP地址target_ports = [80, 443, 22, 21, 3389] # 目标端口列表port_scan(target_host, target_ports)```上述脚本中,我们定义了一个名为`port_scan`的函数,用于进行端口扫描。

端口扫描:你应该知道的那些事

端口扫描:你应该知道的那些事

端⼝扫描:你应该知道的那些事引⾔:本⽂将会介绍端⼝扫描的各种⽅式的原理。

端⼝扫描概述:端⼝扫描的⽬的是找出⽬标系统上提供的服务列表。

端⼝扫描程序挨个尝试与 TCP/UDP端⼝连接,然后根据端⼝与服务的对应关系,结合服务器端的反应推断⽬标系统上是否运⾏了某项服务,攻击者通过这些服务可能获得关于⽬标系统的进⼀步的知识或通往⽬标系统的途径。

根据端⼝扫描利⽤的技术,扫描可以分成多种类型,下⾯分别叙述。

完全连接扫描完全连接扫描利⽤ TCP/IP 协议的三次握⼿连接机制,使源主机和⽬的主机的某个端⼝建⽴⼀次完整的连接。

如果建⽴成功,则表明该端⼝开放。

否则,表明该端⼝关闭。

半连接扫描半连接扫描是指在源主机和⽬的主机的三次握⼿连接过程中,只完成前两次握⼿,不建⽴⼀次完整的连接。

SYN 扫描⾸先向⽬标主机发送连接请求,当⽬标主机返回响应后,⽴即切断连接过程,并查看响应情况。

如果⽬标主机返回ACK信息,表⽰⽬标主机的该端⼝开放。

如果⽬标主机返回RESET 信息,表⽰该端⼝没有开放。

ID 头信息扫描这种扫描⽅法需要⽤⼀台第三⽅机器配合扫描,并且这台机器的⽹络通信量要⾮常少,即dumb主机。

⾸先由源主机A向dumb主机B发出连续的PING数据包,并且查看主机B返回的数据包的ID头信息。

⼀般⽽⾔,每个顺序数据包的ID头的值会增加1。

然后由源主机A假冒主机B 的地址向⽬的主机C的任意端⼝(1~65535)发送SYN数据包。

这时,主机C向主机B发送的数据包有两种可能的结果∶ ·SYNACK 表⽰该端⼝处于监听状态。

● RSTACK 表⽰该端⼝处于⾮监听状态。

那么,由后续PING 数据包的响应信息的ID头信息可以看出,如果主机C的某个端⼝是开放的,则主机B返回A的数据包中,ID头的值不是递增1,⽽是⼤于1。

如果主机C的某个端⼝是⾮开放的,则主机B返回A的数据包中,ID头的值递增1,⾮常规律。

隐蔽扫描隐蔽扫描是指能够成功地绕过IDS、防⽕墙和监视系统等安全机制,取得⽬标主机端⼝信息的⼀种扫描⽅式。

云安全漏洞扫描系统

云安全漏洞扫描系统

云安全漏洞扫描系统
系统工作流程详解
系统工作流程详解
系统工作流程概述
1.系统通过网络爬虫和扫描器收集目标系统的信息。 2.收集到的信息经过分析和处理后,生成漏洞报告。 3.报告通过可视化界面展示给用户,并提供漏洞修复建议。
信息收集模块
1.网络爬虫负责收集目标系统的基本信息,如IP地址、开放的端口、运行的服务等。 2.扫描器根据收集到的信息,进一步探测目标系统的漏洞。 3.信息收集模块具有高效性和准确性,能够快速准确地收集目标系统的信息。
系统工作流程详解
▪ 系统安全性
1.系统采用最新的加密技术保护用户数据和传输过程的安全。 2.系统对漏洞库和安全规则进行定期更新,确保系统能够识别 最新的漏洞。 3.用户权限管理严格,确保只有授权用户能够访问系统。
▪ 系统可扩展性和可维护性
1.系统采用模块化设计,方便进行功能扩展和升级。 2.系统的各个模块具有独立性,降低了维护的难度和成本。 3.系统提供详细的日志和监控功能,方便进行故障排查和问题 定位。
漏洞数据库
1.漏洞数据库采用NoSQL数据库进行存储,能够支持海量漏洞 数据的存储和查询。 2.漏洞数据采用标准化的漏洞描述语言(如CVE),方便进行 漏洞信息的共享和更新。 3.漏洞数据库提供了灵活的查询接口,支持多种漏洞查询方式 ,方便用户进行漏洞信息的获取和分析。
系统架构和主要组件
▪ 扫描引擎
云安全漏洞扫描系统架构
1.云安全漏洞扫描系统采用分布式架构,包括控制节点和扫描 节点。 2.控制节点负责任务调度和结果汇总,扫描节点负责具体的漏 洞扫描工作。 3.节点之间采用高速网络连接,保证扫描效率和数据传输速度 。
云安全漏洞扫描系统介绍
▪ 云安全漏洞扫描系统特点

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

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

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

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

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

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

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

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

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

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

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

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

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

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

主机端口扫描程序设计

主机端口扫描程序设计

主机端口扫描程序设计摘要计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。

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

本程序是在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 课题的背景及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。

C语言实现端口扫描

C语言实现端口扫描

C语言实现端口扫描一、简介端口扫描是一种用于查找网络安全漏洞的技术,它能够检查服务器上打开的端口,并找出潜在的安全风险。

它可以帮助用户保护网络,防止黑客入侵和木马病毒的攻击。

本文将介绍如何使用C语言实现端口扫描。

二、实现端口扫描的原理实现端口扫描的原理是对目标主机进行TCP和UDP数据包扫描,通过观察目标主机响应来确定开放的端口。

当一个端口已经打开,对应的服务将回复一个带有TCP包头信息的数据包。

三、实现端口扫描的C语言代码下面是实现端口扫描的C语言代码:#include <stdio.h>#include <sys/socket.h>#include <arpa/inet.h>#include <unistd.h>#include <string.h>int main(int argc, char** argv)int sock = 0;struct sockaddr_in serv_addr;char* ip = argv[1];int start_port = atoi(argv[2]);int end_port = atoi(argv[3]);char buffer[1024] = {0};//循环扫描端口for(int port = start_port; port <= end_port; port++)// 创建Socketif ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)printf("Socket creation error \n");continue;}memset(&serv_addr, '0', sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(port);// Convert IPv4 and IPv6 addresses from text to binary form if (inet_pton(AF_INET, ip, &serv_addr.sin_addr)<=0)printf("Invalid address/ Address not supported \n"); continue;}//连接到目标主机if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)//连接失败表示端口关闭printf("Port %d is closed \n", port);continue;}//连接成功表示端口开放printf("Port %d is open \n", port);close(sock);}return 0;。

端口扫描器的几种代码实现方案

端口扫描器的几种代码实现方案

端⼝扫描器的⼏种代码实现⽅案 搞安全的应该都知道端⼝扫描在渗透测试、漏洞扫描过程中的重要性,其与URL爬⾍等技术构成了漏洞扫描的第⼀阶段,即⽬标信息收集。

因此能否开发出⼀款⾼效稳定的端⼝扫描器,往往决定了漏洞扫描器的好坏。

那么说到端⼝扫描器,我们往往会先想到nmap、masscan等神器,它们是这个领域的标杆。

但本篇并不是为了介绍这⼏款⼯具,⽽是谈谈如何⾃研⼀款⾼效稳定的端⼝扫描器。

端⼝扫描器,顾名思义就是为了探测服务器上的某个端⼝是否开放,究其原理可以分为很多种探测⽅式,⽐如tcp三次握⼿扫描,syn扫描等等,本篇并不打算详细介绍这些扫描⽅式的区别,有兴趣的可以看下nmap的⽂档,对这⼏种扫描⽅式有详细的介绍。

那么说下本⽂重点,基于这⼏天我研究并尝试利⽤python、go开发tcp扫描器、tcp-syn扫描器,以及对⽐它们之间的速度性能、稳定性差异情况,将测试结果在此做个记录,并分享⼀下代码以及⽅案。

说明:⽂章结尾将给出本篇所使⽤代码的Github地址,可供⼤家测试,代码测试环境为centos7。

scan for Python Socket Python的Socket模块可以创建套接字,创建tcp三次握⼿连接,以此探测⽬标端⼝是否存活。

本篇将使⽤socket模块编写tcp扫描以及syn 扫描,并对⽐两者的差异。

tcp scan 快来看代码:1#! -*- coding:utf-8 -*-2import time3import socket4 socket_timeout = 0.15def tcp_scan(ip,port):6try:7 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)8 s.settimeout(socket_timeout)9 c=s.connect_ex((ip,port))10if c==0:11print “%s:%s is open” % (ip,port)12else :13# print “%s:%s is not open” % (ip,port)14pass15except Exception,e:16print e17 s.close()18if__name__== “__main__” :19 s_time = time.time()20 ip = “14.215.177.38”21for port in range(0,1024):22 ” ‘ 此处可⽤协作 ‘ ”23 tcp_scan(ip,port)24 e_time = time.time()25print “scan time is “ ,e_time-s_time 运⾏结果: 说明⼀下:可以看到此代码扫描1024个端⼝⽤了102s,当然代码并没有⽤多线程、协程等⽅式提⾼扫描效率(使⽤协程测试过扫65535个端⼝⽤时400s左右),因为python在这⽅⾯的能⼒⽐较弱;由于扫描过程中会建⽴tcp三次握⼿,因此⽐较消耗资源。

网站漏洞扫描工具

网站漏洞扫描工具

偶尔在网上看到这些,拿来和大家一块看看,也好让各个站长懂得保护自己的网站。

网站漏洞扫描工具Shadow Security Scanner v 网络入侵机_V2.0 波尔远程控制V6.32 VIP破解版superscan4.0扫描器HttpsMimTools nohackasp木马生成器拿站和思路Oracle_专用注射器远程控制软件ntshell v1.0(开源挖掘鸡4.02 Willcome急速批量抓鸡全能PcShare远程控制软件多功能S扫描器php168漏洞利用工具中华经典网络军刀NC小马上线及绑困和抓鸡iebho攻击程序终极Rootkit超详细讲解鸽子上线QQEAMIL攻击器PHP木马修改增强版金豹多顶下载者framework-2.6-snapshot 提权工具集EditPlus v2.31 Buil最新过XP2网马剑煞BetaV7.6.8扫描端口V2.0X-way扫描器SpyNet Sniffer网站猎手2.0X-Scan-v3.3流光5.0黑客基地专用破解版NBSI网站漏洞检测工具明小子旁注工具3.5端口过滤扫描器mysql_pwd_crackAdvanced IP Scanner v1.5IPScanner扫描软件THC-Amap v5.0php注入辅助工具:phpsendPackInter,sniffer工具含源代码X-Scan-v3.2-cnX-Scan-v3.2-beta版超级扫描工具:nmap-3.81-win32流光5.0 时间限制破解Domain3.2正式版(5.2修正)sql扫描加自动攻击工具:SqlpokeTHC-Amap v4.8mysql字段扫描:numscan第一款php漏洞扫描器:rpvsOscanner端口扫描器红魂专用版atk-3.1金山毒霸可疑文件扫描工具v2.01GUI界面的WED和WIS综合工具超强adsl破解器俄罗斯专业扫描工具SSS6.67.58破解版Attack Toolkit 3.0Roman ADSL帐号扫描工具升级版针对广东电信漏洞的扫描工具IPv4和IPv6通用扫描工具:scan6adsl帐号扫描工具+动画MS Webserver 漏洞扫描器网络主机扫描(HostScan)T-PsKitRetina Network Security Scanner WildPackets ProCovertAngry IP Scannerwlan无线网络诊断/WildPackets AiroPe APort铁血扫描器无处藏身(Seekyou)nScanSQL Injection测试工具FloodScanrpcscan信息扫描工具优秀的ShadowScan经典扫描程序AmapSuperscan漏洞扫描Nessusipc批处理扫描工具Angry IP Scanner 汉化版强大的漏洞扫描NessusWX WindowsNT/2000自动攻击探测机网络黑客控制中心使用教程+工具扫描工具SuperScan4NMap最新版本:nmap-3.70-win32 Retina DCOM ScannerSQLScan很好的扫描工具NetScanToolsipc扫描工具scanipc非常有名的扫描工具X-way流光for win98/ME最好的ipc$扫描essential nettools不错的扫描工具easyscan鼎鼎大名的扫描工具流光大范围网段快速ipc$猜解机ipscanN.E.W.T.网络扫描器端口扫描A Complete Subnet Scanner 自动攻击探测机扫描工具:VsanIIS漏洞扫描Easyscan高速端口扫描Bluesportscanner扫描工具X-port最好的扫描器:X-SAN 3.0 beta扫描工具:STAT Scanner Pro阿拉丁扫描器小巧的黑客工具:NBTScan非常优秀的扫描工具X-scan 2.3扫描工具IPScanner扫描工具Dsns著名的且功能强大的WEB扫描工具Wnikto32 小巧的端口扫描NetBurn扫描工具GFI LANguard Scanner不错的扫描工具:Scan中华经典网络军刀优秀的扫描工具Nmap命令行版本多线程扫描XPortScan专业的扫描工具Shadow Security Scanner ASP漏洞集扫描工具Retina Network Security Scann快速端口扫描Shadowscan优秀的WEB扫描工具Nikto扫描Shadow Security Scanner v6.6.41 SuperScan V4.0汉化版极为优秀的Shadow Security Scanner基于命令行下的RPC扫描器多线程扫描SinScan局域网扫描大师V1.0推荐:免费短信发送工具IP端口扫描软件最新漏洞扫描器MS05051Scan推荐:图形界面的NMAP扫描器dcomrpc漏洞X-Scan23插件啊D网络工具包2.专用免杀版极速漏洞扫描攻击器[升级版]猎手-旁注工具黑客基地专用极速漏洞扫描器X-Scan v3.3超强扫描器:NMAP 3.90IP地址扫描器地址分类搜索机多线程后台扫描器超强扫描器superscan4.0nmap-3.81源代码(Linux平台)nmap-3.81源代码(FreeBSD平台)X-Scan-v3.3mysql弱口令扫描工具:mysqlweak DFind_v0.83扫描工具MySql Weak Pass ScannerCain & Abel v2.68 for Win阿D工具包2.01HScan v1.20动网大扫描多线程网站后台扫描工具MS06040漏洞扫描器挖掘鸡v3.5BluesPortScan超快的端口扫描工具动网大扫描1.0测试版啊D网络工具包2.1免杀版sql注入中文转换器明小子Domain3.6guastbook漏洞利用德国的SQL注射工具流光FluXay 5 闪亮发布!注入攻击综合软件包BBSXP论坛漏洞完全注射工具MS06007漏洞扫描器高速扫描:风雪端口扫描器动易2005 sp2漏洞利用工具webhacking-WEB渗透超级助手简洁高速的扫描器:HScanBBS论坛群发机破解版mssql注射辅助工具-getwebsehll软件名称超级扫描器nmap-4.00挖掘鸡V2.2啊D注入工具V2.32 免杀版SQL注射综合程序扫描器IPtools2.5破解版SSPort高速端口扫描器V1.0局域网查看工具V1.60NCPH影子扫描器目前最完美的注入工具IP物理地址探测器网站猎手网络端口扫描工具震荡波扫描工具:Sasser Scanner MS04-011漏洞扫描器RetinaSasserSQL跨库查询动画教程命令行下NohackerScanner扫描器IP扫描IPScanner 1.79中文破解版嗅探监听:局域网密码查看工具1.46经典工具:X-Scan-v3.1监听工具:PromiScan v3.0扫描工具:FtpList 1.13经典漏洞扫描:X-Scan v3.0扫描工具:Remoxec数据扫描工具:Oracle Auditing ToolsWeb漏洞扫描工具Trapserver著名的漏洞扫描:SSS扫描工具:RpcScan v1.1.1经典的扫描工具:nmap 3.50漏洞扫描:GFI LANguard Scanner小巧的IPC扫描工具CC6.0扫描程序nmap 3.75 for winrootkit扫描工具:Rkdscan动画教程:JOEKOE留言本漏洞NBWS网站后台路径猜测工具web路径猜解工具:ScanWebPath未公布的动力系统漏洞演示SQL扫描工具:SQL pingIIS权限探测:IIS Write Scanner V1.0扫描软件SImpsons'CGI Scanner及使用教程LANguard Network Security Scanner 5.0 加密工具:Morphine v1.3+GUIDFind v0.8L-ScanPort2.0扫描工具:ScannerX-Scan-v3.1-cnAdvanced IP Scanner V1.4 汉化版飞狐-网络扫描工具试用版Linux/UNIX扫描软件:XTHC-Amap v4.6 动画教程:动力破解任何收费漏洞动画教程:'or''='漏洞最新演示天意阿里巴巴企业商务网V3.7上传漏洞代理猎手获取ADSL帐号冲Q币扫描器:nessuswx-1.4.4-installIP扫描软件:Angry IP Scanner端口/漏洞/组件扫描工具:DFind v0.6可获取Web Server类型的端口扫描器135端口扫描器RpcScan v1.2.14899空口令探测器经典工具:namp v3.50 命令行版猜解后台路径工具流光5.0黑客基地专用破解版免验证版NBSI(附加扫描器)U-scan(UNICODE漏洞扫描器)自定义多线程后台扫描程序:ScanLogin75款全球强劲工具大集合之一Nessus75款全球强劲工具大集合之二NessusWX Accessdiver 汉化版+使用教程优秀的X-way75款全球强劲工具大集合之十八SuperScan 75款全球强劲工具大集合之十六Nikto75款全球强劲工具大集合之十一Libwhisker 75款全球强劲工具大集合之十二JOHN16 75款全球强劲工具大集合之十二John75款全球强劲工具大集合之十三SSH75款全球强劲工具大集合之十五Tripwire最快的端口扫描工具高速端口扫描PortScanner源代码ScanMs ToolPHP扫描器。

端口扫描原理及工具

端口扫描原理及工具

端口扫描原理及工具端口扫描是指通过发送指定的网络数据包,来识别目标主机上开放的网络端口的过程。

每个网络服务都通过一个唯一的端口号来进行通信,端口扫描可以帮助网络管理员或黑客确定目标主机上运行的服务和应用程序,并对其进行评估和攻击。

1.TCP连接扫描:这是最常用的端口扫描方法。

它通过建立一个完整的TCP连接来确定端口是否开放。

扫描程序向目标主机的每个端口发送一个TCPSYN包,如果收到目标主机返回的TCPACK包,说明端口开放;如果收到目标主机返回的TCPRST包,说明端口关闭。

2.UDP扫描:与TCP连接扫描不同,UDP扫描发送的是UDP数据包。

目标主机根据传入的UDP数据包决定是否响应,如果有响应,表示端口开放;如果没有响应,表示端口关闭。

由于UDP是面向无连接的协议,所以UDP扫描相对于TCP连接扫描来说更加复杂和耗时,而且结果也不太可靠。

3.SYN扫描:与TCP连接扫描类似,SYN扫描也是通过发送TCPSYN包来判断端口是否开放。

不同之处在于,SYN扫描不与目标主机建立完成的TCP连接,而是在发送完TCPSYN包之后立即发送一个TCPRST包,以提高扫描速度。

目标主机收到TCPSYN包后,如果端口开放,会返回一个TCPSYN/ACK或者一个RST包;如果端口关闭,会返回一个TCPRST包。

常用的端口扫描工具:1. Nmap:Nmap是一款功能强大的网络扫描工具,支持多种扫描技术和扫描方法。

它可以通过TCP连接扫描、UDP扫描、SYN扫描等方法,快速和准确地扫描目标主机的开放端口和运行的服务。

2. Nessus:Nessus是一款网络漏洞扫描工具,可以帮助管理员发现目标主机上的安全漏洞和弱点。

除了端口扫描功能外,Nessus还可以对目标主机进行漏洞验证和安全评估。

3. Zenmap:Zenmap是Nmap的图形界面版本,提供了更直观和友好的用户界面。

它可以通过点击按钮和选项来进行端口扫描,并以图形化的方式展示扫描结果。

网络主机端口扫描系统设计与实现

网络主机端口扫描系统设计与实现

网络主机端口扫描系统设计与实现一、引言网络主机端口扫描是指通过发送一系列网络数据包来检测目标主机上哪些端口是开放的。

端口扫描在网络安全领域中起着重要的作用,它可以帮助安全人员识别网络中存在的漏洞和弱点。

本文将介绍一个网络主机端口扫描系统的设计和实现。

二、系统设计1.功能需求(1)根据用户输入的目标主机IP地址和端口范围,对目标主机上的端口进行扫描;(2)支持常见的扫描方法,如TCP SYN扫描、TCP connect扫描和UDP扫描;(3)显示扫描结果,包括开放端口和关闭端口;(4)支持多线程的扫描,提高扫描速度;(5)支持用户自定义的扫描策略,如扫描超时时间、扫描线程数量等;(6)提供图形化界面,方便用户操作和查看结果。

2.系统架构本系统的架构主要包括用户界面模块、扫描模块和结果显示模块。

用户界面模块:用于接收用户输入的目标主机IP地址和端口范围,以及自定义的扫描策略。

用户界面可以采用图形化界面或命令行界面。

扫描模块:根据用户输入的目标主机信息和扫描策略,使用相应的扫描方法对目标主机进行端口扫描。

如果用户选择了多线程扫描,该模块需要进行线程管理和任务分配。

结果显示模块:将扫描结果展示给用户,包括开放端口和关闭端口。

可以采用图形化界面或命令行界面来展示结果。

3.系统流程(1)用户通过用户界面模块输入目标主机IP地址和端口范围。

(2)用户选择扫描方法和自定义的扫描策略。

(3)用户点击开始扫描按钮。

(4)扫描模块接收用户的输入,并根据扫描策略选择相应的扫描方法。

(5)扫描模块根据扫描方法对目标主机进行端口扫描,如果是多线程扫描,则进行线程管理和任务分配。

(6)扫描模块将扫描结果返回给结果显示模块。

(7)结果显示模块将扫描结果展示给用户。

四、系统实现本节将介绍如何实现一个基于Python语言的网络主机端口扫描系统。

1.实现框架可以使用Python的标准库socket来实现端口扫描。

(1)创建一个socket对象;(2)设置socket的超时时间;(3)使用socket的connect函数连接目标主机的指定端口;(4)根据连接的结果判断端口是否开放;(5)根据用户输入的端口范围,循环执行上述步骤,对目标主机的多个端口进行扫描。

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

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

中南大学之五兆芳芳创作《计较机网络》课程设计陈述题目多线程端口扫描程序设计与实现学生姓名孙毅指导教师刘嫔学院信息科学与工程学院专业班级信息平安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();}}}}。

superscan扫描方法

superscan扫描方法

superscan扫描方法Superscan扫描方法概述Superscan是一种常用的网络扫描工具,可以用于快速扫描目标网络上的开放端口、操作系统类型以及其他相关信息。

它具有快速、准确、简单易用等特点,被广泛应用于渗透测试、网络安全评估等领域。

本文将介绍Superscan的基本原理、使用方法以及一些注意事项,帮助读者更好地了解和使用这一工具。

一、原理Superscan基于TCP/IP协议,通过发送特定的网络数据包与目标主机进行通信,并根据目标主机的响应来判断其开放的端口以及操作系统类型。

它采用了多线程扫描技术,可以同时扫描多个目标主机,大大提高了扫描效率。

二、使用方法1. 下载和安装:Superscan可以从官方网站上免费下载。

下载完成后,按照安装向导进行安装操作,选择合适的安装路径即可完成安装。

2. 启动程序:双击Superscan的图标,启动程序。

在程序界面的左侧可以看到扫描目标设置选项,包括目标IP地址、扫描端口范围等。

3. 设置扫描选项:在扫描目标设置选项中,输入目标的IP地址。

如果需要扫描特定的端口范围,可以在“扫描范围”中指定起始端口和结束端口。

此外,还可以设置扫描的超时时间、线程数等参数。

4. 开始扫描:点击“开始扫描”按钮,Superscan将开始对目标主机进行扫描。

扫描过程中,程序会显示扫描进度、已发现的开放端口以及操作系统类型等信息。

5. 分析扫描结果:扫描完成后,可以通过查看扫描结果来获取目标主机的详细信息。

可以根据端口状态来判断目标主机的安全性,进一步采取相应的安全措施。

三、注意事项1. 合法使用:在使用Superscan进行扫描时,务必遵守法律法规和道德规范,确保自己的行为合法合规。

2. 充分授权:如果需要扫描他人的网络或主机,必须事先取得合法的授权,否则将可能触犯法律。

3. 谨慎扫描:在进行扫描时,应该谨慎选择扫描范围和扫描频率,避免对目标主机造成不必要的影响。

4. 防火墙设置:目标主机可能会启用防火墙,限制对其的扫描。

计算机网络课程设计题目和要求 (1)

计算机网络课程设计题目和要求 (1)

计算机网络课程设计通过课程设计,使学生在对计算机网络技术与发展整体了解的基础上,掌握网络的主要种类和常用协议的概念及原理,初步掌握以TCP/IP协议族为主的网络协议结构,培养学生在TCP/IP协议和LAN、WAN上的实际工作能力;学会网络构建、网络日常维护以及网络管理的方法,使学生掌握在信息化社会建设过程中所必须具备的计算机网络组网和建设所需的基本知识与操作技能。

运用网络工程和软件工程思想,按照需求分析、规划、设计、配置的基本流程,经历一个完整的网络工程过程,培养学生调查研究、查阅技术文献、资料、手册以及编写技术文档的能力,培养学生将理论知识应用于实践的能力。

格式要求及须知:(1)使用信息学院网站()的课程设计模版,要求格式美观,字体及编号要求见表1。

(2)(3)附录:课程设计中的代码或得到的数据包等数据将作为该设计附件或附录,题目需要但没有的相应代码及数据包文件的将记整组不及格,需要重做。

(4)成绩记录:该设计成绩将记录到教务处成绩管理系统中。

(5)打印:经审查(发邮件到指导老师处或当面交流修改)后,方可打印、存档。

打印后递送到信息楼各指导老师的信箱中或办公室中。

(6)如发现两组设计雷同或来自互联网,该组重做。

题目:题目1 应用服务器配置与管理1、设计要求为校园网络中心设计和建立服务器群,能够提供:DNS,DHCP,WEB,FTP服务器。

要求网络中的普通用户使用动态IP地址,在WEB服务器上设置两个不同的站点,使用户可用不同的名字访问不同的站点,而且用户可以使用网内的FTP服务器进行内部网络的文件上传、下载。

FTP、Web服务器能够通过域名访问。

2、课程设计报告内容(1) 解释每个服务器的相关工作原理;(2) 给出各个服务器的功能说明;(3) 列出每个服务器的IP地址及域名规划;(4) 每个服务器给出配置的结果测试;(5) 给出每个服务器的综合验证结果。

题目2 一个简单企业网的设计与实现1、设计要求某企业有办公室、财务部、销售部、设计部、生产部5个部门,每个部门配置8台计算机。

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

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

基于多线程的端口扫描工具设计作者:程承来源:《科学与财富》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 引言网络扫描,是基于Internet的、探测远端网络或主机信息的一种技术,也是保证系统和网络安全必不可少的一种手段。

主机扫描,是指对计算机主机或者其它网络设备进行安全性检测,以找出安全隐患和系统漏洞。

总体而言,网络扫描和主机扫描都可归入漏洞扫描一类。

漏洞扫描本质上是一把双刃剑:黑客利用它来寻找对网络或系统发起攻击的途径,而系统管理员则利用它来有效防范黑客入侵。

通过漏洞扫描,扫描者能够发现远端网络或主机的配置信息、 TCP/UDP端口的分配、提供的网络服务、服务器的具体信息等。

2 漏洞扫描原理漏洞扫描可以划分为ping扫描、端口扫描、OS探测、脆弱点探测、防火墙扫描五种主要技术,每种技术实现的目标和运用的原理各不相同。

按照TCP/IP协议簇的结构,ping扫描工作在互联网络层:端口扫描、防火墙探测工作在传输层;0S探测、脆弱点探测工作在互联网络层、传输层、应用层。

ping扫描确定目标主机的IP地址,端口扫描探测目标主机所开放的端口,然后基于端口扫描的结果,进行OS 探测和脆弱点扫描。

2.1 Ping扫描ping扫描是指侦测主机IP地址的扫描。

ping扫描的目的,就是确认目标主机的TCP/IP网络是否联通,即扫描的IP地址是否分配了主机。

对没有任何预知信息的黑客而言,ping扫描是进行漏洞扫描及入侵的第一步;对已经了解网络整体IP划分的网络安全人员来讲,也可以借助ping扫描,对主机的IP分配有一个精确的定位。

大体上,ping 扫描是基于ICMP协议的。

其主要思想,就是构造一个ICMP包,发送给目标主机,从得到的响应来进行判断。

根据构造ICMP包的不同,分为ECH0扫描和non—ECHO扫描两种。

2.1.1 ECH0扫描向目标IP地址发送一个ICMP ECHOREQUEST(ICMP type 8)的包,等待是否收至UICMP ECHO REPLY(ICMP type 0)。

X-Scan扫描实验

X-Scan扫描实验
4.对漏洞扫描结果提供了相应的描述及解决方案
二、实验内容
使用X-Scan扫描器对实验网段进行扫描,熟练使用x-scan扫描器,了解和掌握采用多线程方式对指定IP地址段(或单机)进行的安全漏洞检测。了解操作系统的各种漏洞,提高计算机安全隐患方面的意识。知道x-scan扫描器扫猫的内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞、拒绝服务漏洞等等。
3.设置“全局设置”模块
(1)“扫描模块”项:选择本次扫描要加载的插件,如图:
(2)“并发扫描”项:设置并发扫描的主机和并发线程数,也可以单独为每个主机的各个插件设置最大线程数。如图:
(3)“扫描报告”项:在此模块下可设置扫描后生成的报告名和格式,扫描报告格式有txt、html、xml三种格式。
(4)“其他设置”项:使用默认选项,选择“无条件扫描”
6.查看扫描报告:选择 “检测报告”。
从扫描结果可以看出,扫描未找到漏洞。
六、实验心得
通过这次的实验,使我基本上了解了x-scan扫描器的使用方法,对计算机的潜在的安全问题有了进一步的理解,提高了我对计算机安全的意识,还有对扫描器扫描原理的理解和掌握。通过实践,有效地巩固和扩展了课堂上所学的知识,虽然实验过程中也出现了一些问题,不过经过一番努力之后成功将其克服,使自己所学知识得到很好的巩固和发挥。
4.设置“插件设置”模块
在“插件设置”模块中使用默认设置。在“SNMP相关设置”中,全部勾选
在“NETBIOS相关设置”中,勾选“注册表敏感键值、服务器时间、共享资源列表、用户列表、本地组列表”几项,如图:
其他的基本默认。最后点击“确定”。
5.开始扫描。
单击“开始扫描”。当扫描完成,相关的信息会显示在界面上,而且软件会自动生成HTML文件的报告。

网络端口扫描技术原理论文

网络端口扫描技术原理论文

网络端口扫描技术原理分析与实现******摘要随着计算机在现代社会的广泛应用,计算机网络在人们工作和生活的各个领域占有越来越重要的地位。

由于网络规模的迅速扩张和计算机系统的日益复杂,新的系统漏洞层出不穷。

如何保证网络的安全运行已经成为一个亟待解决的问题。

网络扫描技术是当前网络安全评估的重要组成部分,通过对网络的扫描,能够及时了解网络的运行状况及其存在的弱点,从而帮助网络管理员充分的了解网络的实际情况,并制定合适的安全策略,最终达到改善网络状况,增强网络安全系数的目的。

同时,网络扫描技术也常为入侵者所利用,通过扫描远程主机或网络,能够探测攻击目标的软硬件配置信息,为制订攻击策略做准备。

本文详细研究了计算机端口扫描技术的优缺点,并采用多线程技术结合TCP全连接扫描实现了基于C语言和Windows Socket编程的网络端口扫描程序。

程序模拟入侵者对目标主机的多线程入侵扫描,快速、及时、准确地检测出目标主机的端口状态,为网络系统管理员评测系统安全性提供数据支持。

关键词:多线程;TCP全连接;同步;Winsock;TCP/IPAbstractWith the wide range of applications of the computer in modern society, the computer network plays a more and more important role in people’s working and living. Due to the rapid expansion of the network size and the increasing complexity of the computer systems, an endless stream of new vulnerabilities will be found. How to ensure the safe operation of the network has become an issue. Network scanning technology is an important component of the current network security assessment. By scanning the network to keep abreast of the operation of the network and its weaknesses, thereby helping network administrators to fully understand the actual situation of the network and to develop appropriate security policy, and ultimately achieve the purpose of improving the network conditions, and enhancing the network security coefficient. At the same time, network scanning technology is also often used by intruders. By scanning the remote host or network, intruders can detect the hardware and software configuration information of the target. Thereby formulate the strategies to prepare attack.In this paper, I give a detailed study of the advantages and disadvantages of computer port scanning technology, and use the multi-threading technology and TCP connect scanning technology to achieve a network port scanner which is based on the C programming language and Windows Socket. The procedure simulate the invaders on the target host's invasion of multi-threaded scanning, rapidly, timely and accurately detect the computer port status of the target host in order to provide data to the network system administrator to evaluate the security coefficient of system.Key words: multi-threaded; TCP connect; synchronization; Winsock; TCP / IP第1章绪论 (1)1.1网络安全背景 (1)1.1.1网络安全问题来源 (1)1.1.2端口扫描技术对于网络攻击的作用 (2)1.1.3网络端口扫描对策 (3)1.2国内外相关领域的发展动态 (3)1.3论文的主要工作以及组织安排 (5)1.3.1论文的主要工作 (5)1.3.2论文的结构安排 (5)第2章论文涉及的相关技术的分析 (6)2.1TCP/IP协议 (6)2.1.1 TCP/IP协议分层 (6)2.1.2 TCP协议与TCP连接的建立 (8)2.2 WINDOWS SOCKET简介 (10)2.2.1 基本概念 (10)2.2.2 Winsock的编程特点 (11)2.2.3 Winsock 2.0常用的函数 (12)第3章当前端口扫描技术分析 (13)3.1端口扫描原理 (13)3.1.1端口简介 (13)3.1.2端口扫描原理 (14)3.2常见端口扫描技术 (15)3.2.1 TCP connect 扫描 (15)3.2.2 TCP SYN 扫描 (15)3.2.3 秘密扫描 (15)3.2.4其它扫描技术 (17)3.3端口扫描技术小结与多线程技术的引入 (18)3.3.1常用端口扫描技术优缺点的比较 (18)3.3.2多线程技术简介 (19)3.2.3 线程的同步 (19)第4章多线程TCP全连接扫描的实现 (22)4.1程序功能简介 (22)4.2端口扫描线程的同步 (24)4.3程序设计流程分析 (25)第5章设计总结 (28)参考文献 (29)翻译原文资料 (30)译文 (37)致谢 (43)第1章绪论1.1网络安全背景随着信息化进程的深入和网络的迅速发展,个人乃至社会对计算机网络的依赖达到了空前的程度。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IP设置应为所在主机的IP地址,起始端口和结束端口应为0~65535之间的一个数,且起始端口应小于结束端口的大小。

线程数为0~200之间的一个数。

点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕。

本系统要实现的功能:①端口扫描功能:扫描开放的端口,并将扫描到的开放端口号送到前台。

②图像显示功能:显示图形界面,以及显示扫描结果。

③多线程功能:当客户端要求与服务器端建立连接时,服务器端就将用到多线程功能,为每一个建立起来的连接创建一个线程。

④异常抛出功能:对于明显的数据错误,能提示出错误的类型并阻止程序的运行。

流程图:三、详细设计本程序是由3 模块组成的:图形界面,按钮的监听及数据检验,端口扫描(1)图形用户界面是软件产品和用户交互的接口,是软件产品中用户直接可以看到并直接操作的部分。

public static JFrame main=new JFrame("基于JAVA的多线程TCP端口扫描程序\\李梦然");public static JTextArea Result=new JTextArea("",4,44);public static JTextField hostname=new JTextField("localhost",8);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 Label DLGINFO=new Label("");public static Label status=new Label("扫描状态:未开始");public Scanner(){main.setSize(500,220);main.setLocation(350,300);main.setResizable(false);DLGError.setSize(300,100);DLGError.setLocation(450,400);Result.setBackground(Color.pink);JPanel mainPanel = new JPanel();Label H=new Label("ip:");Label P1=new Label("端口范围:");Label P2=new Label("—");Label TNUM=new Label("线程数:");Label RST=new Label("扫描结果: ");Result.setLineWrap(true);Result.setEditable(false);JButton OK = new JButton("确定");JButton Submit = new JButton("确定");JButton Cancel = new JButton("取消");Container mPanel = main.getContentPane();Container dPanel = DLGError.getContentPane();mPanel.setLayout(new FlowLayout(FlowLayout.LEFT));dPanel.setLayout(new FlowLayout(FlowLayout.CENTER));mPanel.add(H);mPanel.add(hostname);mPanel.add(P1);mPanel.add(minPort);mPanel.add(P2);mPanel.add(maxPort);mPanel.add(TNUM);mPanel.add(maxThread);mPanel.add(RST);mPanel.add(Result);mPanel.add(status);mPanel.add(Submit);mPanel.add(Cancel);dPanel.add(DLGINFO);dPanel.add(OK);main.setVisible(true);Submit.addActionListener(new SubmitAction());Cancel.addActionListener(new CancleAction());OK.addActionListener(new OKAction());(2)按钮监听是整个程序的时间驱动设计部分。

并且显示运行结果。

数据处理是对用户输入的数据进行检验是否错误,来进行报错处理。

class CancleAction implements ActionListener{public void actionPerformed (ActionEvent e){System.exit(1);}}class SubmitAction implements ActionListener{public void actionPerformed (ActionEvent a){int min;int max;int num;try{min=Integer.parseInt(Scanner.minPort.getText());max=Integer.parseInt(Scanner.maxPort.getText());num=Integer.parseInt(Scanner.maxThread.getText());}catch(NumberFormatException e){Scanner.DLGINFO.setText("错误的端口号或线程数!端口号和线程数必须为整数!");Scanner.DLGError.setVisible(true);Scanner.status.setText("扫描状态:未开始");return;}try{Saomiao.hostAddress=InetAddress.getByName(Scanner.hostname.getText());}catch(UnknownHostException e){Scanner.DLGINFO.setText(" 错误的IP地址/域名或地址不可达! ");Scanner.DLGError.setVisible(true);Scanner.status.setText("扫描状态:未开始");return;}if(min<0 || min>65535 || min>max){Scanner.DLGINFO.setText("最小端口必须是0-65535并且小于最大端口的整数!");Scanner.DLGError.setVisible(true);return;}elseSaomiao.minport=min;if(max<0 || max>65535 || max<min){Scanner.DLGINFO.setText("最大端口必须是0-65535并且大于最小端口的整数!");Scanner.DLGError.setVisible(true);Scanner.status.setText("扫描状态:未开始");return;}elseSaomiao.maxport=max;if(num<1 || num>200){Scanner.DLGINFO.setText(" 线程数为1-200的整数! ");Scanner.DLGError.setVisible(true);Scanner.status.setText("扫描状态:未开始");return;}Scanner.Result.setText("");Scanner.Result.append("正在扫描"+Scanner.hostname.getText()+" 线程数"+Scanner.maxThread.getText()+"\n");Scanner.Result.append("开放端口: ");for(int i=0;i<num;i++){new Saomiao(i).start();}}}class OKAction implements ActionListener{public void actionPerformed (ActionEvent e){Scanner.DLGError.dispose();}}(3)端口扫描程序主要运用Socket编程。

相关文档
最新文档