Estimados colegas
Encontré mis viejas muestras inversas, desafortunadamente no la última versión.
No recuerdo todos los detalles con mucha precisión, el experimento se realizó en 2012, pero a medida que profundizan en el código, aparecen con mayor claridad.
Advertencia: El código adicional se saca de contexto, una descripción de su funcionamiento se realiza desde la memoria y puede contener errores, se proporciona únicamente con fines educativos.
Así es como se prepararon los datos para entrenar y probar la red neuronal. Primero, se generaron cadenas de este tipo; representan el resultado deseado:
spins : 0; server code word : 74b0dc5166334873643c9869327b23c6 spins : 1; server code word : 46e87ccd238e1f29625558ec2ae8944a spins : 2; server code word : 79e2a9e341b71efb2eb141f2507ed7ab spins : 3; server code word : 4db127f8122008545bd062c2515f007c spins : 4; server code word : 140e0f7666ef438d1190cde71f16e9e8
Entonces, algo así resultó ser hash para entrenar la red neuronal.
FILE *fp; sha256_context stx; int ss,zz,yy,ii,jj,zzi; unsigned long int pdata; fp = fopen("data_src", "rb"); if(!fp) return 1;
Lo que le dio a la salida algo como lo siguiente:
d34453f3c04552ee19cb6734ab71ad124710cfc98401570f73f65cb8cfa2a64d 6cc8ca5b918d1a22d5141494ad08b76a6c67cd5f649744f80d2fad4916b2b6d9 f89e9fd9609099b22924a77a5c8122c06118608c4287fca1cdafe5827249bce7 35280fd1e2289488828004682679452a070ccd90c12072fcb904529ab18e3f9d 1112c4cffb617c835874446f13c4d7d29fa091ba7ac996b776998f89dedffcc1 02e0521aae2d4ecdeb4482bda545bb222e1280ec1f580d5d23e29fb719252f70
Entonces todo esto se desarrolló poco a poco:
El resultado del trabajo en tales:
855 1408 1408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [...]
los archivos fueron alimentados a la red neuronal como una muestra de entrenamiento y prueba.
usé la biblioteca FANN, probé diferentes neuronas.
El resultado ciertamente fue, pero fue mixto. No fue posible restaurar completamente el texto original.
Sin embargo, a veces fragmentos de parte de las líneas se deslizaron a través de restaurados con bastante precisión.
Creo que este problema tiene una solución, solo para descubrir que aún debe hacer un esfuerzo.
Por ejemplo, tiene sentido alimentar todas las variables internas del algoritmo de hash a la entrada de red durante el entrenamiento. También tiene sentido lanzar redes competitivas y enseñar a otra red a reconocer el resultado de la consulta.
Estos curiosos experimentos ahora se pueden hacer mucho más fácil que en 2012.
Con el advenimiento de herramientas como Python con Tensorflow, sklearn numpy, scipy y un repositorio de tesorería, todo esto se ha vuelto mucho más fácil de verificar.