Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Obtener password de un formulario web

Hola amigos, hace varios dias estoy con esto y no lo puedo resolver. Estoy desarrolando mi aplicación dentro de la cual tengo un WebBrowser. Los usuarios se loguean en él a mi servidor.

Estaba pensando intentar de cifrar los datos antes de enviarlo, entonce la idea es tomar el password y modificarlo y reenviar la peticion de pagina web.

He logrado tomar los datos del formulario de varias formas, pero el problema es que el password siembre lo recibo como *****.

Como puedo ver el valor verdadero?

Obtuve el valor haciendo uso de IHTMLElement.
Tambien usando OleObject desde el fromulario antes de enviar el submit y tambien al enviar la petición en el evento WebBrowserBeforeNavigate2, capturando el PostData.

Siempre con el mismo resultado.

alguna sugerencia?
__________________
[Crandel]

Última edición por Crandel fecha: 08-09-2006 a las 00:31:19.
Responder Con Cita
  #2  
Antiguo 08-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Vamos a ver que sale de aquí. No tengo mucha experiencia usando el TWebBrowser, pero creo que esto puede funcionar:

Código Delphi [-]
// El evento OnBeforeNavigate2 del TWebBrowser
procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  NewPostData: OleVariant;
begin
  // Comprobamos que el PostData es un array
  if VarIsArray(PostData) then
  with TStringList.Create do
  try
    Delimiter:= '&';
    DelimitedText:= String(PChar(VarArrayLock(PostData)));
    VarArrayUnlock(PostData);
    // Usamos un parametro para saber si debemos interceptar 
    if Values['Vamos']=EmptyStr then
    begin
      // Lo paramos
      Cancel:= TRUE;
      // Añadimos 'hola' a la password (o cualquier otra modificación)
      Values['Pass']:= Values['Pass'] + 'hola';
      // Indicamos con este parámetro que la petición ya ha sido modificada
      Values['Vamos']:= 'Si';
      NewPostData:= VarArrayCreate([0, Length(DelimitedText)], varByte);
      StrCopy(PChar(VarArrayLock(NewPostData)),PChar(DelimitedText));
      VarArrayUnlock(NewPostData);
      // Volvemos a llamar al método navigate con los el PostData modificado
      (ASender as TWebBrowser).Navigate2(URL,EmptyParam,EmptyParam,
        NewPostData,EmptyParam);
    end;
  finally
    Free;
  end;
end;

Bueno, seguro que se puede hacer mejor, pero es un comienzo. Por cierto 'Pass' es el nombre que tiene el campo password en el formulario y 'Vamos' tiene que ser un nombre que no corresponda con el de ningún campo del formulario.
Responder Con Cita
  #3  
Antiguo 08-09-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Hola seoane, gracias por la ayuda, el codigo que me pasaste era aproximadamente lo mismo que estaba haciendo yo en uno de los métodos.

Igualmente lo modifique para usar TStringList, con lo que quedo mucho mas prolijo

Como era muy parecido a lo que estaba haciendo, obtuve el mismo resultado.

Igualmente descubri cual era mi problema, el tema es que no responde bien cuando el usuario no teclea la clave.

En este caso te devuelve **** que es lo que me estaba pasando.

Si el usuario teclea la clave te devuelve la clave correcta

Gracias
__________________
[Crandel]
Responder Con Cita
  #4  
Antiguo 08-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por Crandel
Igualmente descubri cual era mi problema, el tema es que no responde bien cuando el usuario no teclea la clave.

En este caso te devuelve **** que es lo que me estaba pasando.

Si el usuario teclea la clave te devuelve la clave correcta
No entiendo, la información que aparece en PostData es la que se envía, si aparecen asteriscos, el servidor recibirá asteriscos. Yo personalmente no he podido reproducir lo que tu dices, tecleo el password en el bloc de notas, la copio al portapapeles, la pego en el formulario y la puedo leer perfectamente. Pero vete a saber que es lo que pasa , diferentes versiones del explorer, diferentes versiones de windows, etc ...

De todas formas, si vas a utilizar algo similar, recuerda que tanto los nombres, como los valores de cada parámetro están codificados. No lo incluí en mi código por simplificarlo, pero en el truco 62 describo las funciones urlencode y urlencode que se utilizan para codificar los parámetros.

Por ejemplo se tendria que utilizar algo como esto:
Código Delphi [-]
Values[UrlEndoce('Pass')]:= UrlEncode(UrlDecode(Values[UrlEndoce('Pass')]) + 'hola');

O algo parecido.
Responder Con Cita
  #5  
Antiguo 08-09-2006
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
El problema surge cuando la clave esta guardada de forma automática por el mismo IE, con la opción de guardar contraseñas.

Si el usuario la teclea o ingresa de cualquier forma se ve correctamente.
__________________
[Crandel]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener información de los controles de un formulario MadRoberto OOP 4 08-11-2005 10:19:35
password en bde tiagor64 SQL 2 23-06-2005 00:04:09
password tharsisj Varios 2 27-02-2005 11:03:27
Ado Y Password joanajj Conexión con bases de datos 10 28-10-2004 16:23:55
pasar datos de un formulario vista a cualquier formulario @-Soft OOP 2 28-09-2004 21:56:01


La franja horaria es GMT +2. Ahora son las 02:00:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi