系统环境:Windows 10 64-bit
开发环境:vs2017
这是一个简单的基于完全连接的主机端口扫描器,原理很简单,创建套接字的时候与主机指定端口进行连接,连接成功则目的端口开放,否则未开放。
优点:实现简单
缺点:很容易被发现,导致检测报文被拦截,扫描结果出错。
#include <stdio.h>
#include <winsock.h>
#include <windows.h>
#pragma comment(lib,"ws2_32")
void usage(char *prog)
{
printf("Usage:%s 127.0.0.1 1 65535\n", prog);
printf("%s IP StartPort EndPort\n", prog);
}
int main(int argc, char *argv[])
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
if (argc != 4)
{
usage(argv[0]);
return -1;
}
WSADATA wsa;
//初始化socket版本
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
{
printf("Winsock Dll init failed!\n");
return -1;
}
//定义当前端口和计数器
int nowport, count = 0;
int startport = atoi(argv[2]);
int endp