| 1234567891011121314151617181920212223242526272829303132333435363738 |
- #!/usr/bin/env python3
- from hashlib import md5
- from itertools import count
- def hashes(key):
- for i in count(0):
- h = md5((key + str(i)).encode('ascii')).digest()
- if h[0] + h[1] == 0 and h[2] <= 0xf:
- yield h
- def door1(key):
- password = ''
- for h in hashes(key):
- password += hex(h[2])[-1]
- if len(password) == 8:
- print('\r', end='')
- return password
- print('\r' + password, end='')
- def door2(key):
- password = bytearray(b'\0\0\0\0\0\0\0\0')
- for h in hashes(key):
- i = h[2]
- if i < 8 and password[i] == 0:
- password[i] = ord('%x' % (h[3] >> 4))
- if all(password):
- print('\r', end='')
- return password.decode('ascii')
- print('\r' + password.decode('ascii').replace('\0', '_'), end='')
- print(door1('ugkcyxxp'))
- print(door2('ugkcyxxp'))
|