`

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 数据包,如果收到...

    御剑高速tcp全端口扫描工具

    主要是采用了.NET中的异步模型加事件通知(俗称IOCP),可能涉及到重复造轮子的嫌疑,但是确实要比很多端口扫描程序的速度要快上很多,因为没有采用多线程,相对来说线程占用不多,所以内存控制的还算比较不错!...

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

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

Global site tag (gtag.js) - Google Analytics