¿Hacer las partidas guardadas más duras de hackear?

Consulte acerca de programas, técnicas, algoritmos etc.

¿Hacer las partidas guardadas más duras de hackear?

Notapor shackra » Dom Nov 18, 2012 5:31 am

Hola a todos ¿han visto todo ese spam ultimamente? :-/

Me a entrado la duda con respecto a los datos guardados de una partida ¿Cómo sera mejor proceder para hacerlos más dificiles de hackear? Dudo que a alguien le guste que los jugadores tramposos consigan 9999 rupias/monedas de oro en tu juego cambiando los datos de la partida xd

¿Qué metodo de cifrado (si usaran alguno) usan regularmente para las partidas guardadas en sus juegos? :)
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica

Re: ¿Hacer las partidas guardadas más duras de hackear?

Notapor kaiser » Vie Nov 30, 2012 2:16 pm

Sinceramente nunca he necesitado proteger un archivo de guardado ya que nunca he diseñado un juego multijugador serio más allá de para echar unas partidas con algún colega puntualmente. En juegos de un jugador creo que debe ser éste quien decida si quiere hacer trampas o no, tanto modificando la información guardada como modificando el código del juego, de tal forma que le resulte más divertido jugar. Creo que de alguna manera forma parte del concepto de software libre.

Teniendo en cuenta que en Python el código fuente queda expuesto no me parece que tenga mucho sentido aplicar un método de cifrado que cualquier jugador con acceso al código y unos conocimientos mínimos podría invertir o incluso eliminar del código sin muchas complicaciones. Entiendo por lo tanto que la idea no es impedir completamente el acceso a la información sino simplemente dificultarlo un poco. Dicho esto, considero que el cifrado como tal podría resultar algo excesivo, siendo más sencillo codificar el archivo de guardado en Base64 (o similar) o bien calcular un hash del archivo cada vez que el juego guarde algo y comprobar dicho hash antes de cargarlo, de tal manera que si el jugador lo modifica manualmente el nuevo hash del archivo no coincida con el almacenado y se detecte la modificación. Como dije antes, un jugador que revise el código del juego y detecte el uso de alguno de estos métodos podría muy fácilmente invertirlo aplicando una decodificación Base64 o sustituyendo el hash almacenado por el nuevo hash tras modificar el archivo.

Las únicas formas que se me ocurren de asegurar que el archivo no puede ser modificado pasan por obligar al usuario a conectarse a Internet. Se podría, por ejemplo, almacenar el archivo de guardado en un servidor o si se quiere evitar el almacenamiento para reducir costes, se puede cifrar el archivo y cada vez que se quiera modificar sería necesario conectarse al servidor y descargarse la clave de descifrado.

Un saludo!
De la API al IDE y del IDE a la API.
Avatar de Usuario
kaiser
 
Mensajes: 121
Registrado: Mié Nov 24, 2010 7:47 pm
Ubicación: Madrid (España)

Re: ¿Hacer las partidas guardadas más duras de hackear?

Notapor shackra » Vie Nov 30, 2012 4:34 pm

kaiser escribió:Teniendo en cuenta que en Python el código fuente queda expuesto no me parece que tenga mucho sentido aplicar un método de cifrado que cualquier jugador con acceso al código y unos conocimientos mínimos podría invertir o incluso eliminar del código sin muchas complicaciones.


Bueno, eso no es del todo cierto. El desarrollador puede distribuir su producto como un binario gracias a PyInstaller facilitando así la distribucion he instalacion del juego. Como el producto en cuestion es software libre (¿cierto, no?) el usuario tendria que pedir el codigo fuente por aparte. En fin, el asunto es que el jugador no tendria acceso inmedianto al codigo fuente del juego por el mero hecho de estar instalado en su sistema!

kaiser escribió:Las únicas formas que se me ocurren de asegurar que el archivo no puede ser modificado pasan por obligar al usuario a conectarse a Internet.


Creo que eso es una forma de DRM... no DRM como tal, pero seria bastante molesto no poder jugar porqué no tienes internet en los alrededores :)
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica

Re: ¿Hacer las partidas guardadas más duras de hackear?

Notapor Barajas » Dom Dic 02, 2012 5:54 am

Podrías usar un algoritmo de cifrado, RSA da buenos resultados y es bastante seguro además, el jugador medio no creo que se tome tantas molestias como para romper un cifrado RSA.

También, podrías simplemente escribir los datos en lugar de texto plano, en binario.. o mejor, en un archivo comprimido, el truco esta en que no saben que es un archivo comprimido... XD

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gzip, traceback, os
def write_compressed_file(filename, string):
""" normal write to a file - but the result will be compressed """
try:
fd = gzip.GzipFile(filename=filename, mode='wb', compresslevel=9)
fd.write(string)
except (IOError, os.error), why:
print 'Failed to write the file', filename, '\n Exception:', why
finally:
if fd is not None:
fd.close()

def read_compressed_file(filename):
""" reads the compressed file - if the file is not compressed read_file is called. """
try:
fd = gzip.GzipFile(filename=filename, mode='rb')
fd.read(1) # trigger an exception if is not compressed
fd.seek(0)
print 'IS a compressed file'
return fd.read()
except (IOError, os.error), why:
print 'not compressed file'
return read_file(filename)
finally:
if fd is not None:
fd.close()


Y, la que considero la manera más "troll" de ocultar información... aplicar los métodos de la Esteganografía XD. Pero claro, esa ultima es más difícil de aplicar.
Vi veri universum vivus vici
Avatar de Usuario
Barajas
 
Mensajes: 209
Registrado: Mar Nov 16, 2010 12:06 am

Re: ¿Hacer las partidas guardadas más duras de hackear?

Notapor shackra » Dom Dic 02, 2012 8:32 pm

Barajas escribió:Y, la que considero la manera más "troll" de ocultar información... aplicar los métodos de la Esteganografía XD. Pero claro, esa ultima es más difícil de aplicar.


Me parece la más atractiva, razones obvias!
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado