Password Detector

  

bajo Win2000 /XP /2003 En Win98, para el cuadro de contraseña de otros programas, podemos usar la función SendMessage para obtener el contenido de este cuadro de contraseña para el próximo comando WM_GETTEXT en este cuadro de contraseña. Pero desde el año 2000, la conciencia de seguridad de Microsoft parece ser un poco más fuerte. Use este comando para ventanas normales, pero no funciona para el cuadro de contraseña.

Hay muchos programas similares que se obtienen al crear una biblioteca de enlaces dinámicos, pero es demasiado problemático. De hecho, tenemos un enfoque más simple. Eso es para darle el siguiente comando, eliminar las propiedades de su cuadro de contraseña, luego obtener su contenido y finalmente restaurar las propiedades de su cuadro de contraseña.

{
artículo: Win2000 /XP /2003 bajo asterisco detector de contraseña
Autor: Huang Tao [email protected]
Fecha: 18 Enero de 2004
}
unit uPassword;

interface

usa
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls; Br>

escriba
TfrmPassword = class (TForm)
edPassword: TEdit; //Muestra el cuadro de texto de la contraseña
Timer1: TTimer; //Timer
procedure Timer1Timer (Sender: TObject);
privado
{Declaraciones privadas}
público
{Declaraciones públicas}
fin;

var
frmPassword: TfrmPassword;

implementación < Br>

{$ R * .dfm}

procedimiento TfrmPassword.Timer1Timer (Sender: TObject);
var s: pchar;
i, n: integer;
p: Tpoint; h: integer;
c: integer;
begin
getcursorpos (p); //obtiene la posición del cursor actual
h: = windowfrompoint (p); //Cuando el cursor al control de la ventana
n: = getwindowlong (h, GWL_STYLE); //tome las propiedades de la ventana
if (n y $ 20) < > 0 luego begin //determine si es una contraseña Casilla
c: = sendMessage (h, EM_GETPASSWORDCHAR, 0, 0);
//Obtiene el carácter actual de la casilla de la contraseña como '' * '', etc.
PostMessage (h, EM_SETPASSWORDCHAR, 0,0);
//Establecer que el carácter del cuadro de contraseña esté vacío, es decir, eliminar el atributo de contraseña del cuadro de contraseña,

//Esto debe usar PostMessage, pero no puede usar SendMessage, este último no es válido
i: = enviar mensaje (h, WM_GETTEXTLENGTH, 0,0); inc (i);
//Obtener la longitud de la cadena de contraseña
getmem (s, i); //asignar memoria
enviar mensaje (h, WM_GETTEXT, i, longint (s); //obtener la cadena de contraseña
edPassword.Text: = s; //coloca la contraseña en el cuadro de texto
postMessage (h, EM_SETPASSWORDCHAR, c, 0); //restore El atributo de contraseña original
freemem (s); //release memory
end;
end;

end.

Este programa está en Window Server 2003, Delphi 7.0 Compilado bajo Enterprise. Sin embargo, este programa solo es válido para programas que no están protegidos, como QQ ganme, etc., pero todavía no hay forma de que algunos programas lo eviten. Por ejemplo, el cuadro de contraseña de QQ2004 Beta es inútil. Se puede ver que la seguridad del cuadro de contraseña de Win2000 /XP /2003 también es relativa. Si desea estar seguro, debe encontrar su propio camino.

Copyright © Conocimiento de Windows All Rights Reserved