elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?  (Leído 6,729 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.460


Hackentifiko!


Ver Perfil
¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« en: 27 Febrero 2023, 09:16 am »

El lenguaje que planeo usar es muy limitado creo, que yo sepa no puede chequear la fecha de creación del archivo, que sería una posible manera (aunque no infalible), pero a ver si se les ocurre otra.

Así sería la cosa:
Al guardar la partida de un juego se crea un archivo que contiene datos de la misma y unos valores extras que son el resultado de operaciones entre los datos, de modo que, si un dato es modificado (editando el archivo) y no se modifican los valores extras acordemente, entonces cuando el juego cargue el archivo y se hagan las operaciones se detectará que el jugador hizo trampa (bueno, a menos que él no haya modificado el archivo sino otra persona o algo), y luego de un tiempo random se dirá que hubo un error y el archivo se borrará.

Sólo en la dificultad alta :laugh:

Pero sabiendo que sucede eso, el tramposo podría copiar el archivo antes, y así intentar descubrir más fácil cómo hacer trampa sin ser detectado.

Entonces ¿hay alguna manera de que el juego o programa detecte que el archivo no es el original?

Gracias.


« Última modificación: 27 Febrero 2023, 09:18 am por Tachikomaia » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #1 en: 28 Febrero 2023, 17:35 pm »

Para eso existe el Hashing, entre otras cosas...


En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.460


Hackentifiko!


Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #2 en: 28 Febrero 2023, 19:04 pm »

Leí casi todo esto
https://keepcoding.io/blog/que-es-el-hashing/#:~:text=En%20computaci%C3%B3n%2C%20el%20hashing%20es,funciones%20de%20resumen%20o%20hash.

No me había dado cuenta que distintos datos pueden dar el mismo resultado del modo que yo lo quería hacer, me sirvió leer eso, pero ¿responde la duda? ¿tiene que ver con detectar cuando un archivo es una copia?
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #3 en: 1 Marzo 2023, 00:16 am »

El hash calculado a un fichero, sirve para identificar si fue modificado el contenido.

Cuando dos contenidos distintos arrojan el mismo, hash se dice que se ha producido una colisión...
Las colisiones vienen a ser inevitables, es decir no se puede predecir (si el algoritmo está bien programado).

Sin embargo cuando se requiera mayor nivel de seguridad, es ideal sacar 2 hashes al fichero, esto es con dos algoritmos distintos. Las probabilidades entonces de que ambos hashes colisionen es el producto de las probabilidades de colisión de ambos algoritmos. Así icluso alguien se las apañara, para alterar el contenido de un fichero y con el mismo tamaño lograr que tuviera el mismo hash que antes... al haber dos algoritmos calculando 2 hashes distintos, los mismos cambios que fueren válidos para 'falsear' el hash para el algortimoA, va ser prácticamente imposible que también sena válidos para el hash calculado por el algoritmoB.

Respecto de tu última pregunta:
No. No hay forma se saber en el mundo digital si un fichero es una copia de otro... entendiendo por copia el mismo contenido.
Cuando se hace una copia de una obra de arte (por ejemplo), siendo algo físico, cabe la dificultad del material, si es antiguo, si usa los mismos materiales, etc... siempre habrá distinciones (otra cosa es que sean fácilmente detectables).

Pero en el mundo digital... supongamos que 1 millón de personas tenemos el mismo S.O. y misma versión y contiene un fichero llamado System.dll, es de suponer que todos tiene el msimo contenidos (salvo que se hayan compilado exprofeso para el procesador destino de cada equipo y que vamos a suponer que no fuera el caso)... Cuál es copia de cuál?. Tu fichero del mío o el mío del tuyo. Si son idénticos, que más dá.
Cuando tienes un fichero en el disco duro de tu pc, y lo copias a una memoria USB... es una copia, jamás será el del PC. No es físico, aunque la unidad de almacenamiento si lo sea. En realidad tu pregunta es absurda, y es propia de un niño que empieza a utilizar los ordenadores y no sabe gran cosa de tecnología.

Si tienes un fichero y no quieres que nadie tenga copia del mismo, entonces lo que tienes que hacer es cifrarlo con una contraseña. ...típicamente, los programas compresores permiten al comprimir cifrarlo con una contraseña. Todavía podrán tener copia de éste, pero sin la contraseña, no podrán descomprimirlo y por tanto no podran tener acceso al fichero original.

...pero todo esto es algo que si.. por lo menos utilizas ordenadores desde hace varios años, ya deberías saber.
En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.460


Hackentifiko!


Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #4 en: 1 Marzo 2023, 15:21 pm »

Cuando dos contenidos distintos arrojan el mismo, hash se dice que se ha producido una colisión...
Las colisiones vienen a ser inevitables, es decir no se puede predecir (si el algoritmo está bien programado).
Creo que me confundí. Lo ideal es que arrojen distintos, sí. Pero a mí lo que me preocupó es que al cargar distintos archivos lo que se cargue fuera lo mismo, si el hash era el mismo, pero nah, lo que se carga son los datos, que si son distintos, lo que se cargue será distinto. No problem.

Citar
No hay forma se saber en el mundo digital si un fichero es una copia de otro... entendiendo por copia el mismo contenido.
¿No son cosas distintas? Una cosa es copiar el fichero y otra su contenido. No había pensado que pudiera hacerse lo 2ndo, creo que nada puede hacerse contra eso, concuerdo. Pero si de un archivo se trata ¿no se guarda en él la fecha en que fue creado y modificado? En Windows de algún modo se capta. ¿Esa info se guarda en algún lugar de Windows o en el archivo? Porque si se guarda en el archivo puede ser una manera de complicar que el copiar funcione, si las fechas no coinciden con variables entreveradas en el archivo.
Ejemplo:
Tengo un txt creado el 27‎ de ‎febrero‎ de ‎2023
Si lo copio y pego en la misma carpeta, este dice 01‎ de ‎marzo‎ de ‎2023
Si en el contenido del archivo hay una variable (es que el lenguaje que uso graba solamente variables) que dice "27f23" o algo menos obvio, y en el programa el archivo sólo funciona si la fecha de creación de dicho archivo coincide con la especificada en la variable, entonces la copia no funcionará a menos que se modifique la variable o se haga la copia luego de alterar la fecha en Windows.

Por otro lado no hay que confundir el contenido legible por el bloc de notas y el código hexadecimal o lo que sea.
Cuando pregunto si se guarda la fecha, me refiero a lo 2ndo, pero cuando hablo de variables me refiero a lo 1ero (aunque entiendo que eso se guarda en lo 1ero también).

En el caso de un instalador capaz que se podría hacer algo similar, que si su fecha de creación es por ejemplo posterior a 1 mes de la original entonces no funcione. No sé si al copiar un archivo de un cd por ejemplo la copia tiene nueva fecha de creación.

Citar
En realidad tu pregunta es absurda, y es propia de un niño que empieza a utilizar los ordenadores y no sabe gran cosa de tecnología.
Los uso más o menos desde el 2000, pero usarlos no implica ponerse a investigar mucho cómo funcionan, tampoco sé cómo funciona una heladera o incluso mi propio cuerpo...

Citar
Si tienes un fichero y no quieres que nadie tenga copia del mismo, entonces lo que tienes que hacer es cifrarlo con una contraseña. ...típicamente, los programas compresores permiten al comprimir cifrarlo con una contraseña. Todavía podrán tener copia de éste, pero sin la contraseña, no podrán descomprimirlo y por tanto no podran tener acceso al fichero original.
Como dije serían los datos de una partida de un videojuego. No puedo guardarlos de modo que sean ilegibles creo. Y con el programa que uso, menos podría leerlos dentro de un rar, etc, y menos con contraseña.
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #5 en: 2 Marzo 2023, 01:16 am »

Técnicamente la fecha no forma parte del fichero.
La fecha y otros atributos son lo que se llaman los metadatos, igual que el nombre del fichero.
Cuando copias un fichero a otra unidad, se copia como mínimo el contenido, suele copiarse el nombre dle fichero y el resto de metadatos, pero solo cuando es posible, por ejemplo, la fecha de último acceso cambia cada vez que abres el fichero, pero las fechas no son fiables, porque se pueden cambiar, lo mismo que un atributo de 'sólo lectura', o el nombre del fichero.

Claro que usar algo, no implica conocer como funciona por dentro, pero es común que cuando alguien se interesa por algo, conozca ciertos detalles mínimos, como también es lo normal que algien que maneja algo 20 años sepa ciertos detalles más allá del mero uso, de aquello que usa. Pero no es obligatorio, ciertamente, aunque siendo éste un foro d eprogramación, se da por supuesto que los usuarios habituales, tengan un conocimiento 'muy por encima de la media'...

Si usas un programa para guardar los datos que precisas, claramente puede no tener posibilidad de hacer ciertas cosas, ahora bien, entiendo que si se trata de una partida de un juego, deberían esmerarse en no guardar los datos en texto plano, si  existe la posibilidad de que sena maniplados por el jugador o peor por otros jugadores...

Pero francamente, si usas un programa que tiene sus usos y limitaciones, para qué te preocupas por el asunto?. Es como preocuparse por que un vehículo no puede avanzar sobre zanjas de 6 metros de largo... claro, 20, 30 centímetros ya sería un reto quizás un 4x4 tenga mas capacidad pero llegado un punto es pedirle peras al manzano.

Quizás lo más acertado sea escribir al programador y pedirle lo que quieres, aclarando el porqué de dicha necesidad, si ciertamente el fichero sea accesible y manipulable, no costaría mucho convencerlo para que hiciera cambios en la siguiente versión del programa.
En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.460


Hackentifiko!


Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #6 en: 2 Marzo 2023, 11:07 am »

las fechas no son fiables, porque se pueden cambiar
La de creación no sé cómo. Igual no importa, el asunto es que el copiador no sabría por qué su copia no funciona, no necesariamente se le ocurriría que es debido a la diferente fecha, por lo que no necesariamente la cambiaría. Entre más reduzca las chances de que hagan trampa mejor, mientras no me tenga que esforzar demasiado.

Citar
deberían esmerarse en no guardar los datos en texto plano
Sí, es que nunca probé, es buena idea, ayuda, pero creo que los datos se guardarán de modo humanamente legible también, es decir, el archivo puede ser un .sav por ejemplo, pero si se abre con el bloc de notas creo que se vería igual a como abrir un txt. Probaré algún día.

Citar
Pero francamente, si usas un programa que tiene sus usos y limitaciones, para qué te preocupas por el asunto?
Es que no sé si realmente es imposible, pregunto por curiosidad, me interesa aprender a usar las herramientas que tengo no a su máximo potencial pero más o menos sí.
En línea

scully

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #7 en: 7 Marzo 2023, 20:27 pm »

Hola!!! Para eso puedes generar un hash para verificar la autenticidad:
 

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.
En línea

Jr. en PHP y JS, front end dev. Y aprendiz (apasionada) de seguridad informatica



IG: @scullyddlr
Twitter: @scully_ddlr
Falo Zipo Pixote

Desconectado Desconectado

Mensajes: 143


Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #8 en: 7 Marzo 2023, 22:21 pm »

Hola!!! Para eso puedes generar un hash para verificar la autenticidad:
 

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.

Sí, pero con éso no le dices nada. Te has limitado a hacer un copia-y-pega de lo que antes han escrito otros y que no le das ninguna indicación útil.

Por ejemplo aquí:
https://cau.sci.uma.es/faq/index.php?solution_id=1181

La verdad, para copiar-y-pegar cosas que has encontrado en  Google, sin dar información verdaderamente útil, adicional, mejor no escribir y hacernos leer un mensaje inútil.


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: ¿Hacer programa que genere/cargue archivo y detecte que no es una copia?
« Respuesta #9 en: 8 Marzo 2023, 00:37 am »

@Falo Zipo Pixote: Tranquilo amigo.

El usuario @scully ha dado su opinión; y si bien ya había sido mencionada, se valora el esfuerzo de comentar algo sobre el tema.

Además, ten en cuenta de que es un usuario nuevo y puede tomarle tiempo adaptarse al foro (aunque venga leyéndolo hace tiempo).

Cualquier consulta, me mandas un MP (para no desvirtuar más el hilo).

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines