⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scan程序.txt

📁 可以对黑客编程有一定的了解
💻 TXT
📖 第 1 页 / 共 2 页
字号:


{


    MessageBox(NULL,msg,"ERROR",0);


    //printf("\n%s failed:%d",GetLastError());


}


//////////////////////////////////////////////////////////////////////////


//


//重置光标位置函数,以便扫描线程输出结果


//


BOOL ResetCursor()


{


    CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo;


    //取得当前光标位置


    if(!GetConsoleScreenBufferInfo(hStdout,&ConsoleScreenBufferInfo))


    {


       ShowError("GetConsoleScreenBufferInfo");


        return FALSE;


    }


    //设置光标X坐标为0


    ConsoleScreenBufferInfo.dwCursorPosition.X=0;


    //设置当前光标位置


    SetConsoleCursorPosition(hStdout,ConsoleScreenBufferInfo.dwCursorPosition);


    return TRUE;


}


///////////////////////////////////////////////////////////////////////////


//


//显示进度信息函数


//


DWORD WINAPI ShowProInfo(LPVOID lp)


{  


    int j,k;


    CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo;


    float m;


    for(j=0;ii<iTotal;j++)


    {


        //休息一会儿:)))


       Sleep(SleepTime);


        //取得当前光标位置


       if(!GetConsoleScreenBufferInfo(hStdout,&ConsoleScreenBufferInfo))


        {


            ShowError("GetConsoleScreenBufferInfo");


            return 1;


        }


        //设置百分比进度显示的X坐标


       ConsoleScreenBufferInfo.dwCursorPosition.X=0;


        //设置当前光标位置


       SetConsoleCursorPosition(hStdout,ConsoleScreenBufferInfo.dwCursorPosition);


        //已经完成的百分比


       m=(ii+1)*100.00/iTotal;


        //显示进度


       if(ii==iTotal)


        {


            printf("******** 100%% Wait %d seconds to exit ********        \n",iConnTimeout);


            break;


        }


        else


        {


            k=j%4;


            printf("%-15s %s [%d/%d] %s %%%0.3g",CurrentTarget,turn[k],ii,iTotal,turn[k],m);


        }


    }//end of for


    return 0;


}


///////////////////////////////////////////////////////////////////////////


//


//扫描函数


//


DWORD WINAPI scan(LPVOID lp)


{


    int i=(int)lp,iErr;


    struct sockaddr_in server;


    SOCKET s=INVALID_SOCKET;


    char RecvBuff[1024]={0},*ptr;


    int RecvBuffLen=sizeof(RecvBuff);


    u_long ul=1;//初始化为为非0值


  fd_set r,w;


 


    //create socket


    s=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);


    if(s==INVALID_SOCKET)


    {


       printf("\nCreate socket failed:%d",GetLastError());


       ExitProcess(1);


    }


    //fill the addr struct


    server.sin_family=AF_INET;


    server.sin_port=htons(iPort);


    server.sin_addr.S_un.S_addr=htonl(i);


    __try


    {


        //设置socket为非锁定模式,ul为0值的话,那么soocket将被设置为锁定模式


       iErr=ioctlsocket(s,FIONBIO,(unsigned long*)&ul);


       if(iErr==SOCKET_ERROR )


        {


            ResetCursor();


            ShowError("ioctlsocket");


            ExitProcess(1);


        }


       //printf("\n%X ioctl ok.strat conn",i);


       //connect to target


       connect(s,(struct sockaddr *)&server,sizeof(server));


       //printf("\n%X conn return,start select w",i);


        //设置select参数


       FD_ZERO(&w);


       FD_SET(s, &w);


        //等待connect成功&socket可写


       iErr=select(0, 0, &w, 0, &timeout);


       //printf("\n%X select w return %d",i,iErr);


        //等待返回后,socket仍不可写则退出


       if((iErr==SOCKET_ERROR) || (iErr==0))


        {


            //printf("\n%X select return w err,exit",i);


            __leave;


        }


       //socket可写则继续


        else


        {


            //send buff to target


            //printf("\n%X send",i);


            iErr=send(s,SendBuff,SendBuffLen,0);


            //printf("\n%X send return",i);


            if(iErr==SOCKET_ERROR)


              __leave;


        }


        //等待socket可读


       FD_ZERO(&r);


       FD_SET(s, &r);


       //printf("\n%X start select r",i);


       iErr=select(0, &r, 0, 0, &timeout);


       //printf("\n%X select r return %d",i,iErr);


       if((iErr==SOCKET_ERROR) || (iErr==0))


        {


            //printf("\n%X select r err,exit",i);


            __leave;


        }


        else


        {


            //recv buff from target


            //printf("\n%X start recv",i);


            iErr=recv(s,RecvBuff,RecvBuffLen,0);


            //printf("\n%X recv ret",i);


            if(iErr==SOCKET_ERROR)


              __leave;


        }


       //verify buff


       ptr=strstr(RecvBuff,szSign);


       if(ptr!=NULL)


        {


           //线程输出前要先调用ResetCursor函数


            ResetCursor();


           //输出信息后务必加一个以上换行符号,输出前请别加换行符号,以免显示混乱


            printf("[%-15s] has .printer mapped.         \n",inet_ntoa(server.sin_addr));


        }


    }


    __finally


    {


       if(!ReleaseSemaphore(hSemaphore,1,NULL))


            ShowError("thread ReleaseSemaphore failed");


       closesocket(s);


    }


    return 0;


}


///////////////////////////////////////////////////////////////////////////


void usage(char *proname)


{


    printf("\n%s v0.1 only can find IIS5 .Printer mapped"


       "\nPower by ey4s<ey4s@21cn.com> 2001.5.20"


       "\nhttp://www.patching.net"


       "\n\nUsage:%s <StartIP> <EndIP> <ThreadNum> <CONNTIMEO>"


       "\n\nNotice"


        "\n    StartIP StopIP ==>Don't forgot StopIP must large than StartIP "


        "\n    ThreadNum ==>Thread number,please input between 1-500"


        "\n    CONNTIMEO ==>TCP connect timeout,please input between 2-6"


       "\n\nExample"


        "\n    %s 192.168.0.0 192.168.255.255 200 2",proname,proname,proname);


}


   程序在VC++6.0上编译通过,在

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -