Por lo tanto, tengo esto:
Sé que se usó algo de código para generar una secuencia aleatoria, y se parecía aproximadamente a esto:
#include <iostream>
#include <string>
int main() {
const std::string alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
std::string temp = "1234567890";
srand(MAGICNUMBER);
for (int i = 0;; ++i) {
for (int j = 0; j < 10; ++j) {
temp[j] = alphabet[rand() % alphabet.size()];
}
std::cout << temp << std::endl;
}
}
Se usó para generar una secuencia de 124660967 cadenas, la última de las cuales fue "2lwd9JjVnE", y luego se detuvo. El compilador utilizado fue g ++ 4.8 de 64 bits para Linux. Lo que quiero es encontrar la cadena 124660968, es decir, la que se imprimirá a continuación. La advertencia, por supuesto, es que no conozco el MAGICNUMBER
. Estoy bastante seguro de que es posible forzar todas las posibilidades, pero parece que llevaría milenios. He intentado husmear en el código fuente de rand()
, pero realmente no lo entiendo, y mucho menos explotarlo. ¿Es posible encontrar esa cadena en un tiempo más o menos razonable?
UPD ¿Es incluso posible generar lo que se supone que va después de mi cadena sin descubrir la semilla?