diff options
author | siddharth <s@ricketyspace.net> | 2021-09-04 19:01:21 -0400 |
---|---|---|
committer | siddharth <s@ricketyspace.net> | 2021-09-04 19:01:21 -0400 |
commit | 428baa6d91ea28ebc942c390b041f4be925be616 (patch) | |
tree | fa230b3514b94d07bdd1ef2a36713bd3bbc39163 /challenge/c24.go | |
parent | a8901ea04d835a32fdbcee8e4acc0f884a3f6782 (diff) |
challenge: C24: implement part 2
Diffstat (limited to 'challenge/c24.go')
-rw-r--r-- | challenge/c24.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/challenge/c24.go b/challenge/c24.go index d60036b..a2d4a20 100644 --- a/challenge/c24.go +++ b/challenge/c24.go @@ -5,6 +5,7 @@ package challenge import ( "fmt" + "time" "ricketyspace.net/cryptopals/lib" ) @@ -44,7 +45,27 @@ func C24() { panic(fmt.Errorf("Unable to crack 16-bit seed %v != %v\n", cseed, seed)) } fmt.Printf("Cracked 16-bit seed %v == %v\n", cseed, seed) + + // Part II: Check if password token is generated using MT19937 + // seeded with current time. + tseed := uint32(time.Now().Unix() - lib.RandomInt(60, 86400)) + token := lib.MTToken(tseed, 32) + guess := uint32(time.Now().Unix()) + for guess > uint32(time.Now().Unix())-86400 { // Go back 24 hours. + if token == lib.MTToken(guess, len(token)/2) { + fmt.Printf("Token generated using MT19937 seeded"+ + " with current time\n\tSeed: %v\n\tToken: %v\n", + guess, token) + return + } + guess -= 1 + } + fmt.Printf("Token not generated using MT19937 seeded with current time\n") + } // Output: // Cracked 16-bit seed [74 8] == [74 8] +// Token generated using MT19937 seeded with current time +// Seed: 1630730057 +// Token: 4b8dc62151d85802b7ce731b6b7b9a6e299740721a5555ed1f54eb9bc304a8b2 |