diff options
| author | Benedict <benedict@0xb8000.de> | 2016-08-11 18:56:21 +0200 |
|---|---|---|
| committer | Benedict <benedict@0xb8000.de> | 2017-02-21 13:00:25 +0100 |
| commit | b2aa636bfee0c4a7f607eaad06803cd7c42d8214 (patch) | |
| tree | b567626a8f22d46044f8b1aaf81d6fdbd7dc57ba /lib/lib3.c | |
| parent | 62fa141050aa054183fb781fed8e782f99e6072f (diff) | |
set3, challenge 22 completed
Diffstat (limited to 'lib/lib3.c')
| -rw-r--r-- | lib/lib3.c | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -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; + } + } +} |
