summaryrefslogtreecommitdiff
path: root/lib/lib3.c
diff options
context:
space:
mode:
authorBenedict <benedict@0xb8000.de>2016-08-11 18:56:21 +0200
committerBenedict <benedict@0xb8000.de>2017-02-21 13:00:25 +0100
commitb2aa636bfee0c4a7f607eaad06803cd7c42d8214 (patch)
treeb567626a8f22d46044f8b1aaf81d6fdbd7dc57ba /lib/lib3.c
parent62fa141050aa054183fb781fed8e782f99e6072f (diff)
set3, challenge 22 completed
Diffstat (limited to 'lib/lib3.c')
-rw-r--r--lib/lib3.c32
1 files changed, 32 insertions, 0 deletions
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;
+ }
+ }
+}