Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Como proteger mis archivos para que no se modifiquen con otro programa externo

Hola a todos
Quisiera saber como puedo proteger los archivos que me sirven de complemento a mi programa, para que no sean modificados por una aplicacion externa, es decir, que solo puedan ser modificados por mi programa.

Los archivos de mi aplicacion son: un .mdb, un .zip, dos .csv y uno Tipo File of record

Lo que no quiero es que, por ejemplo, me abran el (.zip) con el winzip o winrar y lo modifiquen. Quiero hacerle algo para que estos programas no lo reconozcan como archivo .zip, y den un error si intentan abrirlo. (Yo hago el .zip con mi propio programa, con un componente de Delphi).

Y hacer lo mismo con los demas para que no sean reconocidos por sus respectivas aplicaciones (Access, Bloc de Notas, etc.), solo por mi programa.

Espero que esto sea posible hacerse, o si no, que metodo seria bueno para lo que quiero
Responder Con Cita
  #2  
Antiguo 21-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Lo primero que puedes hacer es cambiarles la extensión y ver si te funcionan. Eso dependerá de cómo los estés accediendo.
Por ejemplo, ADO si no recuerdo mal, permite acceder a ficheros MDB, aunque les hayas cambiado la extensión. Así pues si a tu Base de Datos MDB le colocas extensión .DWG (pr decir una) y configuras el ADOConexion la abrirá sin problemas.

Dependiendo del sistema/componente que uses para los ZIP, podrás hacer algo similar.

Es un primer paso.
Lo siguiente es proteger los ficheros utilizando las herramientas de cada uno. En este caso puedes utilizar password para ambos casos (tanto MDB como ZIP).

En el caso de los MDB aun puedes probar la opción de encriptación de la Base de Datos. Aunque ahora no recuerdo si es propia de Access o la soporta también ADO.

A partir de ahí podrías añadir encriptación propia; Pueder ser fácil con algun tipo de ficheros, pero con otros puede ser muy engorrosa.

Todo depende del nivel de "seguridad" que necesites.

Por último si todo esto te queda corta, tal vez sea necesario que te plantees cambiar a tipos de ficheros que de por sí, te ofrezcan más seguridad. En el caso de la Base de Datos está claro que puedes "saltar" a un SGBD (FB embebded, por ejemplo), en el resto habría que evaluarlo para cada caso.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 21-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,

podrias, simplemente, usar otras extensiones desconocidas (.aln, .ut, ...). Si quieres mas proteccion, entonces deberias "desformatearlos" : poner datos inservibles en ellos de tal manera que sus aplicaciones no lo pudieran leer (por ejemplo, bloques aleatorio en ciertas posiciones fijas, los cuales tu sabes la posicion y longitud). Si haces eso, ten en cuenta que los componentes que se usan en delphi buscaran el formato original, por lo que deberias, al abrir tu aplicacion, eliminar estos bloques, y al salir, volverlos a escribir. Otra manera seria usando las propiedades de proteccion de estos tipos de archivo (menos el .csv) : usando login / password en la base de datos, que solo lo "conoceria" tu programa, y lo mismo con el .zip. Otros trucos pueden ser que tu aplicacion guarde la ultima fecha de modificacion y longitud de estos ficheros, y si se modifican externamente, cambiando estos requisitos, se dice que estan corrompidos y no se abren. Tambien por eso deben haber componentes de encriptacion, que supongo que encriptaran al salir del programa y desencriptaran al abrirlo.
Responder Con Cita
  #4  
Antiguo 21-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
vaya neftali...te volviste a adelantar XD
Responder Con Cita
  #5  
Antiguo 21-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por coso Ver Mensaje
vaya neftali...te volviste a adelantar XD
Bueno, lo importante es el contenido.

No debe ser mala la respuesta cuando los dos andábamos "dando tiros al mismo árbol..."
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 21-07-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Ya habia pensado en lo de cambiar las extensiones, pero si al mdb le das abrir con... access, se abre sin problemas. Tambien hay formas de burlar las contraseñas de access.

El nivel de seguridad que deseo debe ser el mayor posible, pues la aplicación es para el control del inventario de las PC con todos sus componentes internos, para evitar fraudes. Y los usuarios finales son informaticos, y saben como violar la seguridad de access.

Se me ocurrio la idea de insertar un bloque de datos al principio para hacerlo ilegible al access, y despues quitarlo cuando mi aplicación lo vaya a usar,
Pero no se como hacerlo, ni si se puede hacer
Responder Con Cita
  #7  
Antiguo 21-07-2008
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 Jose Caceres Ver Mensaje
Se me ocurrio la idea de insertar un bloque de datos al principio para hacerlo ilegible al access, y despues quitarlo cuando mi aplicación lo vaya a usar
Si es cuestión de "disfrazarse" lo mejor es ponerse un sombrero :
http://www.clubdelphi.com/foros/show...9&postcount=88

Por otro lado lo mejor es la encriptación:
http://delphi.jmrds.com/?q=node/31

O incluso un hash (md5 o sha1):
http://delphi.jmrds.com/?q=node/36
Responder Con Cita
  #8  
Antiguo 21-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola de nuevo, otra manera seria colocando tu base de datos en un servidor externo el cual solo permitiese acceso a tu programa.
Responder Con Cita
  #9  
Antiguo 22-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.276
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Jose Caceres Ver Mensaje
(1) Utilizar ficheros MDB
(2) El nivel de seguridad que deseo debe ser el mayor posible
(3) Y los usuarios finales son informaticos
Con esas tres premisas lo que intentas hacer es un "suicidio" en toda regla .

En serio, deberías plantarte cambiar los MDB por otro SGBD. FB por ejemplo te brindará la seguridad que necesitas.

Cita:
Empezado por Jose Caceres Ver Mensaje
Se me ocurrio la idea de insertar un bloque de datos al principio para hacerlo ilegible al access, y despues quitarlo cuando mi aplicación lo vaya a usar,
Pero no se como hacerlo, ni si se puede hacer
El problema de todos estos inventos, es que para trabajar con tu aplicación y ese fichero debes "desencriptarlo" en algun momento; Si le añades "basura" al inicio y luego vas a accederlo con ADO, deberás eliminarsela. En ese momento tu fichero queda desprotegido y por tanto vulnerable.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 22-07-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool

Seoane
Muy original el truquito del disfraz del sombrero, de verdad que esta "elegante" esa forma de ''esconder'' un archivo

Probe el metodo de encriptacion que me propones y me funcionó perfectamente, lo voy a usar hasta que pueda cambiar de SGBD como me sugiere Neftali.

Con respecto a lo del hash, pudieras decirme que es el hash? (o será necesario abrir otro hilo para ese tema)


Coso

No puedo usar un servidor externo, pues no siempre se va a usar en una red

Neftali

Se que los mdb son bastantes inseguros, pero es el que, hasta ahora, me es mas facil trabajar (respecto a hacer relaciones y crear las consultas).

Nunca he trabajado FB, me haria falta aprenderlo (e instalarlo por supuesto, no lo tengo), sabes de algun manual o tutorial?

He probado con Paradox, pero cuando ejecuto mi programa en una PC sin Delphi, me da error del BDE (ya puse un hilo preguntando eso), si puedes dime que hacer con ese error

Con respecto a la encriptacion (mientras aprenda FB o solucione lo del error de Paradox y el BDE), lo que pienso hacer es: copiar mi BD desencriptada y "vulnerable" oculta en algun lugar del disco, y al cerrar la aplicacion la encripto y la devuelvo a su lugar

Última edición por JoAnCa fecha: 22-07-2008 a las 18:41:19.
Responder Con Cita
  #11  
Antiguo 22-07-2008
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 Jose Caceres Ver Mensaje
Seoane
Con respecto a lo del hash, pudieras decirme que es el hash?
Claro que si :
Cita:
Empezado por wikipedia
En informática, Hash se refiere a una función o método para generar claves o llaves que representen de manera casi unívoca a un documento, registro, archivo, etc., resumir o identificar un dato a través de la probabilidad, utilizando una función hash o algoritmo hash. Un hash es el resultado de dicha función o algoritmo.
En resumen un hash es una función que a partir de un puñado de bytes genera un identificador (32 caracteres en el caso del md5). Si se cambia aunque solo sea un byte y se vuelve a calcular el hash, este sera diferente.

La mejor forma de usar esto en tu caso es calcular el hash de los archivos que quieres proteger cada vez que los modifiques y guardarlo en lugar seguro (cifrandolo si es necesario), luego cada vez que vayas a usar la información solo tienes que volver a calcular el hash y comprobar que es igual que que tienes guardado.
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
Como ejecutar un programa externo. jmgc1982 C++ Builder 10 02-06-2008 09:47:29
programa externo hugoacosta API de Windows 2 17-04-2006 19:44:57
implementar dll para otro programa android_beat Varios 2 31-01-2006 20:23:58
Como usar una función de un programa externo xer0-q Providers 0 17-12-2005 15:53:48
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36


La franja horaria es GMT +2. Ahora son las 13:11:49.


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