add meet me halfway challenge
This commit is contained in:
53
crypto/MeetMeHalfway/challenge.py
Normal file
53
crypto/MeetMeHalfway/challenge.py
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
from random import randint
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util.Padding import pad
|
||||
import json
|
||||
|
||||
flag = b'HTB{dummyflag}'
|
||||
|
||||
def gen_key(option=0):
|
||||
alphabet = b'0123456789abcdef'
|
||||
const = b'cyb3rXm45!@#'
|
||||
key = b''
|
||||
for i in range(16-len(const)):
|
||||
key += bytes([alphabet[randint(0,15)]])
|
||||
|
||||
if option:
|
||||
return key + const
|
||||
else:
|
||||
return const + key
|
||||
|
||||
def encrypt(data, key1, key2):
|
||||
cipher = AES.new(key1, mode=AES.MODE_ECB)
|
||||
ct = cipher.encrypt(pad(data, 16))
|
||||
cipher = AES.new(key2, mode=AES.MODE_ECB)
|
||||
ct = cipher.encrypt(ct)
|
||||
return ct.hex()
|
||||
|
||||
|
||||
def challenge():
|
||||
k1 = gen_key()
|
||||
k2 = gen_key(1)
|
||||
|
||||
print(f'key1={k1}; key2={k2}')
|
||||
|
||||
ct = encrypt(flag, k1, k2)
|
||||
|
||||
|
||||
print('Super strong encryption service approved by the elves X-MAS spirit.\n'+\
|
||||
'Message for all the elves:\n' +ct + '\nEncrypt your text:\n> ')
|
||||
try:
|
||||
|
||||
dt = json.loads(input().strip())
|
||||
pt = bytes.fromhex(dt['pt'])
|
||||
res = encrypt(pt, k1, k2)
|
||||
print(res + '\n')
|
||||
exit(1)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print('Invalid payload.\n')
|
||||
exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
challenge()
|
||||
Reference in New Issue
Block a user