端口扫描实验报告

上传人:woxinch****an2018 文档编号:38984116 上传时间:2018-05-10 格式:DOC 页数:10 大小:66.50KB
返回 下载 相关 举报
端口扫描实验报告_第1页
第1页 / 共10页
端口扫描实验报告_第2页
第2页 / 共10页
端口扫描实验报告_第3页
第3页 / 共10页
端口扫描实验报告_第4页
第4页 / 共10页
端口扫描实验报告_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《端口扫描实验报告》由会员分享,可在线阅读,更多相关《端口扫描实验报告(10页珍藏版)》请在金锄头文库上搜索。

1、网络端口扫描实验报告网络端口扫描实验报告姓名:刘 俊 峰学号:11054114班级:11052411课程:网络攻防技术老师:张旻1 1、网络端口扫描简介网络端口扫描简介TCP/IP 协议在网络层是无连接的,而“端口” ,就已经到了传输层。端口便是 计算机与外部通信的途径。一个端口就是一个潜在的通信通道,也就是一个入 侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方 法很多,可以是手工进行扫描,也可以用端口扫描软件进行。在手工进行扫描 时,需要熟悉各种命令,对命令执行后的输析出进行分,效率较低。用扫描软 件进行扫描时,许多扫描器软件都有分析数据的功能。通过端口扫描,可以得 到

2、许多有用的信息,从而发现系统的安全漏洞。扫描工具根据作用的环境不同 可分为:网络漏洞扫描工具和主机漏洞扫描工具。前者指通过网络检测远程目 标网络和主机系统所存在漏洞的扫描工具。后者指在本机运行的检测本地系统 安全漏洞的扫描工具。本实验主要针对前者。 端口是 TCP 协议中定义的,TCP 协议通过套接字(socket)建立起两台计算机 之间的网络连接。它采用【IP 地址:端口号】形式定义,通过套接字中不同的 端口号来区别同一台计算机上开启的不同 TCP 和 UDP 连接进程。端口号在 065535 之间,低于 1024 的端口都有确切的定义,它们对应着因特网上常见 的一些服务。这些常见的服务可以

3、划分为使用 TCP 端口(面向连接如打电话) 和使用 UDP 端口(无连接如写信)两种。端口与服务进程一一对应,通过扫描 开放的端口就可以判断计算机中正在运行的服务进程。2、实验目的实验目的1.了解熟悉 MFC 及的基本原理和方法。 2.加深对 tcp 的理解,学习端口扫描技术和,原理熟悉 socket 编程。 3.通过自己编程实现简单的 IP 端口扫描器模型。 4.通过端口扫描了解目标主机开放的端口和服务程序。三、实验环境三、实验环境Windows 操作系统 VC+6.0 开发环境四、实验设计四、实验设计实验原理 通过调用 socket 函数 connect()连接到目标计算机上,完成一次完

4、整的三次握手过 程,如果端口处于侦听状态,那么 connect()就可以成功返回,否则这个端口不 可用,即没有提供服务。 实验内容 1. 设计实现端口扫描器 2. IP 地址、端口范围可以用户输入。 3. 要求有有好的可视化操作界面。 实验步骤: 1、用户界面:使用 vc6.0 里的 MFC 来开发用户界面 2、端口扫描:使用 socket 函数中的 connect()连接计算机来判定目标计算机是否 开放了要测试的端口五、代码实现五、代码实现#include #include #pragma comment(lib,“wsock32.lib“) #define ZERO (fd_set *)0

5、 int maxth, scanok, scannum; int portip, hoststart, hoststop, startport, endport; long searchnum, searched; void usage(char *); void playx(int); void setip2(char *); void customport(char *, char *, char *); void portscannow(int); int main(int argc, char *argv) WSADATA wsadata; system(“cls.exe“); pri

6、ntf(“rn= 命令行端口扫描器 PortScanner V1.0 =“); if (argc 4) usage(argv0); return -1; if(!(stricmp(strlwr(argv1), “-p“) = 0) usage(argv0); return -1; if (WSAStartup(MAKEWORD(1,1), return -1; if (argc = 3) setip2(argv2); else if (argc = 4) customport(argv0, argv2, argv3); else usage(argv0); return -1; portsca

7、nnow(argc); WSACleanup(); return 0; void usage(char * prog) printf(“Usage: %s “, prog); printf(“rnn :“); printf(“rn -p Port|StartPort-EndPort “); printf(“rnn Example: “); printf(“rn %s -p 192.168.0.1“, prog); printf(“rn %s -p 192.168.0.1-192.168.0.254“, prog); printf(“rn %s -p 21-80 192.168.0.1“, pr

8、og); printf(“rn %s -p 21-80 192.168.0.1-192.168.0.254rn“, prog); return; void playx(int play = 0) char *plays12= “ | “,“ / “,“ - “,“ “,“ | “,“ / “,“ - “,“ “,“ | “,“ / “,“ - “,“ “, ; if (searchnum != 0) for (int i = 0 ; i 15 hoststop = hoststart = ntohl(host); void TestThread(int thread = 200) for (;

9、) playx(); if (maxth thread)Sleep(100); else break; return; void WaitThreadEnd() Sleep(6000); printf(“r rn“); printf(“ Wait ( %d )Thread end.rn“, maxth); for(;) if (maxth 0) Sleep(100);playx();continue; else break; printf(“rn“); return; void customport(char *cp, char *cp2, char *cp3) int intport; ch

10、ar *checker; startport = atoi(cp2); endport = atoi(cp2); if (strstr(cp2,“-“) intport = atoi(checker = strchr(cp2, -) + 1); if (intport 0 exit(-1); setip2(cp3); UINT portscan(LPVOID port) int addr = portip; int sock; struct fd_set mask; struct timeval timeout; struct sockaddr_in server; unsigned long

11、 flag = 1; sock = socket(AF_INET, SOCK_STREAM, 0); if (sock = INVALID_SOCKET) printf(“rnSock Error:%s“, WSAGetLastError(); maxth -; return -1; server.sin_family=AF_INET; server.sin_addr.s_addr = htonl(addr); server.sin_port = htons(short(port); playx();if (ioctlsocket(sock, FIONBIO, closesocket(sock

12、); maxth -; return -1; connect(sock, (struct sockaddr*) timeout.tv_sec = 18; timeout.tv_usec = 0; FD_ZERO( FD_SET(sock, switch(select(sock + 1, ZERO, maxth -;return -1; case 0: maxth -;closesocket(sock);return -1; default: if(FD_ISSET(sock, printf(“ Found: %s Port: %d open.rn“, inet_ntoa(server.sin_

13、addr), ntohs(server.sin_port);closesocket(sock);scanok +;maxth -;return 1; return 0; void portscannow(int xp) int sport; char *timenow, timebuf32; char *ports32=“21“,“22“,“23“,“25“,“53“,“79“,“80“,“110“,“111“,“113“,“123“,“135“,“139“,“143“,“443“,“512“, “513“,“514“,“515“,“540“,“1080“,“1433“,“1521“,“152

14、4“,“3306“,“3389“,“5631“,“6000“,“6112“, “8000“,“8080“,“12345“ ; timenow = _strtime(timebuf); printf(“rnPortScan Start Time: %srnn“,timenow); maxth = 0; scanok = 0; scannum = 0; searched = 0; searchnum = hoststop - hoststart +1; if(xp = 3) searchnum = searchnum * 32; if(xp = 4) searchnum = searchnum *

15、 (endport - startport +1); for (portip = hoststart; portip 500 )for(sport = startport; sport 设置microsoft 基础类中不 使用 MFC 改成使用 MFC 作为静态链接库,确定后再次 build。Build 成功后代码能够成功运行,端口扫描成功八、实验总结八、实验总结1.实验中的遇到的问题: 刚开始老师布置作业的时候完全不知道怎么做,在网 上找了一些资料和借鉴同学的实验过程才完成了这个实验,着实不易。 2.实验中的收获:一定程度上加深了对 MFC 和 socket 编程的的理解,对课程学 习打下了一个比较好的基础;用一些设计模式在一定程度能提高开发效能,降 低开发的复杂度,并且深刻地认识到实践才能出真知这个硬道理。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号