This shows you the differences between two versions of the page.
| — |
c:examples:hostscanner [2024/02/16 01:05] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | <code c> | ||
| + | #include <stdio.h> | ||
| + | #include <sys/types.h> | ||
| + | #include <sys/socket.h> | ||
| + | #include <netinet/in.h> | ||
| + | #include <netdb.h> | ||
| + | #include <arpa/inet.h> | ||
| + | #define fir 16777216 | ||
| + | #define sec 65536 | ||
| + | #define the 256 | ||
| + | int s; | ||
| + | struct sockaddr_in addr; | ||
| + | char rmt_host[100]; | ||
| + | int skan(port) | ||
| + | int port; | ||
| + | { | ||
| + | int r; | ||
| + | s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); | ||
| + | if (s < 0) { | ||
| + | printf("ERROR: socket() failed\n"); | ||
| + | exit(0); | ||
| + | } | ||
| + | |||
| + | addr.sin_family = PF_INET; | ||
| + | addr.sin_port = htons(port); | ||
| + | addr.sin_addr.s_addr = inet_addr(rmt_host); | ||
| + | |||
| + | r = connect(s,(struct sockaddr *) &addr, sizeof(addr)); | ||
| + | |||
| + | close(s); | ||
| + | if (r==-1) { | ||
| + | return (1 == 0); | ||
| + | } | ||
| + | |||
| + | return (1 == 1); | ||
| + | } | ||
| + | |||
| + | main(argc,argv) | ||
| + | int argc; | ||
| + | char *argv[]; | ||
| + | { | ||
| + | int a,b,c,d,e,f,w; | ||
| + | struct hostent *foo,*rechner; | ||
| + | struct servent *bar; | ||
| + | struct in_addr gesamt_ip; | ||
| + | int i1,i2,i3,i4; | ||
| + | unsigned long x,an; | ||
| + | FILE *savefile; | ||
| + | w=0; | ||
| + | if (argc < 2) { | ||
| + | fprintf(stderr,"usage: %s <start IP> <number to scanning IP's>\n",argv[0]); | ||
| + | exit(0); | ||
| + | } | ||
| + | inet_aton(argv[1],&gesamt_ip); | ||
| + | sscanf(argv[1],"%d.%d.%d.%d",&i1,&i2,&i3,&i4); | ||
| + | sscanf(argv[2],"%lu",&an); | ||
| + | printf("Start IP: %s - number to scanning IP's: %lu\n\n",inet_ntoa(gesamt_ip),an); | ||
| + | for(x=0;x<an;x++) | ||
| + | { | ||
| + | foo = gethostbyname(inet_ntoa(gesamt_ip)); | ||
| + | rechner =gethostbyaddr((char *) &gesamt_ip, sizeof(gesamt_ip), AF_INET); | ||
| + | printf("Scanning %s ...",inet_ntoa(gesamt_ip)); | ||
| + | if (rechner == NULL) { | ||
| + | fprintf(stderr,"[0;31mNot aviable[0;28m\n"); | ||
| + | } | ||
| + | if (rechner != NULL){ | ||
| + | savefile=fopen("hosts","a+"); | ||
| + | fprintf(savefile,"OK-Domain: %s (%d.%d.%d.%d)\n",rechner->h_name ,(unsigned char )foo->h_addr_list[0][0], | ||
| + | (unsigned char ) foo->h_addr_list[0][1], | ||
| + | (unsigned char ) foo->h_addr_list[0][2], | ||
| + | (unsigned char ) foo->h_addr_list[0][3]); | ||
| + | printf("[0;32mOK[0;28m-Domain: %s",rechner->h_name); | ||
| + | fclose(savefile); | ||
| + | } | ||
| + | sprintf(rmt_host,"%d.%d.%d.%d",(unsigned char )foo->h_addr_list[0][0], | ||
| + | (unsigned char ) foo->h_addr_list[0][1], | ||
| + | (unsigned char ) foo->h_addr_list[0][2], | ||
| + | (unsigned char ) foo->h_addr_list[0][3]); | ||
| + | printf("\n"); | ||
| + | i4=i4+1; | ||
| + | gesamt_ip.s_addr=gesamt_ip.s_addr+fir; | ||
| + | if (i4 == 256) | ||
| + | {i4=0;i3=i3+1;w=3;gesamt_ip.s_addr=gesamt_ip.s_addr+sec;} | ||
| + | if (i3 == 256) | ||
| + | {i3=0;i2=i2+1;w=2;gesamt_ip.s_addr=gesamt_ip.s_addr+the;} | ||
| + | if (i2 == 256) | ||
| + | {i2=0;i1=i1+1;w=1;gesamt_ip.s_addr=gesamt_ip.s_addr+1;} | ||
| + | if (i1 == 256) | ||
| + | {exit(0);} | ||
| + | |||
| + | } | ||
| + | } | ||
| + | </code> | ||