una software que proteger para ofuscar ofuscado licencia fuente encrypt ejemplos crear costo como codigo code encryption

encryption - software - proteger codigo fuente java



Proteger el acceso al código fuente de Java (11)

¿Qué fue robado?

  • La fuente ? Puedes poner Strings al azar en él (pero se puede cambiar). También puede intentar agregar un comportamiento especial que solo sepa usted (una pulsación de tecla especial cambiará una fila de color), luego puede preguntarle al maestro "¿los demás conocen este combo especial?". La mejor forma de colisionar el programa es que si un archivo vacío e inútil no está presente en el archivo después de 5 minutos de actividad, tus compañeros de escuela serán demasiado vagos para esperar esta cantidad de tiempo.

  • El binario? Basta con comparar la suma de comprobación de cada clase. (Sus compañeros de escuela son demasiado perezosos para reescribir los archivos de la clase)

La semana pasada, tuve que crear una pequeña GUI para la tarea. Ninguno de mis compañeros de escuela lo hizo. Me han robado el que teníamos que subir y luego lo subieron como el suyo. Cuando le dije a mi maestra que era todo mi trabajo, no me creyó.

Así que pensé en poner un método inútil o algo dentro con una prueba de que lo codifiqué. Pensé en el cifrado. Mi mejor idea hasta ahora:

String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64

¿Puedes pensar en algunas otras formas mejores?


En mi caso, mis maestros llegaron con un mejor enfoque. Las preguntas que proporcionaron tienen algo que ver con nuestro número de registro. Ex:

La entrada a una función / teoría es nuestro número de registro, que es diferente para cada estudiante

Por lo tanto, las respuestas o el enfoque de la solución son relativamente diferentes de cada alumno. Esto hace que necesariamente todos los estudiantes tengan que hacer su tarea solos o, al menos, sepan cómo hackear el enfoque con su propio registro. puede ser más difícil que aprender la lesión;)].

Hope your lecturer will read this thread before his next tutorial :D


Esto sucedió con un par de mis estudiantes que vivían en el mismo departamento. Uno robó el código fuente de un disco que quedó en el cajón de un escritorio.

El ladrón modificó ligeramente la fuente robada, por lo que no sería obvio. Observé la similitud del código de todos modos, y examiné la fuente en un editor. Algunas de las líneas tenían espacios adicionales en los extremos. La fuente de cada alumno tenía la misma cantidad de espacios adicionales.

Puede explotar esto para codificar información sin hacerla visible. Puede codificar sus iniciales o su ID de estudiante al final de algunas líneas, con espacios.

Es probable que un ladrón realice cambios cosméticos en el código visible, pero puede pasar por alto los caracteres no visibles.

EDITAR:

Pensando en esto un poco más, podría usar espacios y pestañas como dits y dahs de código Morse, y poner su nombre al final de varias líneas. Un ladrón podría eliminar, reordenar o volver a escribir algunas líneas sin destruir su identificación.

EDICION 2:

"Esteganografía de espacios en blanco" es el término para ocultar mensajes en espacios en blanco. La búsqueda en Google revela esta implementación de fuente abierta que se remonta a los años 90, utilizando la codificación Huffman en lugar del código Morse.


Lo mejor que puede hacer es simplemente comprimir el código fuente con una contraseña y enviar la contraseña al maestro por correo electrónico.

Problema resuelto.


Me parece un problema de administración de TI. Cada estudiante debe tener su propia área de carga a la que no pueden acceder otros estudiantes.

El profesor tendría un nivel más alto, pudiendo acceder a la carpeta de carga de cada alumno. Si esto no es posible, vaya con @exabrial answer ya que esa es la solución más simple.


Si carga el archivo en formato .zip con cifrado de contraseña, cualquiera puede descifrar la contraseña descargando el archivo .zip y hacer que su CPU ejecute un millón de consultas si es un ladrón de trampas. Desafortunadamente, algunos lo son y es fácil de hacer.

Su fuente puede ser vista en el servidor compartido por los otros estudiantes. El profesor realmente debería darle su propio directorio cifrado con contraseña para cargarlo. Esto podría hacerse fácilmente simplemente agregando subdominios. Pero tal vez el maestro pueda permitirle subir los archivos a su propio servidor para que pueda acceder a ellos allí.

También es posible ofuscar el script para que tenga un document.write (''Esta página fue escrita por xxxxx''), lo que obliga a cualquiera que copie su trabajo a no ser capaz de eliminar el crédito a menos que primero lo descifren. Pero la verdadera respuesta es que su escuela necesita darles a cada uno de sus estudiantes sus propios directorios protegidos con contraseña.


Si le está dando el código fuente al maestro, simplemente agregue un serialVersionUID a uno de sus archivos de clase que es una versión encriptada de su nombre. Usted mismo puede descifrarlo al maestro.

Eso no significa nada para los demás, solo para ti. Puedes decir que es un código generado, si lo están robando, probablemente no se molestarán en modificarlo en absoluto.

Si desea hacerlo de una manera elegante, puede utilizar este truco , si encuentra la semilla aleatoria que produce su nombre. :) Ese sería tu número entonces, y donde sea que aparezca eso probaría que fuiste tú quien hizo ese código.


Si tus compañeros de clase robaron tu código del sitio de carga, cifraría tu tarea y le enviarías la clave por correo electrónico al maestro. Puede hacer esto con PGP si quiere ser complicado, o algo tan simple como un archivo Zip con una contraseña.

EDITAR: PGP le permite encriptar / firmar sin revelar su clave, pero no puede vencer la simplicidad de corte de un archivo Zip con una contraseña, así que simplemente elija una nueva clave para cada tarea. Belleza en simplicidad :)


Solo publique su solución en el último minuto. Esto no le dará tiempo a nadie para copiarlo.

Y envíe un comentario al administrador para no permitir que los alumnos vean otras tareas de los alumnos.


Tuve el mismo problema que hace mucho tiempo. Teníamos máquinas con Windows 2000 y archivos cargados en una carpeta de red de Novela que todos podían ver. Utilicé varios trucos para vencer incluso a los mejores ladrones: marcas de agua en espacios en blanco; metadata marca de agua; personajes inusuales; sellado de tiempo confiable; modus operandi. Aquí están ellos en orden.

Marca de agua blanca

Esta es mi contribución original a la marca de agua. Necesitaba una marca de agua invisible que funcionaba en archivos de texto. El truco que se me ocurrió fue poner un patrón específico de espacios en blanco entre los enunciados de programación (o párrafos). El archivo les parecía igual: algunas declaraciones de programación y saltos de línea. Al seleccionar el texto cuidadosamente se mostrarán los espacios en blanco. Cada línea vacía contendría un cierto número de espacios que obviamente no son aleatorios ni accidentales. (por ej., 17) En la práctica, este método hizo el trabajo por mí porque no podían descifrar qué estaba incrustando en los documentos.

Marca de agua de metadatos

Aquí es donde cambia los metadatos del archivo para contener información. Puede incrustar su nombre, un hash, etc. en partes invisibles de un archivo, especialmente EXE. En NT días, las secuencias de datos alternativas eran populares.

Personajes inusuales

Voy a arrojar este en patadas. Un viejo truco de suplantación de IRC era hacer un nombre con letras que se parezcan al nombre de otra persona. Puedes usar esto en marcas de agua. El Mapa de caracteres en Windows le dará muchos caracteres inusuales que se parecen, pero no son, a una letra o número que podría usar en su código fuente. Estos aparecer en un lugar específico en el trabajo de otra persona no pueden ser accidentales.

Marca de tiempo de confianza

En pocas palabras, envía un archivo (o su hash) a un tercero que le agrega una marca de tiempo y lo firma con una clave privada. Cualquiera que desee una prueba de cuándo creó un documento puede ir al tercero de confianza, a menudo un sitio web, para verificar su prueba del tiempo de creación. Estos han sido utilizados en casos judiciales para disputas de propiedad intelectual por lo que son una forma muy sólida de evidencia. Son la forma estándar de lograr la prueba que estás buscando. (Incluí los otros primero b / c son fáciles, son más divertidos y probablemente funcionen).

Este artículo de Wikipedia podría ayudar a su instructor a comprender su evidencia y la sección de enlaces externos tiene muchos proveedores, incluidos los gratuitos. Corrí los archivos de prueba a través de los gratuitos durante unos días antes de usarlos para algo importante.

Modus operandi

Entonces, hiciste algo y ahora tienes pruebas ¿no? No, los estudiantes aún pueden decir que les robaste la idea o alguna otra tontería. Mi solución para esto fue, en privado, establecer uno o más de mis métodos con mi instructor. Le digo al instructor que busque el espacio en blanco, busque ciertos símbolos, etc., pero que nunca le cuente a los demás cuál fue la marca de agua. Si el instructor acepta mantener sus técnicas simples en secreto, probablemente continuarán funcionando bien. Si no, siempre hay marcas de tiempo confiables. ;)


Use un sistema de control de versiones distribuidas (= autónomo), como git . Puede ser útil también

Un historial de versiones con su nombre y fechas puede ser lo suficientemente convincente.