[Source]Scanner de portas

Started by gadu, 05 de August , 2008, 12:46:56 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

gadu

Ola pessoal do darkers =)
Sou novo no forum mas ja espero estar contribuindo

Segue abaixo um Scanner de portas feito em C, pode se usar para estudos

Abraços


/* Simples Scanner
Feito por Gadu*/


#include<windows.h>
#include<winsock.h>
#include<conio.h>
#include<stdio.h>


int main()
{





WSADATA data;
struct sockaddr_in sock;
SOCKET winsock;
char ip[256],ip2[256],ip3[256];
int x,num,x2,port;
int portA,portB;
SetConsoleTitle("Scanner de portas");

if(WSAStartup(MAKEWORD(2,2),&data)==SOCKET_ERROR)
{
printf("Erro WSA");
getch();
exit(1);
}

winsock=socket(AF_INET,SOCK_STREAM,0);
if(winsock==-1)
{
printf("Erro ao criar socket");
getch();
exit(1);
}

ini:
system("cls");
printf("Digite sua escolha e de enter");
printf("\n\n(1) Scannear apenas uma porta");
printf("\n(2) Scannear De X porta Para Y (Ex: 120 a 155)");
printf("\n(3) Scannear Todas as portas(Windows)");
printf("\n\n");
scanf("%d",&num);
if(num==1) goto op1;
if(num==2) goto op2;
if(num==3) goto op3;

op1:
   
    system("cls");
    printf("Digite o IP: ");
scanf("%s",&ip2);
printf("\nDigite o numero da porta a scannear: ");
scanf("%d",&port);

sock.sin_family=AF_INET;
sock.sin_port=htons(port);
sock.sin_addr.s_addr=inet_addr(ip2);

if(connect(winsock,(struct sockaddr*)&sock,sizeof(sock))!=-1)
{
printf("\nPorta %d aberta",port);
closesocket(winsock);
WSACleanup();

WSAStartup(MAKEWORD(2,2),&data);
winsock=socket(AF_INET,SOCK_STREAM,0);
}

else printf("\nPorta %d fechada",port);
getch();
goto ini;

op2:
   
    system("cls");
printf("Digite a porta inicial: ");
scanf("%d",&portA);
printf("\nDigite a porta final: ");
scanf("%d",&portB);

if(portA>portB)
{
printf("A porta de inicio nao pode ser maior que a de final");
getch();
goto ini;
}

printf("\nDigite o IP: ");
scanf("%s",&ip3);
printf("\nScaneando da porta %d a porta %d",portA,portB);

for(x2=portA;x2<=portB;x2++)
{


sock.sin_family=AF_INET;
sock.sin_port=htons(x2);
sock.sin_addr.s_addr=inet_addr(ip3);


if(connect(winsock,(struct sockaddr*)&sock,sizeof(sock))!=-1)
{
printf("\nPorta %d aberta",x2);
closesocket(winsock);
WSACleanup();

WSAStartup(MAKEWORD(2,2),&data);
winsock=socket(AF_INET,SOCK_STREAM,0);
}

else printf("\nPorta %d Fechada",x2);

}
getch();
goto ini;






op3:
    system("cls");
printf("Digite o IP do host: ");
scanf("%s",&ip);

for(x=0;x<65500;x++)
{

sock.sin_family=AF_INET;
sock.sin_port=htons(x);
sock.sin_addr.s_addr=inet_addr(ip);

if(connect(winsock,(struct sockaddr*)&sock,sizeof(sock))!=-1)
{
printf("\nPorta %d aberta",x);
closesocket(winsock);
WSACleanup();

WSAStartup(MAKEWORD(2,2),&data);
winsock=socket(AF_INET,SOCK_STREAM,0);
}


else printf("\nPorta %d fechada",x);





}


printf("\n\nScan terminado");
getch();

}






















blackwinner

Hmmm, legal =]
O angus vai te mata se te pega usando goto's novamente ;D kkk
sergaralho.blogspot.com --> a informação como ela deve ser.. pura!