Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Averiguar clave bbdd firebird (https://www.clubdelphi.com/foros/showthread.php?t=75056)

newtron 27-07-2011 12:23:33

Averiguar clave bbdd firebird
 
Hola a todos.

Tengo un cliente que tiene ya funcionando un programa con firebird y por una extraña razón quiere montar mi aplicación y usar las dos simultaneamente. El problema es que logicamente tiene que mantener las dos bases de datos de artículos con sus precios actualizados. A mi se me ocurre que actualice los precios de su programa con firebird y yo hacer un procedimiento por el cual abro su base de datos e importo esa información para que no tenga que teclearla dos veces.

El problema está en que cuando voy a abrir la base de datos firebird tiene un nombre de usuario y password que no sé cual será.

Mi pregunta es si hay forma de averiguar estos datos sin tener que reinstalar firebird para poder de forma habitual acceder a la base de datos y traerme la información que necesito.

Gracias y un saludo

duilioisola 27-07-2011 13:11:51

El nombre de usuario y contraseña por defecto es
Nombre: SYSDBA
Password: masterkey
Nota: El nombre va en mayúsculas y el password en minúsculas.

Prueba con estas. Si no son, deberás preguntar a quien haya creador la base.

También se puede reinstalar Firebird, pero puede que el otro programa deje de funcionar porque necesita ese nombre de usuario y contraseña.

Neftali [Germán.Estévez] 27-07-2011 13:27:39

Cita:

Empezado por newtron (Mensaje 407494)
Mi pregunta es si hay forma de averiguar estos datos sin tener que reinstalar firebird para poder de forma habitual acceder a la base de datos y traerme la información que necesito.

Lo suyo sería preguntarle a él (supongo que no tiene ni idea) o a quien le instaló el Software; El problema es que lo normal es que no te lo den, porque eso implica que tienes acceso a las estructuras de las Bases de Datos, diseño, Storeds, Triggers,...

newtron 27-07-2011 13:46:31

Pues esa es la madre del cordero, que al cliente cuando le pregunto me responde "mandeloqué?" y a su otro proveedor va a ser complicado preguntarle.

Casimiro Notevi 27-07-2011 14:05:02

Puedes hacer un backup transportable de la base de datos y llevártela a otro ordenador donde instales firebird. Ahí puedes hacer las pruebas que quieras.

newtron 27-07-2011 14:13:53

Ya pero eso creo que no me va a servir de mucho, yo preguntaba por si había alguna utilidad para averiguar esos parametros sin tocar la base de datos, si no tocará hacer exportación/importación cada vez que quiera actualizar los datos de mi aplicación.

Casimiro Notevi 27-07-2011 14:24:00

¿Pero cómo piensas hacer una importación si no puedes conectar a la BD?

Chris 27-07-2011 16:42:42

Yo te recomendaría que hicieran un "Brute Force". Igual, las contraseñas de Firebird no son más largas que 8 caracteres. Puedes empezar utilizando unos 4 y de ahí seguir. Seguro no tardarás mucho en encontrar la contraseña.

Saludos,
Chris.

duilioisola 27-07-2011 17:17:13

Esto te puede ayudar con el sistema "Brute Force"
Código Delphi [-]
type
   TCaracteresValidos = array of char;

var
   parar : boolean;

procedure TFMMain.ButtonBuscarClick(Sender: TObject);
var
   i1, i2, i3, i4, i5, i6, i7, i8: Integer;
   IncrementarSiguiete: Boolean;
   MyCaracteresValidos: TCaracteresValidos;
begin
   MyCaracteresValidos := TCaracteresValidos.Create('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
     'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E',
     'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
   Parar := False;
   i1 := 0;
   i2 := 0;
   i3 := 0;
   i4 := 0;
   i5 := 0;
   i6 := 0;
   i7 := 0;
   i8 := 0;
   while ((EClave.Text <> 'ZZZZZZZZ') and (not Parar)) do
   begin
      EClave.Text := MyCaracteresValidos[i1] + MyCaracteresValidos[i2] + MyCaracteresValidos[i3] + MyCaracteresValidos[i4] +
        MyCaracteresValidos[i5] + MyCaracteresValidos[i6] + MyCaracteresValidos[i7] + MyCaracteresValidos[i8];
      Application.ProcessMessages;

      // Probar conexion con la clave
      // Depende de tus componentes:
      Database.NombreDeUsuario := 'SYSDBA';
      Database.Password := EClave.Text;
      Database.Connect;
      if (Database.Connected) then
      begin
         Parar := True;
         ShowMessage('La clave es: '+ EClave.Text);
      end;

      // Buscar siguiente Clave
      if (i8 = High(MyCaracteresValidos)-Low(MyCaracteresValidos)) then
      begin
         i8 := 0;
         if (i7 = High(MyCaracteresValidos)-Low(MyCaracteresValidos)) then
         begin
            i7 := 0;
            if (i6 = High(MyCaracteresValidos)-Low(MyCaracteresValidos)) then
            begin
               i6 := 0;
               if (i5 = High(MyCaracteresValidos)-Low(MyCaracteresValidos)) then
               begin
                  i5 := 0;
                  if (i4 = High(MyCaracteresValidos)-Low(MyCaracteresValidos)) then
                  begin
                     i4 := 0;
                     if (i3 = High(MyCaracteresValidos)-Low(MyCaracteresValidos)) then
                     begin
                        i3 := 0;
                        if (i2 = High(MyCaracteresValidos)-Low(MyCaracteresValidos)) then
                           i2 := 0
                        else
                           inc(i2);
                     end
                     else
                        inc(i3);
                  end
                  else
                     inc(i4);
               end
               else
                  inc(i5);
            end
            else
               inc(i6);
         end
         else
            inc(i7);
      end
      else
         inc(i8);
   end;
end;

procedure TFMMain.ButtonPararClick(Sender: TObject);
begin
   Parar := True;
end;

Ten en cuenta que en los caracteres válidos no he puesto signos (+-_/, etc)
De todos modos esto puede ser algo laaaaargo....

newtron 27-07-2011 17:47:37

Cita:

Empezado por Casimiro Notevi (Mensaje 407511)
¿Pero cómo piensas hacer una importación si no puedes conectar a la BD?

Lo que si puede hacer mi cliente es una exportación a excel desde su programa de un listado y ese listado importarlo yo al mío pero es algo engorroso.

Chris, duilioisola, gracias por vuestros comentarios. Lo hablaré con el cliente y ya veré qué hago.

Gracias a todos.

Casimiro Notevi 27-07-2011 19:21:03

Yo haría una copia del programa y BD, lo probaba en otro ordenador instalando un nuevo firebird.
Buscaría en el ejecutable que tienen, con un editor hexadecimal, las cadenas 'sysdba' y 'masterkey' para ver qué clave usan.
Si las encuentras entonces no hay problema, te conectas con ellas.
Es lo de siempre, prueba y error, y perder tanto tiempo como sea necesario/pruedente/aconsejable, sin pasarse. Ya que si se pierde mucho tiempo entonces es mejor hacer esa importación/exportación y no complicarse la vida.

rretamar 27-07-2011 19:32:03

Otra posibilidad (si la clave se envía desencriptada) es usar un "sniffer" de paquetes TCP/IP para capturar el nombre de usuario y la clave que se envían a través de la red.

Aquí hay un analizador de paquetes para Linux y Windows: http://www.wireshark.org

Chris 27-07-2011 20:48:47

Cita:

Empezado por rretamar (Mensaje 407552)
Otra posibilidad (si la clave se envía desencriptada) es usar un "sniffer" de paquetes TCP/IP para capturar el nombre de usuario y la clave que se envían a través de la red.

Sería lo mejor. Pero Firebird envía la contraseña con encriptación, encriptación básica, pero la encripta.

Lo más práctico es lo que comenta Casimiro. Aunque puede llevar un buen tiempo hacerlo y no es seguro que la encuentres. Si tienes suerte, el programador que escribió el otro programa seguro escribió algo así:
Código Delphi [-]
fb_usuario = 'SYSDBA';
fb_contrasena = 'masterkey';
En el caso que no corras con suerte, el código debió ser escrito así:
Código Delphi [-]
fb_usuario = 'SYSDBA';
fb_contrasena = #125#156#142#169#210...;

Saludos,
Chris

ContraVeneno 27-07-2011 23:46:06

¿y si borras el archivo "security.fdb"?

newtron 28-07-2011 08:42:47

Cita:

Empezado por ContraVeneno (Mensaje 407623)
¿y si borras el archivo "security.fdb"?

No sé, ¿qué pasa si borro el archivo security.fdb? :)

guillotmarc 28-07-2011 09:41:35

Cita:

Empezado por newtron (Mensaje 407649)
No sé, ¿qué pasa si borro el archivo security.fdb? :)

Que le tendrás que poner otro archivo security.fdb, de otro servidor.

Con eso ocurrirá que ya podrás entrar en la base de datos usando SYSDBA/masterkey, pero en cambio el programa de tu cliente no funcionará porqué intentará conectarse con una contraseña que ya no será válida.

La verdad es que deberías estar continuamente intercambiando el archivo security.fdb cada vez que quieras entrar tú, o bien cada vez que quieran entrar al programa del cliente.

Saludos.

newtron 28-07-2011 09:46:44

Puffffffff.... mucho lío.

Al final acabaré exportando desde la otra aplicación e importando en la mía.

Gracias a todos.

Casimiro Notevi 28-07-2011 09:54:32

Cita:

Empezado por newtron (Mensaje 407658)
Puffffffff.... mucho lío.
Al final acabaré exportando desde la otra aplicación e importando en la mía.
Gracias a todos.

Échale un vistazo al ejecutable con un editor hexadecimal, seguramente encuentras los datos, o con el sniffer, por probar no pierdes nada.


La franja horaria es GMT +2. Ahora son las 03:51:25.

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