import sys
import base64
from Crypto.Cipher import DES3
from Crypto.Hash import SHA
# hardcoded XOR key
KEY = "12150F10111C1A060A1F1B1817160519".decode("hex")
def sitelist_xor(xs):
return ''.join(chr(ord(c) ^ ord(KEY[i%16]))for i, c in enumerate(xs))
def des3_ecb_decrypt(data):
# hardcoded 3DES key
key = SHA.new(b'<!@#$%^>').digest() + "\x00\x00\x00\x00"
# decrypt
des3 = DES3.new(key, DES3.MODE_ECB, "")
decrypted = des3.decrypt(data)
# quick hack to ignore padding
return decrypted[0:decrypted.find('\x00')] or "<empty>"
if __name__ == "__main__":
# read arg
encrypted_password = base64.b64decode('jWbTyS7BL1Hj7PkO5Di/QhhYmcGj5cOoZ2OkDTrFXsR/abAFPM9B3Q==')
# decrypt
password = des3_ecb_decrypt(sitelist_xor(encrypted_password))
# print out
print("Decrypted password : %s" % password)
sys.exit(0)
aW1wb3J0IHN5cwppbXBvcnQgYmFzZTY0CmZyb20gQ3J5cHRvLkNpcGhlciBpbXBvcnQgREVTMwpmcm9tIENyeXB0by5IYXNoIGltcG9ydCBTSEEKCiMgaGFyZGNvZGVkIFhPUiBrZXkKS0VZID0gIjEyMTUwRjEwMTExQzFBMDYwQTFGMUIxODE3MTYwNTE5Ii5kZWNvZGUoImhleCIpCgpkZWYgc2l0ZWxpc3RfeG9yKHhzKToKICAgIHJldHVybiAnJy5qb2luKGNocihvcmQoYykgXiBvcmQoS0VZW2klMTZdKSlmb3IgaSwgYyBpbiBlbnVtZXJhdGUoeHMpKQoKZGVmIGRlczNfZWNiX2RlY3J5cHQoZGF0YSk6CiAgICAjIGhhcmRjb2RlZCAzREVTIGtleQogICAga2V5ID0gU0hBLm5ldyhiJzwhQCMkJV4+JykuZGlnZXN0KCkgKyAiXHgwMFx4MDBceDAwXHgwMCIKICAgICMgZGVjcnlwdAogICAgZGVzMyA9IERFUzMubmV3KGtleSwgREVTMy5NT0RFX0VDQiwgIiIpCiAgICBkZWNyeXB0ZWQgPSBkZXMzLmRlY3J5cHQoZGF0YSkKICAgICMgcXVpY2sgaGFjayB0byBpZ25vcmUgcGFkZGluZwogICAgcmV0dXJuIGRlY3J5cHRlZFswOmRlY3J5cHRlZC5maW5kKCdceDAwJyldIG9yICI8ZW1wdHk+IgoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CgogICAgIyByZWFkIGFyZwogICAgZW5jcnlwdGVkX3Bhc3N3b3JkID0gYmFzZTY0LmI2NGRlY29kZSgnaldiVHlTN0JMMUhqN1BrTzVEaS9RaGhZbWNHajVjT29aMk9rRFRyRlhzUi9hYkFGUE05QjNRPT0nKQogICAgIyBkZWNyeXB0CiAgICBwYXNzd29yZCA9IGRlczNfZWNiX2RlY3J5cHQoc2l0ZWxpc3RfeG9yKGVuY3J5cHRlZF9wYXNzd29yZCkpCiAgICAjIHByaW50IG91dAogICAgcHJpbnQoIkRlY3J5cHRlZCBwYXNzd29yZCA6ICVzIiAlIHBhc3N3b3JkKQoKICAgIHN5cy5leGl0KDApCg==