|
|
@@ -0,0 +1,36 @@
|
|
|
+# 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) + ' };')
|