PortScanner

Пример простого сканера портов для запуска сканирования надо запустить программу с ключем (напр из камандной строки) который и должен быть IP адресом сканируемого компьютера например: portscan.exe 127.0.0.1 для поиска открытых портов программ пробует подключиться к портам начиная с значения переменной cnt и заканчивая значением ports (1...65535)
#include <iostream.h>
#include <stdio.h>
#include <winsock2.h>
#include <stdlib.h>
int cnt = 1, ports=65535;//65535
int main(int argc, char *argv[])
{
int sock;
char *ipadres="";
printf("simple PORT SCANNER");


if(argc<2)
{
printf("\nRun programm with IP key !!!");
return -1;
}else{
strcpy(ipadres,argv[1]);}

printf("\n\a ip - %s \n SCANNING...", ipadres);

WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
printf("\n\aCould not find WinSock DLL");
getchar();
return -1;
}

struct sockaddr_in addr;
memset(&addr,0,sizeof(addr));
addr.sin_family = AF_INET;
unsigned long s_adr = inet_addr(ipadres);
if (s_adr == INADDR_NONE)
{
WSACleanup();
getchar();
return -1;
}
addr.sin_addr.s_addr = s_adr;

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sock == INVALID_SOCKET )
{
err = WSAGetLastError();
printf("SOCKET ERROR, ERROR NUM: %d",err);
getchar();
WSACleanup();
return -1;
}

for(cnt=cnt; cnt <= ports; cnt++)
{
addr.sin_port = htons(cnt);
if(connect(sock, (struct sockaddr*)&addr, sizeof(addr)) == 0)
{
printf("\n\aconnected to %d -PORT OPEN\n\a",cnt);
}else{
//printf("\n%d -PORT CLOSED\n",cnt);

}
}
closesocket(sock);
WSACleanup();
printf("\n\a SCANNED %d OK !!!",ports);
getchar();
return 0;
}
 
« Предыдущая статья