!_30 Posted October 1, 2006 Report Posted October 1, 2006 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: Quote
HackGirl Posted October 1, 2006 Report Posted October 1, 2006 La mine codul are o eroare: sys : Permission denied. Cu ce poate fi inlocuit, sau cum sa activez accesul la sys? Quote
!_30 Posted October 1, 2006 Author Report Posted October 1, 2006 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. :@ Quote