43 lines
1004 B
Python
43 lines
1004 B
Python
#!/usr/bin/python3
|
|
|
|
from datetime import datetime
|
|
|
|
CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"
|
|
KEY_SIZE = 32
|
|
FIRST_SEED = 1354320000
|
|
LAST_SEED = 1356998400
|
|
DAY_DURATION = 86400
|
|
BZ2_HEADER = b'\x42\x5a\x68'
|
|
|
|
def gen_key(seed):
|
|
rand = seed
|
|
key = [0]*KEY_SIZE
|
|
for i in range(KEY_SIZE):
|
|
rand = (rand * 214013 + 2531011) & 0xffffffff
|
|
rand2 = (rand >> 16) & 0x7fff
|
|
key[i] = CHARSET[rand2 % len(CHARSET)]
|
|
return key
|
|
|
|
def decipher_bz2(data, key):
|
|
out = bytearray()
|
|
for i in range(len(data)):
|
|
if i > 3 and out[0:3] != BZ2_HEADER:
|
|
return None
|
|
out.append(data[i] ^ ord(key[i % KEY_SIZE]))
|
|
return out
|
|
|
|
f = open("oDjbNkIoLpaMo.bz2.crypt", mode="rb")
|
|
data = f.read()
|
|
f.close()
|
|
seed = FIRST_SEED
|
|
print(datetime.fromtimestamp(seed))
|
|
while seed <= LAST_SEED:
|
|
out = decipher_bz2(data, gen_key(seed))
|
|
if out:
|
|
f = open(f"out-{seed}.bz2", mode="wb")
|
|
f.write(out)
|
|
f.close()
|
|
seed += 1
|
|
if (seed - FIRST_SEED) % DAY_DURATION == 0:
|
|
print(datetime.fromtimestamp(seed))
|