udp端口扫描 报告
端口扫描实验实验报告

网络攻防对抗实验报告实验名称:端口扫描实验(实验三)指导教师:专业班级:姓名:学号:_____电子邮件: ___ 实验地点:实验日期:实验成绩:____________________一、实验目的通过练习使用网络端口扫描器,了解目标主机开放的端口和服务程序,从而获得系统的有用信息,发现网络系统的安全漏洞。
在实验中,我们将在Windows操作系统下使用端口扫描工具Xscan,Nmap和流光Fluxay5.0进行网络端口综合扫描实验,并给出安全性评估报告,加深对各种网络和系统漏洞的理解。
同时,通过系统漏洞的入侵练习增强网络安全防护意识。
二、实验原理TCP/IP协议在网络层是无连接的,而“端口”,就已经到了传输层。
端口便是计算机与外部通信的途径。
一个端口就是一个潜在的通信通道,也就是一个入侵通道。
对目标计算机进行端口扫描,能得到许多有用的信息。
进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。
在手工进行扫描时,需要熟悉各种命令,对命令执行后的输析出进行分,效率较低。
用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。
通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。
扫描工具根据作用的环境不同可分为:网络漏洞扫描工具和主机漏洞扫描工具。
前者指通过网络检测远程目标网络和主机系统所存在漏洞的扫描工具。
后者指在本机运行的检测本地系统安全漏洞的扫描工具。
三、实验内容和步骤Xscan的应用1.Xscan的使用X-scan v3.3 采用多线程方式对指定IP 地址段进行扫描,扫描内容包括:SNMP 信息,CGI 漏洞,IIS 漏洞,RPC 漏洞,SSL 漏洞,SQL-SERVER、SMTP-SERVER、弱口令用户等。
扫描结果保存在/log/目录中。
其主界面为下图所示。
2.开始扫描(1)配置扫描参数,先点击扫描参数,在下面红框内输入你要扫描主机的ip 地址(或是一个范围),本说明中我们设置为靶机服务器的IP 地址, 192.168.20.245(2)选择需要扫描的项目,点击扫描模块可以选择扫描的项目(3)开始扫描,该扫描过程会比较长,请大家耐心等待,并思考各种漏洞的含义。
实验五 端口扫描器实验报告(付代码)

实验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协议封装数据包进行通信。
UDP端口扫描

UDP端口扫描
由于UDP协议是非面向连接的,对UDP端口的探测也就不可能像TCP端口的探测那样依赖于连接建立过程(不能使用telnet这种tcp协议类型命令),这也使得UDP端口扫描的可靠性不高。
所以虽然UDP协议较之TCP协议显得简单,但是对UDP端口的扫描却是相当困难的。
下面具体介绍一下UDP扫描方案:
原理是当一个UDP端口接收到一个UDP数据报时,如果它是关闭的,就会给源端发回一个ICMP端口不可达数据报;如果它是开放的,那么就会忽略这个数据报,也就是将它丢弃而不返回任何的信息。
优点:可以完成对UDP端口的探测。
缺点:需要系统管理员的权限。
扫描结果的可靠性不高。
因为当发出一个UDP数据报而没有收到任何的应答时,有可能因为这个UDP端口是开放的,也有可能是因为这个数据报在传输过程中丢失了。
另外,扫描的速度很慢。
原因是在RFC1812的中对ICMP错误报文的生成速度做出了限制。
例如Linux就将ICMP报文的生成速度限制为每4秒钟80个,当超出这个限制的时候,还要暂停1/4秒。
网络安全实验报告[共五篇]
![网络安全实验报告[共五篇]](https://img.taocdn.com/s3/m/1aa839ecd05abe23482fb4daa58da0116c171f0c.png)
网络安全实验报告[共五篇]第一篇:网络安全实验报告实验一:网络扫描实验【实验目的】了解扫描的基本原理,掌握基本方法,最终巩固主机安全【实验内容】1、学习使用Nmap的使用方法2、学习使用漏洞扫描工具【实验环境】1、硬件 PC机一台。
2、系统配置:操作系统windows XP以上。
【实验步骤】1、端口扫描1)解压并安装ipscan15.zip,扫描本局域网内的主机2)解压nmap-4.00-win32.zip,安装WinPcap运行cmd.exe,熟悉nmap命令(详见“Nmap详解.mht”)。
3)试图做以下扫描:扫描局域网内存活主机,扫描某一台主机或某一个网段的开放端口扫描目标主机的操作系统试图使用Nmap的其他扫描方式,伪源地址、隐蔽扫描等2、漏洞扫描解压X-Scan-v3.3-cn.rar,运行程序xscan_gui.exe,将所有模块选择扫描,扫描本机,或局域网内某一台主机的漏洞【实验背景知识】1、扫描及漏洞扫描原理见第四章黑客攻击技术.ppt2、NMAP使用方法扫描器是帮助你了解自己系统的绝佳助手。
象Windows 2K/XP 这样复杂的操作系统支持应用软件打开数百个端口与其他客户程序或服务器通信,端口扫描是检测服务器上运行了哪些服务和应用、向Internet或其他网络开放了哪些联系通道的一种办法,不仅速度快,而且效果也很不错。
Nmap被开发用于允许系统管理员察看一个大的网络系统有哪些主机以及其上运行何种服务。
它支持多种协议的扫描如UDP,TCP connect(),TCP SYN(half open), ftp proxy(bounce attack),Reverse-ident, ICMP(ping sweep), FIN, ACK sweep,Xmas Tree, SYN sweep,1 和Null扫描。
可以从SCAN TYPES一节中察看相关细节。
Nmap还提供一些实用功能如通过tcp/ip来甄别操作系统类型、秘密扫描、动态延迟和重发、平行扫描、通过并行的PING侦测下属的主机、欺骗扫描、端口过滤探测、直接的RPC扫描、分布扫描、灵活的目标选择以及端口的描述。
端口扫描与安全审计实验报告参考模板

端口扫描与安全审计实验报告1. 局域网主机发现列表扫描:nmap -sL 192.168.19.12. 扫描目标主机端口连续扫描目标主机端口:nmap –r 101.7.130.1853. 服务和版本检测目标主机服务和版本检测:nmap –sV 101.7.130.1314. 操作系统检测目标主机操作系统检测:nmap -O 101.7.130.1315. 端口扫描组合应用A,nmap -v -A B,nmap -v -sP 192.168.0.0/16 10.0.0.0/8实验地点指导教师网络入侵跟踪与分析实验报告根据实验结果的小组分类发现:一共生成20个目标IP地址2)扫描多个端口还是一个端口?如果扫描一个端口,是那一个RPC调用端口?Filter: ip.src == 128.153.22.191 and tcp.dstport == 135因此扫描一个端口。
3)分别计算第二组与第一组扫描、第三组与第二组扫描之间的间隔时间,扫描间隔时间有规律吗?第二组与第一组扫描间隔时间:678.770ms第三组与第二组扫描间隔时间:528.105ms即:扫描间隔时间有规律。
4)共发送了多少个试探攻击分组?Filter: ip.src == 128.153.22.191 有2006个Filter: ip.src == 128.153.22.191 and tcp.dstport == 135或tcp.flags.syn==1有2002个Filter: ip.src == 128.153.22.191 and tcp.dstport != 135有4个不是攻击分组即:共发送了2006个试探攻击分组;其中有2002个135端口,有4个不是135端口。
5)有试探攻击分组攻击成功吗?如攻击成功,请给出感染主机的IP地址。
如没有攻击成功的实例,说明为什么没有攻击成功?答:无攻击成功。
因为:Filter:tcp.flags.syn==1&&tcp.flags.ack==1实验结果:,表示被攻击主机无正确响应。
网络端口扫描实验报告

一、实验目的1. 理解网络端口扫描的基本原理和作用。
2. 掌握常用的网络端口扫描工具,如Xscan、Nmap和流光等。
3. 学习如何进行网络端口扫描,并对扫描结果进行分析。
4. 了解网络端口扫描在网络安全中的应用。
二、实验环境1. 操作系统:Windows 102. 网络端口扫描工具:Xscan、Nmap、流光3. 实验网络:实验室内部局域网三、实验步骤1. 安装网络端口扫描工具(1)下载并安装Xscan、Nmap和流光等网络端口扫描工具。
(2)确保实验网络连接正常,打开扫描工具。
2. 使用Xscan进行端口扫描(1)在Xscan中输入目标IP地址或域名。
(2)选择扫描方式,如全端口扫描、快速扫描等。
(3)点击“开始扫描”按钮,等待扫描完成。
(4)查看扫描结果,了解目标主机开放的端口和服务。
3. 使用Nmap进行端口扫描(1)在Nmap中输入目标IP地址或域名。
(2)选择扫描选项,如-sT(全端口扫描)、-sS(半开放扫描)等。
(3)运行命令:nmap -sT 目标IP地址或域名。
(4)查看扫描结果,了解目标主机开放的端口和服务。
4. 使用流光进行端口扫描(1)在流光中输入目标IP地址或域名。
(2)选择扫描模式,如快速扫描、全端口扫描等。
(3)点击“开始扫描”按钮,等待扫描完成。
(4)查看扫描结果,了解目标主机开放的端口和服务。
5. 分析扫描结果(1)对比三种扫描工具的扫描结果,了解不同扫描工具的特点。
(2)分析目标主机开放的端口和服务,了解其可能存在的安全风险。
四、实验结果与分析1. Xscan扫描结果通过Xscan扫描,发现目标主机开放了80(HTTP)、21(FTP)、22(SSH)等端口。
2. Nmap扫描结果通过Nmap扫描,发现目标主机开放了80(HTTP)、21(FTP)、22(SSH)等端口,并获取了更详细的信息,如操作系统类型、服务版本等。
3. 流光扫描结果通过流光扫描,发现目标主机开放了80(HTTP)、21(FTP)、22(SSH)等端口,并提供了端口对应的程序信息。
实验2-网络端口的扫描
南昌航空大学实验报告二〇一三年十一月八日课程名称:信息安全实验名称:实验2网络端口扫描班级:xxx 姓名:xxx 同组人:指导教师评定:签名:一、实验目的通过练习使用网络端口扫描器,可以了解目标主机开放的端口和服务程序,从而获取系统的有用信息,发现网络系统的安全漏洞。
在实验中,我们将在Windows操作系统下使用Superscan进行网络端口扫描实验,通过端口扫描实验,可以增强学生在网络安全方面的防护意识。
利用综合扫描软件“流光”扫描系统的漏洞并给出安全性评估报告。
二、实验原理1.端口扫描的原理对网络端口的扫描可以得到目标计算机开放的服务程序、运行的系统版本信息,从而为下一步的入侵做好准备。
对网络端口的扫描可以通过执行手工命令实现,但效率较低;也可以通过扫描工具实现,效率较高。
扫描工具根据作用的环境不同,可分为两种类型:网络漏洞扫描工具和主机漏洞扫描工具。
2.端口的基础知识为了了解扫描工具的工作原理,首先简单介绍一下端口的基本知识。
端口是TCP协议中所定义的,TCP协议通过套接字(socket)建立起两台计算机之间的网络连接。
套接字采用[IP地址:端口号]的形式来定义,通过套接字中不同的端口号可以区别同一台计算机上开启的不同TCP和UDP连接进程。
对于两台计算机间的任意一个TCP连接,一台计算机的一个[IP地址:端口]套接字会和另一台计算机的一个[IP地址:端口]套接字相对应,彼此标识着源端、目的端上数据包传输的源进程和目标进程。
这样网络上传输的数据包就可以由套接字中的IP地址和端口号找到需要传输的主机和连接进程了。
由此可见,端口和服务进程一一对应,通过扫描开放的端口,就可以判断出计算机中正在运行的服务进程。
TCP/UDP的端口号在0~65535范围之内,其中1024以下的端口保留给常用的网络服务。
例如,21端口为FTP服务,23端口为TELNET服务,25端口为SMTP服务,80端口为HTTP服务,110端口为POP3服务等。
portscan实验报告
::WSACleanup(); return; } }
~CInitSock() {
::WSACleanup(); } };
实验环境:windows,C语言
实验内容:用C语言编写一个在linux下扫描局域网内主机的程序。要求可以显示局域
网内的主机名列表,IP地址列表,并可以显示哪些主机开放了哪些端口。
实验代码:
////////////////////////////////////////////////////////// //PortScan.cpp
//获得主机信息 void GetLocalDate( void );
//线程函数 DWORD WINAPI psProc(
LPVOID lpParameter );
// thread data
////////////////////////////////////////////////////////// //全局变量
};
//端口开放数量 int g_nOpenPorts;
////////////////////////////////////////////////////////// //类
//载入和释放Winsock2库的类 class CInitSock { public:
CInitSock( BYTE minorVer = 2, BYTE majorVer = 2) {
这种不能算是新方法,只是其它技术的变化。它并不是直接发送 TCP 探测数据包,是 将数据包分成两个较小的 IP 段。这样就将一个 TCP 头分成好几个数据包,从而过滤器就很 难探测到。但必须小心。一些程序在处理这些小数据包时会有些麻烦。
网络信息安全-实验三-主机信息搜集
计算机与信息工程学院实验报告课程:网络信息安全实验题目:主机信息搜集实验目的:了解信息搜集的一般步骤,学会熟练使用ping命令,学会利用Nmap等工具进行信息搜集实验环境(硬件和软件)实验内容:1.ping探测主机A开启命令行,对主机B进行ping探测,根据主机B的回复,可以确定主机A和主机B之间的连通情况,还可以根据回复数据包的TTL值对操作系统进行猜测。
2. Nmap扫描(1)对活动主机进行端口扫描(2)对活动主机操作系统进行探测(3)对活动主机运行服务进行探测(4)对活动主机IP协议进行探测3. 探测总结实验步骤:1.ping探测主机A开启命令行,对主机B进行ping探测,根据主机B的回复,可以确定主机A和主机B之间的连通情况,还可以根据回复数据包的TTL值对操作系统进行猜测。
我们先查看开启的另一台Linux虚拟机的IP地址,可以看见其IP地址为:172.16.0.192.我们使用WindowsXP系统虚拟机去ping Linux虚拟机可以看见,回复数据包的TTL 值: 64 ,主机B 操作系统可能为: Linux Kernel 2.6.x 。
2. Nmap 扫描(1)对活动主机进行端口扫描主机A 使用Nmap 工具对主机B 进行TCP 端口同步扫描(范围1-150):对主机B 进行UDP 端口扫描(范围是110-140):Nmap 命令 nmap –sU –p 110-140 172.16.0.192 ; 主机B 开放的UDP 端口 111,123,137,138 。
(2)对活动主机操作系统进行探测 主机A 对主机B 进行TCP/IP 指纹特征扫描:Nmap 命令 nmap –sT –O 172.16.0.192 ;查看扫描结果Linux 2.6.15-2.6.26 。
3)对活动主机运行服务进行探测单击平台工具栏“协议分析器”按钮,启动协议分析器进行数据包捕获。
打开IE在地址栏中输入http://主机B的IP,访问主机B的web服务,停止协议分析器,查看捕获结果。
端口扫描技术(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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《网络协议分析》利用UDP进行主机端口扫描专业:班级:姓名:学号:日期:目录1. 任务题目及要求 (1)1.1 任务简介 (1)1.2 任务要求 (1)2. 课题成员及分工 (1)3. 相关知识简介 (2)3.1 课题的背景及意义 (2)3.2 关键技术 (2)3.3 关键API函数 (3)3.3.1. WSAStarup函数 (3)3.3.2. WSACleanup函数 (3)3.3.3. socket函数 (3)3.3.4. closesocket函数 (4)3.3.5. sendto函数 (4)3.3.6. recvfrom函数 (4)3.3.7. bind函数 (4)4. 系统设计 (6)4.1 主要目标 (6)4.2 开发环境及工具 (6)4.3 功能模块与系统结构 (6)5. UDP扫描的实现 (8)5. 1 基本原理 (8)5.2 计算效验和 (9)5.3 发送UDP数据包 (9)5.4 接收ICMP数据包 (10)6. UDP扫描检测 (13)7. 心得体会 (14)参考文献 (15)1. 任务题目及要求1.1 任务简介UDP是TCP/IP协议族伟传输层设计的两个协议之一,它在进程与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的,不可靠的协议。
UDP 在一个较低的水平上完成进程之间的通信,在收到分组的时候没有流量控制机制也没有确认机制,适用于可靠性比较高的局域网。
由于UDP采用无连接的方式,因此协议简单,在一些特定的应用中协议运行效率高。
本次课程设计的目的主要是了解UDP协议的网络传输过程中的一些原理。
1.2 任务要求编写一个简单的主机端口扫描程序,要求能够探测目的主机的端口状态。
具体要求:(1)要求用户可以在参数中输入需要扫描的目的主机的IP地址与端口,输出端口的状态信息。
(2)要求使用UDP协议进行端口的扫描过程。
(3)有良好的编程规范与注释信息。
2. 课题成员及分工本课题组员:周均负责全部工作。
3. 相关知识简介3.1 课题的背景及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。
入侵者们是如何找到,并打开它们的城门呢?这些城门究竟通向何处?在网络中,把这些城堡的“城门”称之为计算机的“端口”。
端口扫描是入侵者搜索信息的几种常用方法之一,也正是这一种方法最容易暴露入侵者的身份和意图。
一般说来,扫描端口有以下目的:判断目标主机上开放了哪些服务判断目标主机的操作系统如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能使用相应的手段实现入侵。
而如果管理员先掌握了这些端口服务的安全漏洞,就能采取有效的安全措施,防范相应的入侵。
计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。
端口扫描技术是发现安全问题的重要手段之一。
一个端口就是一个潜在的通信通道,也就是一个入侵通道。
对目标计算机进行端口扫描,能得到许多有用的信息。
扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息,从而发现目标机的某些内在的弱点。
3.2 关键技术UDP 是User Datagram Protocol的简称,中文名是用户数据包协议,是OSI 参考模型中一种无连接的传输协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。
在大多数情况下,当向一个未开放的UDP 端口发送数据时,其主机就会返回一个ICMP不可到达(ICMP PORT UNREACHABLE)的错误,因此大多数UDP端口扫描的方法就是向各个被扫描的UDP 端口发送零字节的UDP 数据包,如果收到一个ICMP 不可到达的回应,那么则认为这个端口是关闭的,对于没有回应的端口则认为是开放的。
可是由于大部分系统都限制了ICMP 差错报文的产生速度,所以针对特定主机的UDP 大量端口扫描速度缓慢,此外由于UDP 协议和ICMP 协议都是不可靠协议,所以未收到回应可能由于数据包未送达造成,所以扫描程序需要针对同一端口多次尝试后才能确定其状态。
3.3 关键API函数3.3.1. WSAStarup函数WSAStarup函数的格式如下:int WSAStarup(WORD wVersionRequested, LPWSADATA lpWSAData );程序在使用Socket之前必须使用WSAStarup函数。
该函数的第一个参数wVersionRequested:一个WORD(双字节)型数值,指定了应用程序需要使用的Winsock规范的最高版本;第二个参数lpWSAData:指向WSADATA数据结构的指针,用来接收Windows Sockets实现的细节。
函数执行成功后返回0.3.3.2. WSACleanup函数WSACleanup函数的格式如下:int WSACleanup(void);程序在完成对请求的Socket库的使用后,要调用WSACleanup函树来解除与Socket库的绑定并且释放Socket库所占用的系统资源。
3.3.3. socket函数socket函数格式为:socket(int af,int type,int protocol)第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET; 第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM、原始套接字SOCK_RAW(WinSock接口并不适用某种特定的协议去封装它,而是由程序自行处理数据包以及协议首部);第三个参数指定应用程序所使用的通信协议,此参数可以指定单个协议系列中的不同传输协议,在Internet通讯域中,此参数一般取值为0,系统会根据套接字的类型决定应使用的传输层协议。
3.3.4. closesocket函数closesocket函数的格式为:closesocket( SOCKET s);closesocket函数用来关闭一个描述符为s的套接字。
如果发生错误,则closesocket()返回0;否则的话,返回SOCKET_ERROR错误。
3.3.5. sendto函数sendto函数的格式为:sendto( SOCKET s, const char FAR* buf, int len, int flags,const struct sockaddr FAR* to, int tolen);sendto函数用来向某个端口发送数据。
s:一个标识套接口的描述字;buf:包含待发送数据的缓冲区;len:buf缓冲区中数据的长度;flags:调用方式标志位;to:(可选)指针,指向目的套接口的地址;tolen:to所指地址的长度。
3.3.6. recvfrom函数recvfrom函数的格式为:recvfrom(int s,void *buf,int len,unsigned int flags, struct sockaddr *from,socket_t *fromlen)recvfrom函数用来接收返回的ICMP包。
s:标识一个已连接套接口的描述字;buf:接收数据缓冲区;len:缓冲区长度;flags:调用操作方式;from:(可选)指针,指向装有源地址的缓冲区;fromlen:(可选)指针,指向from缓冲区长度值。
3.3.7. bind函数bind函数的格式为:int bind( SOCKET s, const struct sockaddr FAR* name,int namelen)bind函数用来给socket绑定一个IP地址和一个特定的端口号。
s:标识一未捆绑套接口的描述字;name:赋予套接口的地址;sockaddr结构定义如下:struct sockaddr{ u_short sa_family; char sa_data[14]; };namelen:name名字的长度。
4. 系统设计4.1 主要目标本程序主要实现了:UDP扫描功能;能对单个指定的主机进行扫描或扫描指定网段内的主机;能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描;4.2 开发环境及工具测试平台:Windows XP Professional使用软件:Visual C++ 6.0开发语言:C语言4.3 功能模块与系统结构作为端口扫描程序,首先需要完成的功能就是对于系统操作系统的服务端口进行扫描,返回扫描结果。
对于端口的扫描,包括对于本机系统服务端口,局域网内目标机系统,以及远程IP的系统服务端口进行扫描。
有些时候,用户并不需要去扫描整个系统的所有端口,因为这样的话不仅会浪费大量的时间,而且可能导致难以找到自己需要了解的端口的扫描结果。
所以,对于选择性地对端口进行扫描也非常重要。
这当然也是扫描程序需要实现的功能之一。
用户在等待扫描的时候,往往希望知道它的工作进度。
这样用户可以更好地控制自己的操作。
站在用户的角度思考,设置进度是程序需要完成的,这样就能知道程序扫描的进度。
系统必须提供的服务是功能需求的基本,本着站在用户角度思考的原则,做出如上叙述需求,从简列举如下:扫描功能;地址选择功能;端口选择功能;端口扫描程序功能模块如下图所示:图1 系统功能模块图图2 程序执行流程图5. UDP扫描的实现这种方法由于使用的是UDP协议。
由于这个协议很简单,所以扫描变得相对比较困难。
这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。
幸运的是,许多主机在你向一个未打开的UDP 端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。
这样就能发现哪个端口是关闭的。
UDP和ICMP错误都不保证能到达,因此这种扫描就不那么可靠。
而且这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定,而且本程序的UDP扫描只支持单线程。
5. 1 基本原理首先使用socket()函数创建套接字,再用bind()函数绑定套接字,然后向扫描的目的主机的目的端口发送UDP数据包,再等待目的主机的目的端口是否返回ICMP_PORT_UNREACH错误数据报,若收到返回的错误数据包,则说明该端口是关闭着的,否则该端口是打开的,再将打开的端口保存进静态数组中,以方便显示结果。
DoScanPort_UDP(LPVOID lp) // UDP port to scan{…………………………sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);………………………if(bind(sockfd,(sockaddr *)&SOURCE_ADDR,sizeof(SOURCE_ADDR)) == SOCKET_ERROR) { …………………}if(retval = dlg.Send_UDPinfo(S_ADDRESS, inet_addr(D_ADDRESS), Source_Port, PortToScan) == SEND_FAULT) { …………………………} else if(retval == SEND_SET_ERROR) {………………………………}else if(retval == SEND_OK){if((retval=dlg.Get_ICMPinfo(sockfd,&DEST_ADDR))==1){str.Format("%d",PortToScan);showout_udp+=str+"|";}}closesocket(sockfd);return 0;}5.2 计算效验和首先通过while循环,将各位相加求和,若为奇数个字节,则最后通过if循环将最后一个字节加完,再移位做位运算,最后取反得到效验和,再返回给调用函数。