Created
November 1, 2019 11:42
-
-
Save CaptSolo/0cd32b5750961d1b0ac274d304041593 to your computer and use it in GitHub Desktop.
CyberChess CTF task - Central African Republic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 | |
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