版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络端口扫描工具的设计与实现学生姓名:指导老师:摘 要 本课程设计是在 Windows系统中,通过软件 visual studio 2010 使用C#语言完成的一个端口扫描程序。 此程序主要利用 TCP连接的三次握手特性, 完成对指定主机端口的扫描。扫描能对指定 IP 的主机的常用端口进行扫描。扫描结果以列表的形式直观地展现出来。 通过对扫描结果的分析知道了, 有哪些常用端口是开放的。关键词C# ;端口扫描; TCP三次握手;网络安全1 引 言本文主要内容本文第二节主要说明本设计的背景及目的;第三节介绍了TCP 端口扫描基本原理;第四节详细描述了网络端口扫描工具的设计步骤、部分源代码以;第五节
2、为相关测试结果;第六节为结束语以及末尾的相关参考文献。设计平台及设计语言本系统是在win7 操作系统上,通过visual studio 2010软件使用C#语言设计编写完成的。设计背景及目的网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。在网络中,把这些城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜索信息的几种常用方法之一,也正是这一种方法最容易暴露入侵者的身份和意图。一般说来,扫描端口有以下目的:?判断目标主机上开放了哪些服务?判断目标主机的操作系统?如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统, 他们就能使用相应的手段实现入侵。 而
3、如果管理员先掌握了这些端口服务的安全漏洞,就能采取有效的安全措施,防范相应的入侵。?2 设计原理端口的基本概念端口是由计算机的通信协议 TCP/IP 协议定义的。其中规定,用 IP 地址和端口作为套接字,它代表 TCP连接的一个连接端,一般称为 Socket 。具体来说,就是用 IP 端口来定位一台主机中的进程。如果要和远程主机 A 的程序通信,那么只要把数据发向 A 端口就可以实现通信了。端口与进程是一一对应的, 如果某个进程正在等待连接, 称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。端口是一个 16 bit
4、的地址,用端口号进行标识不同作用的端口。端口一般分为两类。熟知端口号:范围从0 到 1023,这些端口号一般固定分配给一些服务。比如 21 端口分配给 FTP服务,25 端口分配给 SMTP服务,80 端口分配给 HTTP服务,135 端口分配给 RPC服务等等动态端口号:动态端口的范围从 1024 到 65535,只要运行的程序向系统提出访问网络的申请, 那么系统就可以从这些端口号中分配一个供该程序使用。 在关闭程序进程后,就会释放所占用的端口号。端口扫描技术TCP connect()?扫描这是最基本的 TCP扫描。操作系统提供的 connect() 系统调用,用来与每一个感兴趣的目标计算机
5、的端口进行连接。 如果端口处于侦听状态, 那么 connect() 就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限, 系统中的任何用户都有权利使用这个调用。另一个好处就是速度 , 如果对每个目标端口以线性的方式,使用单独的connect() 调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O 允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs 文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。TCP SYN扫描这种技术
6、通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的 TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态。一个 RST返回,表示端口没有处于侦听态。如果收到一个 SYN|ACK,则扫描程序必须再发送一个 RST信号,来关闭这个连接过程。 这种扫描技术的优点在于一般不会在目标计算机上留下记录。 但这种方法的一个缺点是,必须要有 root 权限才能建立自己的 SYN数据包。TCP FIN? 扫描有的时候有可能 SYN扫描都不够秘密。一些防火墙和包过滤器会对
7、一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN 数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复 FIN数据包。另一方面, 打开的端口会忽略对FIN 数据包的回复。 这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。并且这种方法在区分Unix 和 NT时,是十分有用的。IP 段扫描这种不能算是新方法, 只是其它技术的变化。 它并不是直接发送 TCP探测数据包,是将数据包分成两个较小的 IP 段。这样就将一个 TCP头分成好几个数据包,从而过滤器就很难探测到。 但必须小心。 一些程序在处理这
8、些小数据包时会有些麻烦。TCP?反向 ?ident扫描ident协议允许 (rfc1413)看到通过 TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。因此你能,举个例子,连接到http端口,然后用 identd来发现服务器是否正在以root 权限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。本系统设计原理本系统采用的是 TCP connect() 扫描技术众所周知,端口存在两种,UDP和 TCP。UDP协议由于是非面向连接的,对UDP端口的探测也就不可能像TCP端口的探测那样依赖于连接建立过程,这也使得 UDP端口扫描的可靠性不高。而 TCP由于其
9、connection oriented的特性,为端口的扫描提供了基础。 众所周知, TCP建立连接时有三次握手。 先是 client 端往 server 某端口发送请求连接的 SYN包,server 的该端口如果允许连接,会给 client 端发一个 SYN+ACK回包, client 端收到 server 的 SYN+ACK包后再给 server 端发一个确认包 ACK(ack=k+1) ,TCP连接正式建立。基于连接的建立过程,可以想到,假如要扫描某一个 TCP端口,可以尝试与该端口进行 TCP连接,如果该端口处于打开状态, 通过 TCP三次握手就能成功建立连接, 也就是说,如果连接成功,
10、就可以判断目标扫描出于打开状态, 否则,目标端口处于关闭状态。这就是 TCP端口扫描的基本原理。主机A主机BSYN, SEQ X连接请求SYN,ACK,SEQ=Y,ACK=X+1确认ACK,SEQ=X+1,ACK=Y+1确认图TCP连接建立过程3 设计步骤程序设计程序设计的总体思路:本系统要求扫描指定 IP 地址的主机的常用端口,首先在程序中要定义一个数组, 用于指定常用端口包含的内容; 其次需要创建一个扫描方法,当用户输入指定 IP 后,循环调用该方法对指定 IP 的常用端口进行扫描,并将扫描结果以列表形式显示。程序的大概执行过程:第一步,用户输入指定 IP 地址,点击扫描后,创建线程,并创
11、建 ThreadStart 的委托对象; 第二步,若当前扫描端口数量未超过定义的数组上限值,调用扫描线程 Scan() 对该端口尝试连接;第三步,循环扫描数组里定义的所有端口, 记录每个端口是否开放情况; 第四步,数组内的所有端口扫描完成后,匹配过滤原则,显示扫描结束。流程图如图所示图程序流程图程序实现创建线程当用户点击扫描之后,执行以下程序代码,创建线程并创建线程ThreadStart委托对象,同时将显示框初始化:privatevoid btnScan_Click(objectsender, e);"" );TCP 扫描方法此段代码实现了对指定端口扫描功能,此次安城定义了
12、一个临时变量port_now ,当该线程被调用后,创建TcpClient对象,尝试对指定端口进行TCP连接,并将结果显示在显示框:privatevoid Scan()intport_now = port;doneport_now =true ;Addr = ;oString() +" 开放 " );catch" 端口 " + scan_portport_now.ToString() +" 未开放 " );端口扫描主函数此段代码通过调用 Scan() 方法,实现了对指定端口组个扫描功能。 当执行时,首先对当前扫描端口进行过滤原则匹配,若扫描端口排序超过定义数组最大值,则显示扫描结束; 反之,调用 Scan() 线程对该端口进行扫描。 此段代码中还定义了当未完成扫描,强行退出时,直接终止执行程序:privatevoid PortScan()" 开始扫描 . ( 可能需要您等待几分钟 )" ); "" );Addr = ;for ( inti = 0; i &l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华师大版初中科学空气的存在(30课件)
- 8《红楼春趣》核心素养分层学习任务单-2022-2023学年五年级语文下册新课标(部编版)
- 防城港市重点中学2023-2024学年高三下学期考前模拟数学试题
- 2024年赣州客运资格证考试内客
- 2024年荷泽客运从业资格证
- 2024年宜宾c1道路客运输从业资格证怎么考
- 2024年南昌客运从业资格证要考几门课
- 2024年陕西2024年客运从业资格证模拟考试题答案
- 2024年南宁客运从业资格证实际操作考试技巧
- 吉首大学《国际贸易实务B》2021-2022学年第一学期期末试卷
- 租地种香蕉合同
- 20世纪时尚流行文化智慧树知到期末考试答案章节答案2024年浙江理工大学
- 国开(甘肃)2024年春《地域文化(专)》形考任务1-4终考答案
- (高清版)JTGT 3331-04-2023 多年冻土地区公路设计与施工技术规范
- 增值服务具体方案怎么写范文
- 企业评标专家推荐表
- 设备故障报修维修记录单
- 科技文献阅读方法PPT优秀课件
- 风筝蝴蝶鸟头燕尾模型及证明过程.docx
- 炎症性肠病患者的饮食与营养.ppt
- 老年性便秘(中医老年病学)PPT参考课件
评论
0/150
提交评论