Skip to content

Instantly share code, notes, and snippets.

@amiremohamadi
Created September 1, 2024 22:16
Show Gist options
  • Save amiremohamadi/b922e30449c015117f10546b0dd591ae to your computer and use it in GitHub Desktop.
Save amiremohamadi/b922e30449c015117f10546b0dd591ae to your computer and use it in GitHub Desktop.
CyberSpace CTF 2024 - Sole Writeup
import string
var = {
'27': ord('C'),
'1': ord('S'),
'2': ord('C'),
'26': ord('T'),
'3': ord('F'),
'4': ord('{'),
'23': ord('}'),
}
def var_to_solve(*args):
unsolved_vars = []
for arg in args:
if not var.get(arg):
unsolved_vars.append(arg)
if len(unsolved_vars) == 1:
return unsolved_vars[0]
return None
def solve(var_name, callback):
for c in string.printable:
var[var_name] = ord(c)
if callback():
return True
return False
while True:
if v := var_to_solve('10', '17', '3'):
solve(v, lambda: var['10'] + var['17'] + var['3'] == 0x5f76c)
if v := var_to_solve('7', '25', '20'):
solve(v, lambda: var['7'] * var['25'] * var['20'] == 0x8a9a8)
if v := var_to_solve('27', '20', '13'):
solve(v, lambda: var['27'] * var['20'] + var['13'] == 0x1308)
if v := var_to_solve('7', '27', '10'):
solve(v, lambda: var['7'] + var['27'] + var['10'] == 199)
if v := var_to_solve('11', '20', '25'):
solve(v, lambda: var['25'] - (var['11'] + var['20']) == -0xe89)
if v := var_to_solve('3', '8', '1'):
solve(v, lambda: var['3'] * var['8'] - var['1'] == 0x1f65)
if v := var_to_solve('14', '8', '10'):
solve(v, lambda: var['14'] * var['8'] * var['10'] == 0x429c0)
if v := var_to_solve('26', '21', '13'):
solve(v, lambda: var['26'] * var['21'] + var['13'] == 0x2640)
if v := var_to_solve('8', '21', '3'):
solve(v, lambda: var['8'] - var['21'] - var['3'] == -0x46)
if v := var_to_solve('4', '19', '7'):
solve(v, lambda: var['4'] - var['19'] - var['7'] == -0x3f)
if v := var_to_solve('26', '22', '27'):
solve(v, lambda: var['26'] * var['22'] + var['27'] == 0x14ef)
if v := var_to_solve('1', '23', '15'):
solve(v, lambda: var['1'] * var['23'] + var['15'] == 0x28f3)
if v := var_to_solve('17', '6', '2'):
solve(v, lambda: var['17'] * var['6'] * var['2'] == 0xda2ce)
if v := var_to_solve('10', '3', '17'):
solve(v, lambda: var['10'] - var['3'] + var['17'] == 0x5d)
if v := var_to_solve('5', '6', '9'):
solve(v, lambda: var['5'] + var['6'] - var['9'] == 0x88)
if v := var_to_solve('23', '27', '9'):
solve(v, lambda: var['23'] + var['27'] + var['9'] == 0x11f)
if v := var_to_solve('4', '11', '20'):
solve(v, lambda: var['4'] + var['11'] - var['20'] == 0x68)
if v := var_to_solve('6', '3', '11'):
solve(v, lambda: var['11'] + var['6'] * var['3'] == 0x2033)
if v := var_to_solve('1', '20', '3'):
solve(v, lambda: var['1'] - var['20'] + var['3'] == 0x51)
if v := var_to_solve('10', '17', '7'):
solve(v, lambda: var['7'] - (var['10'] * var['17']) == -0x157f)
if v := var_to_solve('7', '9', '6'):
solve(v, lambda: var['7'] - var['9'] - var['6'] == -0x81)
if v := var_to_solve('20', '18', '19'):
solve(v, lambda: var['20'] + var['18'] + var['19'] == 0xe0)
if v := var_to_solve('21', '22', '11'):
solve(v, lambda: var['21'] + var['22'] + var['11'] == 0xe8)
if v := var_to_solve('13', '8', '3'):
solve(v, lambda: var['13'] - var['8'] + var['3'] == 2)
if v := var_to_solve('13', '8', '2'):
solve(v, lambda: var['13'] * var['8'] + var['2'] == 0x1603)
if v := var_to_solve('12', '22', '14'):
solve(v, lambda: var['12'] + var['22'] + var['14'] == 0xd2)
if v := var_to_solve('9', '1', '11'):
solve(v, lambda: var['9'] + var['1'] - var['11'] == 0x7d)
if v := var_to_solve('16', '1', '4'):
solve(v, lambda: var['16'] - var['1'] - var['4'] == -0x6f)
if v := var_to_solve('11', '12', '6'):
solve(v, lambda: var['11'] - var['12'] - var['6'] == -0xa3)
if v := var_to_solve('4', '1', '14'):
solve(v, lambda: var['4'] + var['1'] - var['14'] == 0x9e)
if len(var) == 26 and all([chr(v) in string.printable for v in var.values()]):
break
result = [var['27'], var['1'], var['2'], var['26'], var['3'],
var['4'], var['5'], var['6'], var['7'], var['8'], var['9'],
var['10'], var['11'], var['12'], var['13'], var['14'], var['15'],
var['16'], var['17'], var['18'], var['19'], var['20'], var['21'],
var['22'], var['23']]
print(''.join(map(chr, result)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment