Пример простого сканера портов для запуска сканирования надо запустить программу с ключем (напр из камандной строки) который и должен быть 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; }
|