Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from Crypto.Cipher import AES
- from Crypto.Util.Padding import unpad, pad
- import binascii
- # example hashes password is ADMIN
- # 192.168.4.245=ADMIN,9fffcc32ee4ff7a419a1394121259f4e
- # 16bytesaaaaaaaaa=ADMIN,403c38617187a228142c0745b2c48c56
- def encrypt(device_name, encrypted_text):
- iv = b'\x00' * 16
- if len(device_name) < 16:
- key = pad(device_name, 16, style='iso7816')
- elif len(device_name) == 16:
- key = device_name
- padding_len = 16 - len(encrypted_text)
- padding = b'\x00' * padding_len
- data = encrypted_text + padding
- # data = pad(encrypted_text, 16, style='iso7816')
- print('Using key: {}'.format(key))
- print('Using iv: {}'.format(iv))
- print('Using data: {}'.format(data))
- cipher1 = AES.new(key, AES.MODE_CBC, iv)
- ct = cipher1.encrypt(data)
- print(ct.hex())
- def decrypt(device_name, encrypted_text):
- # I know, i'll get fancy later to catch the other cases.
- # RN only works if less than 16
- padding_len = 16 - len(device_name)
- padding = b'\x00' * padding_len
- key = device_name + padding
- print('Device Name (key): {}'.format(key))
- iv = b'\x00' * 16
- data = binascii.unhexlify(encrypted_text)
- print('Encrypted Text: {}'.format(data))
- cipher2 = AES.new(key, AES.MODE_CBC, iv)
- pt = cipher2.decrypt(data)
- print('Password: {}'.format(pt.decode()))
- if __name__ == '__main__':
- # encrypt(sys.argv[1].encode('utf-8'), sys.argv[2].encode('utf-8'))
- decrypt(sys.argv[1].encode('utf-8'), sys.argv[2])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement