Mass whois

Egyszer régen írtam egy windows scripet -> mert éppen szükségem volt RÁ ->

Szóval, mit is csinál ez .bat ?



::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: MASS WHOIS -> by peter
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off

if "%1" == "" goto exit   // chiao

echo whois -h whois.ripe.net -r %1.0.0.0 >temp.bat
::echo whois -h whois.ripe.net -r 81.154.128.0 >temp.bat

time /t >#.%1

if exist #unlucky-a.%1 del #unlucky-a.%1
if exist #AGAIN.%1 del #AGAIN.%1

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:l

call temp.bat >#

t.exe #.%1 #unlucky-a.%1

if errorlevel 1 goto exit

goto l

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:exit

time /t >>#.%1

t.exe -p #.%1 #ip-block-a.%1

::***del #.%1

::if exist # del #
::if exist temp.bat del temp.bat

echo * EXIT *

echo.


- - -

Ja és, hogy mi a t.exe - - ->

//-----------------------------------------------------------------------------
// by peter
//-----------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <conio.h>
#include <fcntl.h>

#define YES     1
#define NO      0

typedef struct ip {
    short   a;
    short   b;
    short   c;
    short   d;
} IP;

    char    buffer[1024];
    char    inetnum[1024];

    char*   ptr;
    char    ch;

short ParseIP(IP* ,char* );
unsigned char* SpacePull(unsigned char* );

//-----------------------------------------------------------------------------

void main(int argc,char *argv[])
{
    FILE*   istream;
    FILE*   ostream;
    FILE*   astream;

    IP   ip;

//---------------------------------------------------------------------------

   if(_kbhit())         // break key pressed
       exit(1);
/*
% This is the RIPE Whois server.
% Rights restricted by copyright.
% See http://www.ripe.net/ripencc/pub-services/db/copyright.html

inetnum:      62.0.4.0 - 62.0.4.255
netname:      NV-GILAT
descr:        Gilat Satelite Networks.
country:      IL
admin-c:      ES10255-RIPE
tech-c:       NN105-RIPE
status:       ASSIGNED PA
mnt-by:       NV-MNT-RIPE
changed:      noc-team@netvision.net.il 20010606
source:       RIPE

route:        62.0.0.0/16
descr:        Netvision
descr:        Omega Bldg.
descr:        MATAM industrial park
descr:        Haifa 31905
descr:        Israel
origin:       AS1680
mnt-by:       NV-MNT-RIPE
changed:      barak@netvision.net.il 19981020
source:       RIPE
*/

    if((argc == 4) && (strcmp(argv[1],"-p") == 0)){
        MakeSimpleOutput(argv[2],argv[3]);
        exit(1);
    }

    if(argc != 3)
        exit(1);

//---------------------------------------------------------------------------

    if((istream = fopen("#","rb")) == NULL)
        exit(1);

    if((astream = fopen(argv[1],"ab")) == NULL)     // #.%1
        exit(1);

    inetnum[0] = 0;

    ptr = buffer;

    while(!feof(istream)){
        ch = fgetc(istream);

        if(ch == 10){
            *--ptr = 0;
            ptr = buffer;

            if(strstr(buffer,"inetnum:")){
                strcpy(inetnum,buffer);
/*
inetnum:      62.0.0.0 - 62.255.255.255
descr:        RIPE NCC
descr:        European Regional Registry
country:      EU
admin-c:      SAWA1-RIPE
*/
                if(strstr(inetnum,".255.255.255")){  // DONT PRINT THIS KIND OF RECORDS
                    ostream = fopen(argv[2],"ab");   // #unlucky-a.%1
                    fprintf(ostream,"+");
                    fclose(ostream);

                    break;
                }

                fprintf(astream,"%s\r\n",buffer);
            }

            if(strstr(buffer,"netname:"))
                fprintf(astream,"%s\r\n",buffer);

            if(strstr(buffer,"descr:"))
                fprintf(astream,"%s\r\n",buffer);

            if(strstr(buffer,"country:"))
                fprintf(astream,"%s\r\n",buffer);

            if(strstr(buffer,"admin-c:")){
                fprintf(astream,"%s\r\n\r\n",buffer);
                break;
            }

            if(strstr(buffer,"route:"))
                break;
        }
        else
            *ptr++ = ch;
    }

    fclose(astream);
    fclose(istream);

    if(strlen(inetnum) == 0){
        printf("* NO ANSWER, DO IT AGAIN *\n");

        ostream = fopen("#AGAIN","ab");
        fprintf(ostream,"+");
        fclose(ostream);

        exit(0);                // normal exit ! run the same temp.bat again
    }

//---------------------------------------------------------------------------
// inetnum:      80.98.8.0 - 80.98.8.255

    if((ptr = strstr(inetnum,"-")) == NULL)
        exit(-1);

    ptr += 2;

    ParseIP(&ip,ptr);

    printf("> LAST END [%u.%u.%u.%u]",ip.a,ip.b,ip.c,ip.d);

//---------------------------------------------------------------------------
// STEP THE IP ADDR WITH +1

l1:
    if(ip.d == 255){
        ip.d = 0;
        
        if(ip.c == 255){
            ip.c = 255;

            if(ip.b == 255){
//
// check that we really riched the end, or just have to step one level ?
//
// temp.bat
// whois.exe -h whois.ripe.net -r 62.3.192.0
//
                istream = fopen("temp.bat","rb");
                fread(inetnum,1,80,istream);
                fclose(istream);

                if((ptr = strstr(inetnum,"-r")) == NULL)
                    exit(-1);

                ptr += 2;
                ParseIP(&ip,ptr);

                if(ip.b == 255)     // END OF CLASS A ?
                    exit(1);        // NORMAL EXIT

                ip.d = 255;

                printf("\r> * UNLUCKY *");
                goto l1;
            }
            else{
                ip.c = ip.d = 0;
                ip.b++;
            }
        }
        else{
            ip.d = 0;
            ip.c++;
        }
    }
    else{
        ip.d++;
    }

    printf(" NEXT START [%u.%u.%u.%u]\n",ip.a,ip.b,ip.c,ip.d);

//---------------------------------------------------------------------------
// save temp.bat

    if((ostream = fopen("temp.bat","wb+")) == NULL){
        fclose(istream);
        exit(1);
    }

    fprintf(ostream,"whois.exe -h whois.ripe.net -r %u.%u.%u.%u\n",ip.a,ip.b,ip.c,ip.d);

//---------------------------------------------------------------------------

    fclose(istream);
    fclose(ostream);
}


short ParseIP(IP* ip,char* ptr)
{
    char*   p;

    ip.a = ip.b = ip.c = ip.d = 0;

    if((p = strstr(ptr,".")) == NULL)
        return(-1);

    ip.a = atoi(ptr);
    ptr = p + 1;

    if((p = strstr(ptr,".")) == NULL)
        return(-2);

    ip.b = atoi(ptr);
    ptr = p + 1;

    if((p = strstr(ptr,".")) == NULL)
        return(-3);

    ip.c = atoi(ptr);
    ptr = p + 1;

    ip.d = atoi(ptr);

    return(0);
}

unsigned char* SpacePull(unsigned char* buffptr)
{
    unsigned char    c;
    unsigned char*   ptr;
    
    ptr = buffptr;

    while(c = *buffptr){
        if(c == '['){
            if(*(buffptr+1) == ' '){
                buffptr++;
                goto l1;
            }
        }

        if(c == ' '){
            if((*(buffptr+1) == ' ') || (*(buffptr+1) == ']')){
l1:                 strcpy(buffptr,buffptr + 1);
                continue;
            }

            if(*(buffptr+1) == 0){
                *buffptr = 0;
                continue;
            }
        }

        buffptr++;
    }

    if(*ptr == ' ')
        strcpy(ptr,ptr + 1);

    return(ptr);
}


MakeSimpleOutput(char* infile, char* outfile)  // EXCEL
{
    FILE*   istream;
    FILE*   ostream;

    short   country_flag;

    if((istream = fopen(infile,"rb")) == NULL)
        exit(1);

    if((ostream = fopen(outfile,"wb")) == NULL)
        exit(1);

    printf("\nConvert %s to %s\n",infile,outfile);

    ptr = buffer;

    while(!feof(istream)){
        ch = fgetc(istream);


        if(ch == 0x0D || ch == 0x0A){
            ch = fgetc(istream);

            if(ch != 0x0A && ch != 0x0D)
                ungetc(ch,istream);

            *ptr = 0;

            ptr = buffer;

            if(strlen(buffer) < 3)
                continue;
/*
193.6.22.0 - 193.6.22.255 (MTA-CSKI) Konkoly Observatory of the Hungar
    ian Academy of Sciences; MTA Csillagaszati Kutatointezet; HU

inetnum:      62.112.192.0 - 62.112.192.63
netname:      ENTERNET
descr:        Enternet main servers and routers
country:      HU
*/
            if(strstr(buffer,"inetnum:")){
                fprintf(ostream,"%s",buffer + 14);
                country_flag = NO;
            }

            if(strstr(buffer,"netname:"))
                fprintf(ostream," (%s)",buffer + 14);

            if(strstr(buffer,"descr:"))
                fprintf(ostream,"; %s",buffer + 14);

            if(strstr(buffer,"country:")){
                if(country_flag)
                    fprintf(ostream,"/%s",buffer + 14);
                else
                    fprintf(ostream,"; %s",buffer + 14);

                country_flag = YES;
            }

            if(strstr(buffer,"admin-c:"))
                fprintf(ostream,"\n");      // EOL

        }
        else
            *ptr++ = ch;
    }

    fclose(istream);
    fclose(ostream);
    return(0);
}


Copyright (c) Hungarian Unix Portal

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GP d- s++: a C++ UL+++ P+ L++ E--- W N+ o+ K++ w++
O M- V- PS+ PE- Y+ PGP t+@ 5 X+ R- tv+ b+++ DI-- D-
G e h r z+
------END GEEK CODE BLOCK------