Main Menu

FPG

Started by syous, July 15, 2009, 11:49:30 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

syous

Hola, ??? ??? ??? ;D ;D ;D

una curiosidad seria posible o  igual es una tonteria fpgs o maps personalizados,

Me explico: yo quiero  un contenedor fpg de formato propio es decir fpg.miextension pero no un simple renombar que luego se pueden abrir con facilidad
Un Saludo
EL dia que la humanidad aprenda a mirar y sentir con los ojos del alma, recuperara su humanidad
http://sodonline.net/
http://darknessage.ayudaprogramacion.net/
http://www.ayudaprogramacion.net/

Proyecto: MMORPG
Completado: 2%
Estado: En Desarrollo...

DCelso

no entendí muy bien, pero quizás no necesites hacer eso usando fpgs cifrados.
No se si ya splinter tenga un ejemplo de recursos cifrados con la nueva funcionalidad que añadió recientemente.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

claro que si, pero en ese caso lo tienes que hacer todo tu mismo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

habia puesto unos ejemplos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

syous

Quote from: SplinterGU on July 15, 2009, 01:12:38 PM
claro que si, pero en ese caso lo tienes que hacer todo tu mismo.



eso ya lo tenia claro
Un Saludo
EL dia que la humanidad aprenda a mirar y sentir con los ojos del alma, recuperara su humanidad
http://sodonline.net/
http://darknessage.ayudaprogramacion.net/
http://www.ayudaprogramacion.net/

Proyecto: MMORPG
Completado: 2%
Estado: En Desarrollo...

syous

 ;D y supongo tambien extensible al audio verdad? ???
Un Saludo
EL dia que la humanidad aprenda a mirar y sentir con los ojos del alma, recuperara su humanidad
http://sodonline.net/
http://darknessage.ayudaprogramacion.net/
http://www.ayudaprogramacion.net/

Proyecto: MMORPG
Completado: 2%
Estado: En Desarrollo...

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

syous, ya te he hecho un ejemplo de recursos cifrados.
Habría que perfeccionarlo un poco pero como ejemplo viene muy bien.
Una de las mejoras sería guardar el archivo temporal de descifra en una carpeta oculta en el directorio temporal de windows o linux, para que fuera más dificil seguirle la pista.
http://www.mediafire.com/?ndyy2zvawdm

Para evitar tener que hacer un archivo temporal descifrado, se le debería dar a las funciones "load" de carga de recursos soporte para leer desde un buffer (o stream) en vez de pasándole el nombre del archivo. ¿Como lo ves SplinterGU?
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

#8
la idea es no usar archivos temporales para las lecturas, si haces eso, es lo mismo que nada...
esas cosas son faciles seguirle la pista... creeme...

luego vere tu ejemplo...

gracias.

EDIT: Vi los ejemplos... el uso es correcto, salvo por 2 cosas...

1) la idea no es desencriptar a archivos
2) tenes que usar una key completa, y no se tienen que repetir los valores, y menos cada bloque de 8 bytes sea igual al siguiente, porque es lo mismo que no encriptar.
Tu ejemplo, es como usar un simple DES.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Splinter, no estoy muy puesto en encriptación, simplemente quise hacer un ejemplo sencillo de como usar la librería con el objeto de que el fpg o el wav no se abran directamente con los editores correspondientes, puede que si lo sometas a algoritmos de desencriptación lleges a obtener el original, pero con esto solo, ya pones trabas a que lean el formato y muchos dejaran de intentarlo.

En cuanto a usar un archivo temporal, a mi tampoco me gusta, lo hice por la limitación de load_fpg y load_wav, en otros lenguajes puedes leer un recurso tanto de un archivo como de un buffer o stream. Por tanto puedes hacer algo para encriptar y desencriptar en memoria. Cosas como:

mistream = stream_open("recurso.fpg");
fpg_id = load_fpg(mistream);
close_stream(mistream);

por lo que podrías tener un recurso encriptado, y desencriptarlo ants de llamar a load_fpg la información antes de hacer
También usando un buffer dinámico.

id_file=fopen("recurso_encriptado.fpg",o_read)
leidos=fread(buffer,filesize("recurso_encriptado.fpg"),id_file)
desencriptar(buffer)
id_fpg=load_fpg(buffer)


¿a la key completa te refieres a los 24 bytes?
¿a no repetir los valores te refieres a los valores de los 24 bytes? o a repetir clave en cada bloque de 8.
¿Como sería usando un simple DES ?
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

Por eso digo, que esta muy bien el uso, solo te tiraba los tips de seguridad...
Se penso poner encriptacion todo "file i/o", pero carece de sentido, es muy simple romper esa "proteccion".
La idea no es desencriptar un buffer completo como un recurso completo, sino partes de este, o que un mismo recurso tenga varias claves o un algoritmo """interno""" (al prg) que vaya generando passwords conocidas para el.

vamos por partes...

key completa = 24 bytes
cada key de 24 bytes son realmente 3 keys de 8... cada una de estas keys no deben repetirse... si se hace, se anulan entre si... por lo menos no 2 consecutivas... lo ideal es que ninguna sea igual.

Si se puede evitar usar caracteres similares mejor.

DES seria solo 8 bytes de key... y en vez de poner CRYPT_3DES es CRYPT_DES... un 3DES es 3 veces 1 DES... pero hace 1 paso encripta con primera clave, 2 paso desencripta con 2da clave, 3 paso encripta con 3ra clave... (cada clave son cada uno de los 8 bytes que forman los 24 de la clave completa)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

#11
Gracias de nuevo.
Al ejemplo anterior le he visto un ligero problema, resulta que cuando el tamaño del recurso original no es múltiplo de 8 bytes, el resultado de la descodificación incrementa su tamaño un poco hasta que es múltiplo de 8, claro esto es debido a que la codificación necesitaba pasarle de ocho en ocho y en la última si no tenias suficientes rellenabas con ceros.
Resulta que todos los fpgs que he creado son múltiplos de 8 bytes así que con este recurso no se que pasaría si tubiera unos cuantos bytes basura al final. En los wavs no pasa nada.
Como primera solución pensé en guardar en su encriptación de ese último bloque sólo el número de bytes reales del archivo en vez de los 8, y luego en la desencriptación rellenar con ceros hasta 8 para recuperarlos, pues no se recuperan bien, supongo que los en la codificación de 8 bytes se hará algún cálculo dependiente de estos mismos. Así que el recurso recuperado no es válido, probé varios wavs y parecen escucharse bien pero parece mejor añadir información de más que inventarte información en los datos así que opté por no usar esta solución.

Como segunda solución, guardar en el fichero encriptado la longitud real para luego recorlar el fichero resultado, claro aqui ya dejas información al descubiero y complica la lógica del ejemplo un poco así que no la he implementado, pero creo que es mejor solución si se necesita recuperar el recuro original intacto, en este caso como solo es para usar en el juego pues da igual que no sea exacto simplemente con que funcione igual va, ya que luego será borrado.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

syous

Quote from: DCelso on July 16, 2009, 09:03:48 PM
syous, ya te he hecho un ejemplo de recursos cifrados.
Habría que perfeccionarlo un poco pero como ejemplo viene muy bien.
Una de las mejoras sería guardar el archivo temporal de descifra en una carpeta oculta en el directorio temporal de windows o linux, para que fuera más dificil seguirle la pista.
http://www.mediafire.com/?ndyy2zvawdm

Para evitar tener que hacer un archivo temporal descifrado, se le debería dar a las funciones "load" de carga de recursos soporte para leer desde un buffer (o stream) en vez de pasándole el nombre del archivo. ¿Como lo ves SplinterGU?

muchas gracias lo probare
Un Saludo
EL dia que la humanidad aprenda a mirar y sentir con los ojos del alma, recuperara su humanidad
http://sodonline.net/
http://darknessage.ayudaprogramacion.net/
http://www.ayudaprogramacion.net/

Proyecto: MMORPG
Completado: 2%
Estado: En Desarrollo...

Drumpi

Bueno, si lo que quieres es tener un formato propio, en lugar de encriptar, te creas tus propios ficheros con los datos que necesites en el orden que quieras, y luego con map_new y map_put_pixel los creas en memoria a partir de la informacion que quieras. Puedes poner la info de colores en GRB, leer las lineas de cuatro en cuatro, añadir bits basura...
Ahora, eso para el audio no sé cómo hacerlo, porque que yo sepa, no existen funciones de acceso a la zona de memoria del audio, y hay que saber cómo se guarda la info.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

siempre lo digo, pero no es lo mas simple para muchos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2