Jump to content
!_30

Port scanner

Recommended Posts

Posted

O aplicatie utila , prin care se poate intelege , mai bine, lumea " SOCKETI-lor" : PORT SCANNER : .

Voi prezenta mai jos , o aplicatie simplista , care foloseste socketi ( UNIX ) , pentru a testa ce poturi are deschise ( intre 0-65000) un computer ( localhost & remote ).

Pe localhost le afiseaza in minim o secunda , insa daca veti incerca sa introduceti IP-ul unui PC remote , timpul se va "mari" super considerabil . ( De ce ? aplicatia este simpla , nu dispune de timeout , pentru a nu mai astepta in zadar si alte cele ) . Principiul este excelent pentru a intelege cum functioneaza SOCKET-urile. ( daca sunteti atenti ).

In interiorul porgramului voi oferi si niste explicatii utile.

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

int main(int argc, char **argv ){

int sc;

int i;

char IP[100];

printf("Provide IP for scann : "); /* se cere IP-ul care va fi scanat ( de porturi ) , incercati IP-ul de pe computerul local */

scanf("%s",&IP);

printf(" n Scanning nn");

for(i=0;i<65535;++i) /* o structura repetitiva , de la 0-65000 , se conecteaza pe rand la fiecare dintre aceste porturi , pentru a le verifica starea : deschis / inchis */

{

struct sockaddr_in server;

sc = socket(AF_INET, SOCK_STREAM,0); /* se declara socketul client */

server.sin_family = AF_INET; /* familia acestuia , aici AF_INET , pentru comunicarea pe Internet : TCP/IP*/

server.sin_addr.s_addr = inet_addr(IP); /* IP-ul care se doreste a fi scanat , la care se va face conexiunea , pe fiecare port in parte */

server.sin_port = htons(i); /* portul care va fi scanat , repetitiv de la 0-65000 */

if( connect(sc, (struct sockaddr *)&server, sizeof(server)) < 0 )

/* ne conectam la fiecare port in parte , connect () , acesta returnand o valoare negativa daca nu e deschis si pozitiva daca este */

{ }

else{

printf(" : Open " ); /* Daca valoarea nu e negativa , portul e deschis si se afiseaza corespunzator */

printf(" %d : n",i);

}

}

close(sc); /* se inchide socketul client */

return 0; /* se inchide functia main , returnandu-se 0 */

}

Sper ca programul a fost cat de cat util.( Este demonstrativ si poate contine erori , putand fi optimizat ).

Cheer's !

:banghead:

Posted

Codul a fost modificat . Nici nu am observat , de ce codul s-a copiat incorect.La-m scos dupa un shell din SSH si vad ca a luat hedearele incorect pe forum.

Acum e corectat . Din cauza explicatiilor ( incluzand si taguri , a aparut eroarea ).

In rest codul este corect. :@

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...