Advanced Reversing Mechanics 2
import string
def encryptflag(toencrypt):
index = 0
bvvar3 = toencrypt[index]
while True:
curbyte = bvvar3
uVar2 = curbyte - 10 & 0xff
uVar4 = curbyte
if (bvvar3 < 0x50) and (uVar4 == uVar2 or 0x50 < uVar2):
uVar4 = curbyte + 0x46 & 0xff
uVar4 = (uVar4 - 7 ^ 0x43) & 0xff
pbVar1 = index + 1
toencrypt[index] = (uVar4 << 6) | (uVar4 >> 2)
bvvar3 = toencrypt[pbVar1]
if bvvar3 == 0: break
uVar4 = pbVar1 % 5
bvvar3 = bvvar3 << (-uVar4 & 7) | bvvar3 >> (uVar4 & 0xff)
if uVar4 == 2:
bvvar3 = bvvar3 - 1
toencrypt[pbVar1] = bvvar3
bvvar3 = toencrypt[pbVar1]
index = pbVar1
for i in range(len(toencrypt)):
toencrypt[i] = toencrypt[i] & 255
enc = [0x0A, 0xFB, 0xF4, 0x88, 0xDD, 0x9D, 0x7D, 0x5F, 0x9E, 0xA3, 0xC6, 0xBA, 0xF5, 0x95, 0x5D, 0x88, 0x3B, 0xE1, 0x31, 0x50, 0xC7, 0xFA, 0xF5, 0x81, 0x99, 0xC9, 0x7C, 0x23, 0xA1, 0x91, 0x87, 0xB5, 0xB1, 0x95, 0xE4]
flag = list(b"rgbCTF{ARM_ar1thm3t1c_r0cks_fad")
l = len(flag)
flag += [0]*(len(enc) - len(flag))
temparr = flag[:]
for i in range(l,len(enc)):
for j in map(ord,string.ascii_lowercase + string.ascii_uppercase + '0123456789_}'):
temparr = flag[:]
temparr[i] = j
encryptflag(temparr)
if temparr[i] == enc[i]:
flag[i] = j
break
print(flag)
inter = map(chr,flag)
print(''.join(inter))
arr = list(b"rgbCTF{") + [0]
encryptflag(arr)
print(", ".join(map(hex,arr)))Flag: rgbCTF{ARM_ar1thm3t1c_r0cks_fad961}
Last updated
Was this helpful?