C++ 端口扫描器代码详解及使用教程
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;
}
编译和运行
该代码需要在终端中编译和运行,步骤如下:
- 打开终端,进入代码所在的目录。
- 输入以下命令来编译代码:
g++ -o portscanner portscanner.cpp
- 输入以下命令来运行代码:
./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 之间的每个端口,并输出哪些端口是开放的。
原文地址: https://www.cveoy.top/t/topic/nw1p 著作权归作者所有。请勿转载和采集!