Autor Tema: Ocultar archivos c/h  (Leído 1437 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado donvalles

  • PIC10
  • *
  • Mensajes: 35
Ocultar archivos c/h
« en: 24 de Julio de 2015, 14:58:25 »
Hola Amigos y compañeros, estoy trabajando en un proyecto con outro programador, pero mi parte es generar un código para encriptar datos entonces hice mi archivo llamado "encriptacion.c" que posee sus funciones definidas por ejemplo encriptar(dato1,dato2,dato3); - Desencriptar(dato1,dato2,dato3); esas funciones estan dentro del archivo. Ahora yo no quiero que esa persona que va a continuar vea el archivo  "encriptacion.c". Existe alguna forma que pueda hacer para pasarle el archivo que lo pueda usar llamando a las funciones pero que no vea el código original . Estoy usando el ccs en un microcontrolador PIC18F4685.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Ocultar archivos c/h
« Respuesta #1 en: 24 de Julio de 2015, 21:01:09 »
Creo que lo que estas buscando es crear un "static library". en el que adjunta todos los object. No se si se puede usar un DLL

Aun asi imagino que debe ser posible hacerle una ingenieria inversa y ver exactamente que es lo que hace el codigo, eso te lleva a que el otro sepa ASM. Pero generada la libreria el otro puede tranquilamente usarlo y no tener el codigo tan facil a mano.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Ocultar archivos c/h
« Respuesta #2 en: 27 de Julio de 2015, 12:49:51 »
También podrías usar ofuscación ...

https://es.wikipedia.org/wiki/Ofuscaci%C3%B3n

Saludos !

Desconectado donvalles

  • PIC10
  • *
  • Mensajes: 35
Re: Ocultar archivos c/h
« Respuesta #3 en: 27 de Julio de 2015, 22:32:43 »
gracias por su tiempo. voy a leer e intentar hacerlo

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Ocultar archivos c/h
« Respuesta #4 en: 27 de Julio de 2015, 23:54:50 »


Muy amigos no parece que seais  :D, si tienes que andar con esas precauciones.  :? :? :? :?

Supongo que puedes compilar esas rutinas, y darle a tu "amigo" el objeto previo al enlazado, un archivo con la extensión ".o", que se crea de cada ".c", antes de enlazar. El podrá usar ese ".o", con las rutinas y parámetros que tu le digas, y enlazarlo todo junto a sus fuentes, para crear el ejecutable .hex.

Supongo que la desconfianza será mutua, y tu "amigo" tampoco te dejará ver sus rutinas, un poco triste trabajar así,  ¿ no ?. Vamos que lo entiendo de programador a cliente final, pero entre compañeros que trabajan en un mismo proyecto, es la primera vez que veo algo así.



« Última modificación: 28 de Julio de 2015, 00:01:22 por planeta9999 »

Desconectado donvalles

  • PIC10
  • *
  • Mensajes: 35
Re: Ocultar archivos c/h
« Respuesta #5 en: 03 de Agosto de 2015, 08:50:10 »
planeta9999, Hola Muchas Gracias por tu información, te cuento que no se trata de amistad o de comportir datos , este no seria el caso. Fue un pedido de la gerencia que haga asi el soft porque no quiere que los otros empleados sepan como desencriptar. ya que de esta forma quedaria mas resguardado,. y nuevamente gracias por ayudarme. 

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 106
Re: Ocultar archivos c/h
« Respuesta #6 en: 03 de Agosto de 2015, 18:01:13 »
la otro forma seria que hagas un encrippador y desencriptador por hadware seria algo asi por ejemplo le das un pic grabado pero con proteccion de lectura solo se usa por comandos serial o paralelo (va encrip y descrip los datos que le envies y luego devolver) usando para eso i2c rs232 spi o paralelo
"La curiosidad mato al gato, pero murio sabiendo"

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Ocultar archivos c/h
« Respuesta #7 en: 03 de Agosto de 2015, 21:11:44 »
Y si no directamente si es algo de TANTA necesidad, es que los demas programadores hagan sus cosas como deben.

Me refiero que pongan en su lugar la funcion de encriptacion y desencriptacion, y que solo esa funcion devuelva el mismo valor.
Ya que basicamente ELLOS van a trabajar con la informacion ya desencriptada, y luego cuando TODO esta correcto cambiar la funcion de desencriptacion/encriptacion por la que se debe. Y eso seria todo. No hay necesidad que los demas tengan el codigo.

me refiero a algo asi:

Para los demas programadores:
Código: C
  1. #include encrip.h
  2. main ()
  3. {
  4.    dato = tomodato();
  5.    encriptarlo(variable1,dato);
  6.    enviarlo();
  7.    
  8.    dato_recibido= recibirdato();
  9.    desencriptarlo(dato_recibido,variable2);
  10.    procesarlo();
  11. }
  12.  
  13. // En otro .c , encrip.c
  14.  
  15. encriptarlo(variable1,variable2){
  16.    //Nada..
  17. }
  18. desencriptarlo(variable1,variable2) {
  19.    //Nada
  20. }

Ese codigo deberia funcionar si esta bien realizado el programa. Y si se necesita probar, que solamente se provea el dato_recibido ya desencriptado. Si es que se reciben MAS datos que luego se acorta la trama por la desencriptacion, entonces que envien basura ademas de los datos desencriptados al probarlo.

Luego cuando todo esta listo entonce ahi abris el archivo que contiene las funciones encriptarlo() y desencriptarlo() y modificas las funciones con tu codigo secreto y compilas.
Nadie tendria el codigo, y el programa funcionaria como debe ya que imagino que fue bien programado, y si no funciona se puede probar tranquilamente sin necesidad de esas funciones.

Esto trae la ventaja que unicamente vos tenes el codigo. Mientras que de la otra forma tenes el problema que se puede realizar una ingenieria inversa. Alguno que sepa ASM te lo sacaria si hace un esfuerzo. O directamente tener el codigo en ASM. Mientras que aca lo unico que te quedaria es ponerse a ver el .hex generado, que tambien posee el ASM, pero si antes se pasa por un encriptador asi un bootloader lo cambia entonces ahi ya tenes otra proteccion mas.