Skip to content

Instantly share code, notes, and snippets.

@CaptSolo
Created November 1, 2019 11:42
Show Gist options
  • Save CaptSolo/0cd32b5750961d1b0ac274d304041593 to your computer and use it in GitHub Desktop.
Save CaptSolo/0cd32b5750961d1b0ac274d304041593 to your computer and use it in GitHub Desktop.
CyberChess CTF task - Central African Republic
# Title:
# capture Central African Republic (flag) - Math is hard
#
# Description:
# You can do this on a paper, or you can let computers solve this for you.
# Python file:
from zlib import crc32
wey = raw_input("You must know de wey: ").strip()
p = [ord(_) for _ in wey]
if len(p) == 32:
know = True
know &= p[16] & p[5] - p[19] & p[1] - p[18] + p[27] & p[27] - p[17] & p[2] - p[20] & p[26] == 0
know &= p[4] ^ p[14] + p[8] / p[29] ^ p[0] * p[23] - p[6] - p[25] * p[3] == 3147
know &= p[20] - p[3] - p[16] ^ p[7] / p[22] / p[18] * p[4] * p[10] == -170
know &= p[12] & p[19] | p[3] / p[22] + p[26] & p[28] | p[7] / p[1] == 103
know &= p[29] | p[23] + p[8] ^ p[0] - p[4] + p[7] / p[2] == -133
know &= p[31] | p[13] ^ p[28] ^ p[4] / p[3] | p[11] == 127
know &= p[12] & p[30] * p[1] | p[16] & p[1] == 84
know &= p[1] & p[4] | p[13] ^ p[19] * p[12] & p[2] - p[23] | p[13] == 117
know &= p[0] * p[25] | p[14] ^ p[22] * p[19] ^ p[7] + p[14] / p[6] | p[16] / p[25] == 16317
know &= p[5] | p[21] | p[13] == 116
know &= p[1] * p[1] * p[18] + p[25] | p[0] | p[15] / p[4] + p[23] == 1278463
know &= p[21] | p[31] + p[19] + p[9] & p[27] + p[17] + p[6] + p[23] / p[15] / p[7] * p[20] == 372
know &= p[14] ^ p[24] + p[15] & p[25] == 32
know &= p[7] - p[14] | p[8] ^ p[1] - p[31] + p[2] == 66
know &= p[29] & p[20] + p[31] - p[22] & p[17] ^ p[10] - p[7] == -21
know &= p[17] / p[2] * p[29] - p[1] + p[1] & p[7] * p[9] | p[6] == 112
know &= p[1] & p[24] & p[17] | p[1] / p[16] | p[6] & p[0] == 97
know &= p[14] / p[13] ^ p[17] / p[22] / p[6] & p[8] * p[23] | p[6] * p[2] == 4896
know &= p[18] + p[17] | p[29] / p[6] ^ p[30] ^ p[11] / p[15] | p[19] + p[21] | p[11] == 251
know &= p[6] | p[0] & p[28] / p[11] ^ p[24] ^ p[30] & p[9] & p[3] + p[23] - p[1] - p[24] == 117
know &= p[29] | p[6] * p[10] | p[9] ^ p[5] == 2557
know &= p[10] - p[4] + p[24] * p[17] - p[26] + p[1] / p[2] - p[13] - p[28] * p[5] == 7790
know &= p[29] / p[2] + p[13] | p[10] / p[22] == 101
know &= p[26] + p[15] - p[15] == 95
know &= p[7] / p[24] - p[18] & p[18] / p[20] ^ p[1] ^ p[28] & p[15] | p[8] | p[27] | p[19] == 127
know &= p[20] | p[25] == 51
know &= p[9] & p[19] & p[22] * p[29] - p[2] / p[11] - p[24] - p[4] | p[8] == 127
know &= p[7] & p[18] + p[24] & p[5] | p[19] / p[28] ^ p[0] & p[14] ^ p[22] * p[20] + p[26] == 5581
know &= p[3] - p[14] + p[25] * p[14] - p[17] * p[9] ^ p[7] | p[15] * p[12] == -3593
know &= p[17] + p[16] - p[15] * p[20] - p[24] / p[26] - p[23] / p[4] & p[28] ^ p[1] == 119
know &= p[12] & p[11] + p[22] == 6
know &= p[6] - p[13] * p[25] - p[23] ^ p[6] == -5163
know &= p[30] ^ p[11] * p[17] & p[3] & p[18] == 106
know &= p[29] * p[3] == 14883
know &= p[19] * p[10] - p[8] / p[24] + p[11] == 5304
know &= p[14] & p[0] & p[31] == 32
know &= crc32(wey) == 0x56aafddc
else:
know = False
print
if know:
print "Congratulations, it indeed is the right flag!"
else:
print "Try harder!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment