




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.PAGE.网络安全程序设计结课论文端口扫描程序设计目录第一章序言2第二章系统设计52.1运行环境及语言52.2系统功能52.3程序运行流程图52.4程序设计过程62.41创建工程62.42主机端口扫描程序设计流程82.43主要代码92.5运行结果测试13第三章总结及心得153.1总结153.2心得体会15第四章参考文献15第一章序言1.1背景Internet快速的发展,为我们带来了方便同时也带给了我们信息安全担忧。在计算机信息安全管理中可以通过端口扫描收集系统的信息来自动监测远程或本地主机安全性弱点的程序,可以发现远程服务器的各种tcp端口的分配及提供的服务与他们的软件版本。从而让管理员间接的或直观的了解到远程主机所存在的安全问题。从而端口扫描技术得到人们的重视。1.2目的该文章对端口扫描技术的原理和应用进行了阐述,并设计了一个简单的基于windows平台上的端口扫描系统。此程序主要完成了TCPconnect<>扫描和UDP扫描功能。TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。而对于UDP扫描只支持单线程,速度较慢。扫描结果以列表的形式直观地展现出来。1.3端口扫描概述网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。每一个网络主机都相当于一个"房间",黑客能否进入"房间",取决于是否发现了打开的"门窗"。也就是说,能否入侵网络主机,或者网络主机是否安全,关键在于能否查出网络主机的系统信息。而端口是主机与外界通讯交流的数据出入口,即是"门窗"。端口分为硬件端口和软件端口,所谓硬件端口又称为接口,包括:USB端口、串行端口、并行端口等。软件端口一般指网络中面向连接服务<TCP>和无连接服务<UDP>的通讯协议的端口。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。通过端口扫描,发现系统的安全漏洞。它使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种手段1.4端口扫描的原理端口有两种,UDP端口和TCP端口。由于UDP端口是面向无连接的,从原理的角度来看,没有被扫描的可能,或者说不存在一种迅速而又通用的扫描算法;而TCP端口具有连接定向〔ConnectionOriented的特性〔即是有面向连接的协议,为端口的扫描提供了基础。TCP建立连接时有三次握手:首先,Client端往Server某一端口发送请求连接的SYN包,如果Server的这一端口允许连接,就会给Client端发一个ACK回包,Client端收到Server的ACK包后再给Server端发一个ACK包,TCP连接正式建立,这就是连接成功的过程。当Client端往Server某一端口发送请求连接的SYN包,此时若Server的这一端口不允许连接,就会给Client端发一个RST回包,Client端收到Server的RST包后再给Server端发一个RST包,这就是连接失败的过程。基于连接的建立过程,可以想到,假如要扫描某一个TCP端口,可以往该端口发一个SYN包,如果该端口处于打开状态,我们就可以收到一个ACK,也就是说,如果收到ACK,就可以判断目标端口处于打开状态,否则,目标端口处于关闭状态。这就是TCP端口扫描的基本原理第二章系统设计2.1运行环境及语言运行环境:Visual
C++
6.0
语言:c++2.2系统功能简易的TCPconnect<>扫描,支持多线程;UDP扫描功能;能对单个指定的主机进行扫描或扫描指定网段内的主机;能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。2.3程序运行流程图开始开始输入ip和端口判断ip和端口合法开始扫描是否2.4程序设计过程2.41创建工程使用VC++的应用程序生成向导〔MFCAppWizard[exe]创建一个基于对话框的工程,该工程的名称201200824420fandi,如图所示:单击确定,然后选择基本对话框,如图所示点击下一步,再在WindowsSockets[W]前打上勾,支持Winsock编程,如图接下来一直选择默认直到完成。2.42主机端口扫描程序设计流程设计对话框2按Ctrl+W打开类向导,添加变量如图2.43主要代码1.在头文件findport100114019Dlg.h里添加private: SOCKETSocket;2.findport100114019Dlg.cpp文件中添加如下文件包含信息:#pragmacomment<lib,"ws2_32.lib">//静态链接库#include<winsock.h>3..编写Tcpscan按钮下的代码如下: UpdateData<true>;//MFC窗口函数,用来刷新数据 WSADATAWSAData; CStringstr; if<WSAStartup<MAKEWORD<2,2>,&WSAData>!=0> { MessageBox<"初始化Winsock失败!">; return; } Socket=socket<AF_INET,SOCK_STREAM,0>;//创建连接套接字 if<Socket==INVALID_SOCKET> { MessageBox<"创建Socket失败!">; WSACleanup<>; return; } intIpAddress; //判断域名或IP地址 inti=0; CStringr; m_ip.GetWindowText<r>; IpAddress=inet_addr<r>; if<IpAddress==INADDR_NONE> { hostent*pHostent=gethostbyname<str>; if<pHostent> IpAddress=<*<in_addr*>pHostent->h_addr>.s_addr;} if<m_port1>m_port2> { MessageBox<"请确保起始Port不大于终止port">; WSACleanup<>; return; } structsockaddr_indesthost;//定义套接字地址 memset<&desthost,0,sizeof<desthost>>; desthost.sin_family=AF_INET; //desthost.sin_port=htons<atoi<m_Port>>;desthost.sin_addr.s_addr=IpAddress;for<unsignedinta=m_port1;a<=m_port2;a++>{desthost.sin_port=htons<a>;char*SendBuf;SendBuf=newchar[2];memset<SendBuf,0,2>;intnConnect=connect<Socket,<sockaddr*>&desthost,sizeof<desthost>>;if<nConnect==SOCKET_ERROR>{ str.Format<"%d",a>; m_status+="TCPPort m_status+=str; m_status+=":Close\r\n";}else{ str.Format<"%d",a>; m_status+="TCPPort m_status+=str; m_status+=":open\r\n";}} UpdateData<false>; closesocket<Socket>; WSACleanup<>;//释放套接字绑定4.编写Udpscan按钮下的代码如下:UpdateData<true>;//MFC窗口函数,用来刷新数据 WSADATAWSAData; CStringstr; if<WSAStartup<MAKEWORD<2,2>,&WSAData>!=0> { MessageBox<"初始化Winsock失败!">; return; } Socket=socket<AF_INET,SOCK_DGRAM,0>;//创建连接套接字 if<Socket==INVALID_SOCKET> { MessageBox<"创建Socket失败!">; WSACleanup<>; return; } intnIotrl; unsignedlongflag=1;nIotrl=ioctlsocket<Socket,FIONBIO,&flag>; if<nIotrl==SOCKET_ERROR> { MessageBox<"设置socket模式失败!">; closesocket<Socket>; WSACleanup<>; return; } intIpAddress; inti=0; CStringr; m_ip.GetWindowText<r>; IpAddress=inet_addr<r>; if<IpAddress==INADDR_NONE> { hostent*pHostent=gethostbyname<str>; if<pHostent> IpAddress=<*<in_addr*>pHostent->h_addr>.s_addr;} /*if<m_port1>m_port2> { MessageBox<"请确保起始Port不大于终止port">; WSACleanup<>; return; }*/ structsockaddr_indesthost;//定义套接字地址 memset<&desthost,0,sizeof<desthost>>; desthost.sin_family=AF_INET; //desthost.sin_port=htons<atoi<m_Port>>;desthost.sin_addr.s_addr=IpAddress;for<unsignedinta=m_port1;a<=m_port2;a++>{desthost.sin_port=htons<a>;char*SendBuf;SendBuf=newchar[2];memset<SendBuf,0,2>;intnSend=sendto<Socket,SendBuf,1,0,<structsockaddr*>&desthost,sizeof<desthost>>;if<nSend==SOCKET_ERROR>{MessageBox<"UDP包发送失败!">;closesocket<Socket>;WSACleanup<>;return;}Sleep<500>;sockaddr_inSourceHost;intSourceSize;SourceSize=sizeof<SourceHost>;memset<&SourceHost,0,SourceSize>;char*RecvBuf;RecvBuf=newchar[2];memset<RecvBuf,0,2>;intnRecv;nRecv=recvfrom<Socket,RecvBuf,1,0,<structsockaddr*>&SourceHost,&SourceSize>;if<nRecv==SOCKET_ERROR>{ intErrorCode=GetLastError<>; if<ErrorCode==10054> { str.Format<"%d",a>; m_status+="UDPPort m_status+=str; m_status+=":Close\r\n"; }if<ErrorCode
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025房产中介买卖合同
- 2025二手汽车买卖合同
- 2025标准化的销售合同范本
- 2025年竹笋干购销合同范本
- 2025202车辆维修服务合同范本
- 2025年合同签署的具体步骤与法律法规
- 《档案管理课件》课件
- 2025智能家居系统维护保养合同
- 《营销战略的规划》课件
- 《快乐王子的冒险》课件
- 2024职场人压力调查报告-智联招聘-202407
- ISO9001-ISO14001-ISO45001三体系内部审核检查表
- T-SHZSAQS 00278-2024 智慧农场水肥一体化系统运行技术规程
- 基于STM32的锂电池管理系统设计与实现
- 新概念2测试题及答案
- 成都医学院临床医学专业认证任务分解表
- (正式版)JTT 1496-2024 公路隧道施工门禁系统技术要求
- TB 10303-2020铁路桥涵工程施工安全技术规程
- 神经外科颅内动脉瘤血管内介入栓塞治疗手术知情同意书
- MOOC 基于STM32CubeMX和HAL驱动库的嵌入式系统设计-电子科技大学 中国大学慕课答案
- 物业设施设备管理指南
评论
0/150
提交评论