Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Borrar Password de tabla Paradox (https://www.clubdelphi.com/foros/showthread.php?t=5538)

mlara 25-11-2003 03:23:22

Borrar Password de tabla Paradox
 
Hola.

Ahora ando haciendo de las mías con Paradox, pero no he podido completarlas. Aquí va:

- Tengo una base de datos Paradox.
- Todas las tablas están protegidas con contraseña.
- Cuando comprimo las tablas el tamaño no se reduce ya que la herramienta que comprime no lo puede hacer con archivos encriptados (quiero decir, genera el zip pero demasiado grande).
- Esta compresión de la que hablo la hago desde mi aplicación Delphi.
- Entonces para poder comprimir toda la base de datos necesito eliminar el password de cada una de las tablas Paradox, desde mi aplicación.

Ya he buscado y no he encontrado nada aún.

Los métodos de TSession, RemovePassword y RemoveAllPasswords no sirven para esto. Estos métodos sólo borran la lista de passwords que uno previamente ha adicionado para acceder a las tablas. Lo que necesito es borrar el password de las tablas o, dicho de otra manera, desencriptarlas.

¿Alguien sabe como podría hacerlo?

Gracias.

roman 25-11-2003 03:29:18

No voy a responder a lo que preguntas ya que en estos momentos no sé pero quiero hacerte una recomendación:

Olvidate de basar la seguridad de tu sistema con passwords en tablas de Paradox. Es absolutamente ineficiente y cualquier perosna que sepa teclear encontrará en internet el password "maestro" para abrir cualquier tabla de paradox.

// Sáludos

mlara 25-11-2003 04:45:27

Bueno bueno... Pues en eso estoy de acuerdo. Sólo que quisiera saber si alguien me puede ayudar con mi pregunta, pero además después de lo que has dicho también quisiera saber si entonces existe otra forma de proteger los datos tal que no sea el asunto tan ineficiente y tan fácil de descifrar.

roman 25-11-2003 06:06:39

Prueba esta función:

Código:

procedure AlterMasterPassword(
  Database: TDatabase; TableName: String; Password: String; Add: Boolean);
var
  TableDesc: CRTblDesc;

begin
  Session.AddPassword(Password);

  FillChar(TableDesc, SizeOf(CRTblDesc), #0);
  with TableDesc do
  begin
    StrPCopy(szTblName, TableName);
    StrCopy(szTblType, szPARADOX);
    StrPCopy(szPassword, Password);
    bProtected := WordBool(Add);
  end;

  Check(DbiDoRestructure(Database.Handle, 1, @TableDesc, nil, nil, nil, false));
end;

Database será una componente TDatabase ya inicializada (AliasName, DatabaseName) y abierta.

TableName el nombre de la tabla que a la que deseas agregra o quitar el password.

Password es la contraseña maestra.

Add indica si deseas agregar (true) o eliminar (false) el password.

Ejemplo de uso:

Código:

var
  Database: TDatabase;

begin
  Database := TDatabase.Create(nil);
  Database.AliasName := alias de tu base
  Database.DatabaseName := 'dbtemp';
  Database.Open;

  try
    // Quita el password de la tabla 'tabla1'
    AlterMasterPassword(Database, 'tabla1', Password, false);

    // Agrega password a la tabla 'tabla2'
    AlterMasterPassword(Database, 'tabla2', Password, true);
    ...
  finally
    Database.Free;
  end;
end;

Happy?

// Saludos

roman 25-11-2003 06:09:11

Lo olvidaba. Tienes que agregar las unidades Bde, Db y DbTables en la cláusula uses

// Saludos

AdrianD 25-11-2003 11:39:48

A pesar de que ya te han dado la solución, coincido con roman en cunato a las password. En la pagina de torry (www.torry.net) existe una password para abrir cualquir tabla paradox


La franja horaria es GMT +2. Ahora son las 21:08:10.

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