




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络端口扫描工具设计与实现学生姓名: 指引教师:摘要本课程设计是在Windows系统中,通过软件visualstudio使用C#语言完毕一种端口扫描程序。此程序重要运用TCP连接三次握手特性,完毕对指定主机端口扫描。扫描能对指定IP主机惯用端口进行扫描。扫描成果以列表形式直观地呈现出来。通过对扫描成果分析懂得了,有哪些惯用端口是开放。核心词C#;端口扫描;TCP三次握手;网络安全1引言1.1本文重要内容本文第二节重要阐明本设计背景及目;第三节简介了TCP端口扫描基本原理;第四节详细描述了网络端口扫描工具设计环节、某些源代码以;第五节为有关测试成果;第六节为结束语以及末尾有关参照文献。1.2设计平台及设计语言本系统是在win7操作系统上,通过visualstudio软件使用C#语言设计编写完毕。1.3设计背景及目网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放,有些却是大门紧闭。在网络中,把这些城堡“城门”称之为计算机“端口”。端口扫描是入侵者搜索信息几种惯用办法之一,也正是这一种办法最容易暴露入侵者身份和意图。普通说来,扫描端口有如下目:
判断目的主机上开放了哪些服务
判断目的主机操作系统
如果入侵者掌握了目的主机开放了哪些服务,运营何种操作系统,她们就能使用相应手段实现入侵。而如果管理员先掌握了这些端口服务安全漏洞,就能采用有效安全办法,防范相应入侵。
2设计原理2.1端口基本概念端口是由计算机通信合同TCP/IP合同定义。其中规定,用IP地址和端口作为套接字,它代表TCP连接一种连接端,普通称为Socket。详细来说,就是用IP端口来定位一台主机中进程。如果要和远程主机A程序通信,那么只要把数据发向A端口就可以实现通信了。端口与进程是一一相应,如果某个进程正在等待连接,称之为该进程正在监听,那么就会浮现与它相相应端口。由此可见,通过扫描端口,便可以判断出目的计算机有哪些通信进程正在等待连接。端口是一种16bit地址,用端标语进行标记不同作用端口。端口普通分为两类。熟知端标语:范畴从0到1023,这些端标语普通固定分派给某些服务。例如21端口分派给FTP服务,25端口分派给SMTP服务,80端口分派给HTTP服务,135端口分派给RPC服务等等动态端标语:动态端口范畴从1024到65535,只要运营程序向系统提出访问网络申请,那么系统就可以从这些端标语中分派一种供该程序使用。在关闭程序进程后,就会释放所占用端标语。2.2端口扫描技术2.2.1TCPconnect()
扫描这是最基本TCP扫描。操作系统提供connect()系统调用,用来与每一种感兴趣目的计算机端口进行连接。如果端口处在侦听状态,那么connect()就能成功。否则,这个端口是不能用,即没有提供服务。这个技术一种最大长处是,你不需要任何权限,系统中任何顾客均有权利使用这个调用。另一种好处就是速度,如果对每个目的端口以线性方式,使用单独connect()调用,那么将会耗费相称长时间,你可以通过同步打开各种套接字,从而加速扫描。使用非阻塞I/O容许你设立一种低时间用尽周期,同步观测各种套接字。但这种办法缺陷是很容易被发现,并且被过滤掉。目的计算机logs文献会显示一连串连接和连接是出错服务消息,并且能不久使它关闭。2.2.2TCPSYN扫描这种技术普通以为是“半开放”扫描,这是由于扫描程序不必要打开一种完全TCP连接。扫描程序发送是一种SYN数据包,好象准备打开一种实际连接并等待反映同样(参照TCP三次握手建立一种TCP连接过程)。一种SYN|ACK返回信息表达端口处在侦听状态。一种RST返回,表达端口没有处在侦听态。如果收到一种SYN|ACK,则扫描程序必要再发送一种RST信号,来关闭这个连接过程。这种扫描技术长处在于普通不会在目的计算机上留下记录。但这种办法一种缺陷是,必要要有root权限才干建立自己SYN数据包。2.2.3TCPFIN
扫描有时候有也许SYN扫描都不够秘密。某些防火墙和包过滤器会对某些指定端口进行监视,有程序能检测到这些扫描。相反,FIN数据包也许会没有任何麻烦通过。这种扫描办法思想是关闭端口会用恰当RST来回答FIN数据包。另一方面,打开端口会忽视对FIN数据包回答。这种办法和系统实既有一定关系。有系统不论端口与否打开,都回答RST,这样,这种扫描办法就不合用了。并且这种办法在区别Unix和NT时,是十分有用。2.2.4IP段扫描这种不能算是新办法,只是其他技术变化。它并不是直接发送TCP探测数据包,是将数据包提成两个较小IP段。这样就将一种TCP头提成好几种数据包,从而过滤器就很难探测到。但必要小心。某些程序在解决这些小数据包时会有些麻烦。2.2.5TCP
反向
ident扫描ident合同容许(rfc1413)看到通过TCP连接任何进程拥有者顾客名,虽然这个连接不是由这个进程开始。因而你能,举个例子,连接到http端口,然后用identd来发现服务器与否正在以root权限运营。这种办法只能在和目的端口建立了一种完整TCP连接后才干看到。2.3本系统设计原理本系统采用是TCPconnect()扫描技术众所周知,端口存在两种,UDP和TCP。UDP合同由于是非面向连接,对UDP端口探测也就不也许像TCP端口探测那样依赖于连接建立过程,这也使得UDP端口扫描可靠性不高。而TCP由于其connectionoriented特性,为端口扫描提供了基本。众所周知,TCP建立连接时有三次握手。先是client端往server某端口发送祈求连接SYN包,server该端口如果容许连接,会给client端发一种SYN+ACK回包,client端收到serverSYN+ACK包后再给server端发一种确认包ACK(ack=k+1),TCP连接正式建立。基于连接建立过程,可以想到,如果要扫描某一种TCP端口,可以尝试与该端口进行TCP连接,如果该端口处在打开状态,通过TCP三次握手就能成功建立连接,也就是说,如果连接成功,就可以判断目的扫描出于打开状态,否则,目的端口处在关闭状态。这就是TCP端口扫描基本原理。主机B主机B主机AACK,SEQ=X+1,ACK=Y+1SYN,SEQ=XSYN,ACK,SEQ=Y,ACK=X+1连接祈求确认确认图2.1TCP连接建立过程3设计环节3.1程序设计程序设计总体思路:本系统规定扫描指定IP地址主机惯用端口,一方面在程序中要定义一种数组,用于指定惯用端口包括内容;另一方面需要创立一种扫描办法,当顾客输入指定IP后,循环调用该办法对指定IP惯用端口进行扫描,并将扫描成果以列表形式显示。程序大概执行过程:第一步,顾客输入指定IP地址,点击扫描后,创立线程,并创立ThreadStart委托对象;第二步,若当前扫描端口数量未超过定义数组上限值,调用扫描线程Scan()对该端口尝试连接;第三步,循环扫描数组里定义所有端口,记录每个端口与否开放状况;第四步,数组内所有端口扫描完毕后,匹配过滤原则,显示扫描结束。流程图如图3.1所示图3.1程序流程图3.2程序实现3.2.1创立线程当顾客点击扫描之后,执行如下程序代码,创立线程并创立线程ThreadStart委托对象,同步将显示框初始化:privatevoidbtnScan_Click(objectsender,System.EventArgse) { //创立线程,并创立线程ThreadStart委托对象 Threadprocess=newThread(newThreadStart(PortScan)); process.Start(); //显示框初始化 lbResult.Items.Clear(); lbResult.Items.Add("端口扫描器1.0."); lbResult.Items.Add(""); }3.2.2TCP扫描办法此段代码实现了对指定端口扫描功能,本次安城定义了一种暂时变量port_now,当该线程被调用后,创立TcpClient对象,尝试对指定端口进行TCP连接,并将成果显示在显示框:privatevoidScan() {intport_now=port;done[port_now]=true;Addr=txtAddr.Text; //创立¨TcpClient对象 TcpClientobjTCP=null; try { //用TcpClient对象扫描端口,连接成功表达端口开放//连接不成功表达端口未开放或防火墙过滤 objTCP=newTcpClient(Addr,scan_port[port_now]); lbResult.Items.Add("端口"+scan_port[port_now].ToString()+"开放"); } catch {lbResult.Items.Add("端口"+scan_port[port_now].ToString()+"未开放"); }}3.2.3端口扫描主函数此段代码通过调用Scan()办法,实现了对指定端口组个扫描功能。当执行时,一方面对当前扫描端口进行过滤原则匹配,若扫描端口排序超过定义数组最大值,则显示扫描结束;反之,调用Scan()线程对该端口进行扫描。此段代码中还定义了当未完毕扫描,强行退出时,直接终结执行程序:privatevoidPortScan(){lbResult.Items.Add("开始扫描...(也许需要您等待几分钟)");lbResult.Items.Add("");Addr=txtAddr.Text;for(inti=0;i<16;i++){port=i;//使用该端口扫描线程scanThread=newThread(newThreadStart(Scan));scanThread.Start();//使线程睡眠System.Threading.Thread.Sleep(100);}//未完毕时状况while(!OK){OK=true;for(inti=0;i<16;i++){if(!done[i]){OK=false;break;}}System.Threading.Thread.Sleep(1000);}lbResult.Items.Add("扫描结束!");}3.3测试成果程序开始执行时,主界面初始化,顾客可在左边文本框中输入想要扫描主机IP地址,点击扫描,则扫描开始。主界面如图3.2所示。图3.2系统主界面当顾客输入指定IP,本测试使用本地主机作为测试,输入,点击扫描,扫描成果以列表形式显示在右边文本框中。测试成果如图3.3所示。图3.3端口扫描测试截图4结束语本次课程设计课题是设计实现一种简朴端口扫描工具,本次课程设计程序在VS软件中使用C#编写,该工具可扫描局域网某计算机惯用端口与否烤房,并以本地主机作为测试。通过这两个星期课程设计,通过图书馆和网上查找资料,顺利完毕了设计和开发,端口扫描系统开发完毕。系统基本符合规定,但是鉴于此系统是基于TCP三次握手过程实现端口扫描,该系统扫描时耗费时间偏长。在整个设计过程中,浮现过诸多问题,得到了教师和同窗协助,在不断学习过程中我体会到这次课程设计是一种不断学习过程,从设计初模糊结识到最后可以顺利完毕,我体会到在实践中学习重要性。设计过程中,由于要实现某些功能,网上资源解决了我问题。多借鉴网络资源也是一种较好学习办法总之,通过这次课程设计,我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年运动心律监视表项目市场调查研究报告
- 2025年直流牵引电机项目市场调查研究报告
- 2025年气瓶专用磁粉探伤机项目市场调查研究报告
- 2025年挤出尼龙制品项目市场调查研究报告
- 创新驱动共筑梦想-青岛教育合作联盟工作汇报
- 提升数字化办公效率与信息安全平衡的策略
- 我国医学院校大学毕业生就业心态的多维剖析与调适策略研究
- 教育机构如何利用数字孪生技术实现高效融资的策略研究
- 工作压力调节机制的深度剖析与实验研究
- 小学高年段学生数据分析能力的培养路径探究-基于南京市M校的实践洞察
- 2025年八省联考数学试题(原卷版)
- 学前儿童卫生与保健-期末大作业:案例分析-国开-参考资料
- 公安局冻结解除冻结存款汇款通知书
- 初中历史优质课说课稿《贞观之治》
- arcgis网络分析.
- ROHS环保指令知识培训 ppt课件
- 编译原理课后习习题答案(陈火旺+第三版)
- 车站线路全长与有效长ppt课件
- 电梯分项工程质量验收记录表
- 最新防雷设施检测报告范本
- 沥青混合料厂家驻厂管理程序2
评论
0/150
提交评论