Red de conocimientos turísticos - Información de alquiler - Acerca del principio de visualización de asteriscos

Acerca del principio de visualización de asteriscos

Esta pregunta es muy profesional y pertenece a un problema de programación de software. Puede echar un vistazo a lo siguiente: Casi todo el software ha manipulado el cuadro de entrada de contraseña de usuario para que la contraseña ingresada por el usuario se muestre como un asterisco "*". para que personas malintencionadas no puedan El usuario ve la contraseña directamente. Sin embargo, existen muchas versiones de visores de contraseñas de asteriscos en Internet que pueden restaurar asteriscos a contraseñas reales. Escribí el código fuente de Star Viewer basándome en algunas de mis propias ideas y tomé algunas precauciones basadas en sus principios. Los programas escritos con este código fuente pueden verificar las contraseñas de versión baja de muchos software como popo, msn, qq, etc. Si los usuarios usan VC, VB, BCB para escribir software y usan directamente el componente Editar o Texto, también pueden restaurar sus contraseñas reales a través de este código. Sin embargo, el uso de este software modificado, el uso de passxp que circula en Internet y los métodos de visualización anteriores no son válidos. Bien, vayamos al grano. En primer lugar, el principio del visor de asteriscos es que hay un atributo "PasswordChar" en el componente Editar o Texto. Generalmente configuramos este atributo para ocultar la contraseña real como un asterisco, pero volverán después de recibir el mensaje EM_GETPASSWORDCHAR. El valor de su atributo PasswordChar se modificará después de recibir el mensaje EM_SETPASSWORDCHAR. Por supuesto, también puede cancelar la configuración "*" original para que muestre caracteres reales y luego enviarle un mensaje WM_GETTEXT para obtener su contraseña real. Los visores de contraseñas de asterisco se basan en este principio. El código clave es el siguiente (tomando BCB como ejemplo): void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

POINT P;

::GetCursorPos( &P);//captura la posición de la pantalla del mouse

/Obtiene la posición del mouse debajo del identificador de la ventana

HWND HWnd = ::WindowFromPoint(P);

/ /Enviar un mensaje "Obtener cadena de título" a esta ventana

char buffer[100];char Char;

Char = SendMessage (HWnd,EM_GETPASSWORDCHAR,0, 0);// obtener el carácter de la contraseña

PostMessage (HWnd,EM_SETPASSWORDCHAR,0,0);//cancelar el carácter de la contraseña

Sleep (60);

Esta ventana envía el mensaje "Obtener cadena de título". Enviar mensaje (HWnd,WM_GETTEXT,255,long(buffer));Obtener la contraseña real

PostMessage (HWnd,EM_SETPASSWORDCHAR,Char,0);Restaurar el carácter de contraseña // aparece en el objeto String en la ventana Form1

Caption = buffer;

}Aquí se utiliza un temporizador para llamar al código anterior cada 100 milisegundos. Podemos ver que hay varios mensajes que están rompiendo nuestro juego. Si podemos enmascarar esta información, podemos ocultar de forma segura la contraseña real. Hay muchas formas de bloquear información en Internet, pero todas son demasiado complicadas. Mi opinión es la siguiente: 2. Evitar el visor de contraseñas con asterisco Podemos derivar un nuevo componente de TEdit llamado TBugEyesEdit y luego modificar su definición de mensaje.

Agregue el siguiente código al archivo de encabezado: public:

__fastcall TBugEyesEdit(TComponent* Owner);

void __fastcall BugEyes(TMessage &Msg); //personaliza la función del controlador de mensajes

p >

BEGIN_MESSAGE_MAP //sombreado de mensajes

VCL_MESSAGE_HANDLER(EM_GETPASSWORDCHAR,TMessage,BugEyes)

VCL_MESSAGE_HANDLER(WM_GETTEXT.TMessage,BugEyes)

VCL_MESSAGE_HANDLER(EM_SETPASSWORDCHAR , TMessage,BugEyes)

END_MESSAGE_MAP(TEdit) //Finalizar el seguimiento del mensaje Luego agregue el siguiente código en su archivo cpp. El siguiente código: void __fastcall TBugEyesEdit::BugEyes(TMessage &Msg)

{

Msg.Result =0;

}Finalmente, instale este nuevo componente y Agréguelo a su propio programa, establezca su propiedad PasswordChar en "*" y luego ejecute el programa. El visor de contraseñas de asterisco se desactivará y ya no podrá ver la contraseña real.