`

C端口扫描

 
阅读更多

#include <stdio.h> 
#include <winsock.h> 
#define NETWORK_ERROR -1 
#define NETWORK_OK 0 
#define PORT_MIN 1 
#define PORT_MAX 65535 

HANDLE hThread;
DWORD hID;

char hostname[30];

int starting_port = 0;
int ending_port = 0;
int nopen = 0;

DWORD portscan();

int main()
{
    int ret;

    WSADATA dat;
    DWORD version;

    version = MAKEWORD(2, 2);

    ret = WSAStartup(version, &dat);

    if (ret != 0)
    {
        printf("Error initializing Winsock.\n");
        WSACleanup();
        return NETWORK_ERROR;
    }
    if (ret == 0)
    {

        printf("Enter hostname:");
        scanf("%s", hostname);

        printf("Enter starting port:");
        scanf("%d", &starting_port);

        if (starting_port < PORT_MIN)
        {
            printf("Invalid port number.\n");
            WSACleanup();
            return NETWORK_ERROR;
        }

        printf("Enter ending port:");
        scanf("%d", &ending_port);

        if (ending_port > PORT_MAX)
        {
            printf("Invalid port number.\n");
            WSACleanup();
            return NETWORK_ERROR;
        }

        printf("\nScanning [%s]...\n", hostname);

        hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)portscan, 0, 0,
            &hID);

        if (hThread == 0)
        {
            printf("Failed to create thread.\n");
            WSACleanup();
            return NETWORK_ERROR;
        }
        Sleep( - 1);
    }
    WSACleanup();
    return NETWORK_OK;
}

DWORD portscan()
{
    int i, nret;

    SOCKET thesocket;
    LPHOSTENT hostent;

    thesocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    hostent = gethostbyname((hostname));

    for (i = starting_port; i < ending_port + 1; ++i)
    {

        SOCKADDR_IN hostinfo;

        hostinfo.sin_family = AF_INET;
        hostinfo.sin_addr = *((LPIN_ADDR) *hostent->h_addr_list);
        hostinfo.sin_port = htons(i);

        nret = connect(thesocket, (LPSOCKADDR) &hostinfo, sizeof(hostinfo));

        if (nret == 0)
        {
            printf("\n\t%d\n", i);
            ++nopen;
        }
    }

    printf("\nScan complete.\n\n");
    printf("Number of ports opened = %d\n", nopen);

    closesocket(thesocket);
    return 0;
}








分享到:
评论

相关推荐

    c语言端口扫描

    用C语言编写扫描局域网内主机的程序。要求可以显示局域网内的主机名列表,IP地址列表,并可以显示哪些主机开放了哪些端口

    端口扫描.c语言

    在这个项目中,我们使用C语言来实现一个端口扫描器,它能够针对给定的IP地址进行扫描,识别出哪些端口是开放的。 在C语言中实现端口扫描,主要涉及以下知识点: 1. **套接字编程(Socket Programming)**:C语言中...

    C语言端口扫描源码

    用于扫描端口的C源代码,十分实用,欢迎下载

    c语言下的端口扫描代码

    c语言端口扫描代码(转载) #include #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;winsock.h&gt; #pragma comment (lib,"ws2_32.lib")

    基于C语言的端口扫描工具设计与实现.zip

    我们使用了C和Go两种语言来实现了端口扫描工具,分别由两名组员完成。每种语言分别实现了TCP-connect、SYN、FIN、UDP这四种扫描方式。 为了提高扫描速度,我们分别利用了两种语言的特色: 1. Go语言实现 我们采用了...

    c# 端口扫描

    在IT领域,端口扫描是网络管理员和开发者常用的一种技术,用于检测远程或本地主机上哪些端口是开放的。这些开放的端口可能对应着正在运行的服务,可以帮助我们了解系统的安全状态。在这个场景中,我们将关注如何使用...

    用C语言写的端口扫描器

    在这个“用C语言写的端口扫描器”项目中,我们将深入探讨C语言如何实现这一功能。 首先,我们需要理解端口的概念。在TCP/IP协议中,端口是一个16位的数字,范围从0到65535,其中0-1023被称为知名端口,由IANA...

    端口扫描代码 C语言

    在这个场景中,我们关注的是使用C语言编写端口扫描代码。C语言是一种底层、高效的编程语言,非常适合进行网络编程。 首先,我们需要理解端口在TCP/IP协议中的作用。端口是网络通信中的逻辑通道,每个服务或应用通常...

    多线程端口扫描源码(源代码详细注释)

    端口扫描是网络安全领域中的一个常见操作,用于发现远程服务器开放的网络端口,从而评估潜在的安全风险。本文将深入探讨一个多线程端口扫描的实现,特别关注其源代码和详细注释,这对于初学者理解和掌握多线程编程及...

    端口扫描程序的设计与实现.doc

    本程序是在Windows系统中使用C语言用MFC完成的一个端口扫描程序。此程序主要完 成了TCP connect()扫描和UDP扫描功能。TCP扫描支持多线程,能对单个指定的主机进行扫描或对 指定网段内的主机进行逐个扫描。能扫描...

    端口扫描器

    端口扫描器是一种网络工具,主要用于检测特定IP地址范围内开放的网络端口。这个程序的实现结合了网络编程、Qt库以及对端口扫描技术的理解。以下是对这些知识点的详细说明: 1. **网络编程**:网络编程是计算机科学...

    UDP端口扫描工具-Linux

    但本案例中,你提供了一个名为`udp_scan_port`的自编工具,这可能是一个Python脚本或C程序,用于执行特定的UDP端口扫描任务。使用这样的自编工具的好处是可以定制扫描参数,比如扫描速度、端口范围、超时设置等。 ...

    御剑高速全端口扫描工具

    《御剑高速全端口扫描工具:网络安全检测的利器》 在网络安全领域,端口扫描是一种常见的技术手段,用于探测网络设备上开放的服务和端口,以了解网络环境的安全状况。"御剑高速全端口扫描工具"就是这样一款高效、...

    C语言实现 简单的端口扫描

    本段程序是用C语言实现的简单的端口扫描。。O(∩_∩)O~

    C++程序 端口扫描系统的程序设计

    在IT领域,端口扫描是网络安全性评估的重要组成部分,它涉及到网络通信协议的理解以及编程技术的应用。本项目“C++程序 端口扫描系统的程序设计”是一个在C++语言环境下,利用MFC(Microsoft Foundation Classes)库...

    syn-connect.rar_C 端口扫描_connect_syn

    在这个“syn-connect.rar”压缩包中,包含了一个C语言实现的端口扫描程序,它使用了两种不同的扫描技术:SYN扫描和Connect扫描。下面将详细讨论这两种扫描方法及其原理。 首先,让我们了解端口扫描的基本概念。端口...

    C实现UDP端口扫描

    在大多数情况下,当向一个未开放的UDP 端口发送数据时,其主机就会返回一个ICMP不可到达(ICMP PORT UNREACHABLE)的错误,因此大多数UDP 端口扫描的方法就是向各个被扫描的UDP 端口发送零字节的UDP 数据包,如果收到...

    基于C端口扫描器的实现.pdf

    基于C端口扫描器的实现.pdf

    VisualC 实效编程 92 端口扫描

    VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描...

Global site tag (gtag.js) - Google Analytics