C++ 端口扫描器代码详解及使用教程

这段代码是一个简单的 C++ 端口扫描器,用于扫描指定 IP 地址上的一系列端口是否开放。

//./portscanner <IP Address> <Start Port> <End Port>

#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>

using namespace std;

void scan_port(const char* ipAddress, int port) {
    int sock = -1;
    struct sockaddr_in target;

    memset(&target, 0, sizeof(target));
    target.sin_family = AF_INET;
    target.sin_addr.s_addr = inet_addr(ipAddress);
    target.sin_port = htons(port);

    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0) {
        cerr << 'Failed to create socket' << endl;
        return;
    }

    int status = connect(sock, (struct sockaddr *)&target, sizeof(target));
    if (status == 0) {
        cout << 'Port ' << port << ' is open' << endl;
    } else {
        // Handle error or ignore
    }

    close(sock);
}

int main(int argc, char *argv[]) {
    if (argc != 4) {
        cerr << 'Usage: ' << argv[0] << ' <IP Address> <Start Port> <End Port>' << endl;
        return 1;
    }

    const char *ipAddress = argv[1];
    int startPort = atoi(argv[2]);
    int endPort = atoi(argv[3]);

    for (int port = startPort; port <= endPort; port++) {
        scan_port(ipAddress, port);
    }

    return 0;
}

编译和运行

该代码需要在终端中编译和运行,步骤如下:

  1. 打开终端,进入代码所在的目录。
  2. 输入以下命令来编译代码:
g++ -o portscanner portscanner.cpp
  1. 输入以下命令来运行代码:
./portscanner <IP Address> <Start Port> <End Port>

其中,<IP Address> 是需要扫描的 IP 地址,<Start Port><End Port> 是需要扫描的端口范围。

使用示例

例如,扫描 192.168.1.1 上的端口从 80 到 100:

./portscanner 192.168.1.1 80 100

该代码会尝试连接 192.168.1.1 上的 80 到 100 之间的每个端口,并输出哪些端口是开放的。

C++ 端口扫描器代码详解及使用教程

原文地址: https://www.cveoy.top/t/topic/nw1p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录