From b2aa636bfee0c4a7f607eaad06803cd7c42d8214 Mon Sep 17 00:00:00 2001 From: Benedict Date: Thu, 11 Aug 2016 18:56:21 +0200 Subject: set3, challenge 22 completed --- lib/lib3.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'lib/lib3.c') diff --git a/lib/lib3.c b/lib/lib3.c index 43f3ec6..adea72e 100644 --- a/lib/lib3.c +++ b/lib/lib3.c @@ -129,3 +129,35 @@ int mt_19937() return (y & 0xFFFFFFFF); } + +int mt_19937_timestamp_orcale() +{ + sleep(random_number_between(40,1000)); + + unsigned int seed = time(NULL); + printf("timestamp orcale seed: %u\n", seed); + mt_19937_seed(seed); + + sleep(random_number_between(40,1000)); + + return mt_19937(); +} +/*** + * is there a more clever way to do this than brute force? + * + **/ +void mt_19937_brute_force_timestamp() +{ + unsigned int start = time(NULL); + int rnd = mt_19937_timestamp_orcale(); + unsigned int stop = time(NULL); + unsigned int i; + // try every seed between start and stop + for(i=start;start<=stop;i++) { + mt_19937_seed(i); + if (rnd == mt_19937()) { + printf("found seed: %u\n", i); + break; + } + } +} -- cgit v1.2.3-70-g09d2