ysm 发表于 2015-6-9 11:36:38

有没有哪位亲有 关于端口扫描器的教学视频

最近想写一个端口扫描器,但是由于刚学习C语言不久,希望有个教学视频看看...

ryxcaixia 发表于 2015-6-9 11:36:39


#include <winsock.h>
#pragma comment(lib, "wsock32")

int main()
{
        // 初始化套接字库
        WORD wVersionRequested;
        WSADATA wsaData;
        wVersionRequested = MAKEWORD( 2, 2 );
        WSAStartup( wVersionRequested, &wsaData );

        // 创建socket
        SOCKET PortScan = socket(AF_INET, SOCK_STREAM, 0);
        if (PortScan==INVALID_SOCKET)
        {
                printf("创建客户端socket失败!\n");
                return 0;
        }

        // 连接目标服务器
        char Ipbuff = {0};
        int Port(0);
        printf("Enter the Ip Address\n");
        scanf("%s", Ipbuff);
        printf("Enter the Ip Address\n");
        scanf("%d", &Port);

        SOCKADDR_IN addrServ;
        addrServ.sin_family = AF_INET;
        addrServ.sin_addr.S_un.S_addr = inet_addr(Ipbuff); // 127.0.0.1
        addrServ.sin_port = htons(Port); // 80

        // 判断端口释放开放
        if(connect(PortScan,(sockaddr *)&addrServ,sizeof(sockaddr))==SOCKET_ERROR)
                printf("连接服务器失败!端口%d 关闭\n", Port);
        else
                printf("连接服务器成功!端口%d 开放\n", Port);

        //关闭套接字,释放资源
        closesocket(PortScan);
        WSACleanup();

        return 0;
}

给你简单写了一个 这就是端口扫描的基本原理
简单理解就是你指定一个IP地址, 制定一个端口号, 然后建立连接, 能连接上就说明开放端口, 连接不上就没开放
如果想批量扫描, 可以把Port房到一个for循环里, 从0到65535, 然后逐一判断

如果说是视频课件, 孙鑫C++的VC++视频, 其中有一课就是讲的socket编程, 不是很难 注释也比较清楚了
如果觉得没有界面, 就利用MFC搭一个界面, 不过我个人比较喜欢命令行模式, 凸显逼格

ryxcaixia 发表于 2015-6-9 13:31:30

类似于wwscan XScan surperScan和Nmap?

ysm 发表于 2015-6-9 14:06:32

ryxcaixia 发表于 2015-6-9 13:31
类似于wwscan XScan surperScan和Nmap?

是的...

745627933 发表于 2015-6-17 10:11:27

端口扫描的基本原理

mrhs 发表于 2015-6-17 13:44:33

楼主可以去找些开源的扫描器看看,而且原理了解的话并不难写

漩涡鸣人 发表于 2015-6-17 13:50:06

挺上几层的说法,补充下:
网络编程了解之后,可以了解下几种扫描的方式,看下nmap之类的源码,分析下。
半开、全开、ack、idle之类的扫描方式理解之后,简单建立连接、发包收包就能做到了
页: [1]
查看完整版本: 有没有哪位亲有 关于端口扫描器的教学视频