PDA

Ver la Versión Completa : Borrar Password de tabla Paradox


mlara
25-11-2003, 03:23:22
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:


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:


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