Subway
This may seem like a regular substitution cipher, but it doesn't seem to work with a regular alphabet. (Hint: what non-alphabetic characters does the ciphertext have?)
The ciphertext is
W74 5o06 8v XP32W5-{qdw_0_vepsog_vx1vwewxwedq_w7ev_wepg}
We can analyse the ciphertext and try to draw conclusions. We know that the flag begins with UMDCTF. By analysing the word lengths, I also knew that the ciphertext started with "The flag is...". For instance, the mappings that I saw are commented below.
We realise that
A -> 0
, B -> 1
, C -> 2
, and so on. However, after O
, things get a bit confusing again. O -> L
, P -> M
, and so on. Any results greater than Z
will start from 0
again.c = "W74 5o06 8v XP32W5-{qdw_0_vepsog_vx1vwewxwedq_w7ev_wepg}"
# D -> 3
# C -> 2
# T -> W
# H -> 7
# E -> 4
# F -> 5
# I -> 8
# L -> O
m = ''
for char in c:
if char.isnumeric():
m += chr(ord('a') + int(char))
elif char.isalpha():
if char.lower() < 'o':
offset = ord(char.lower()) + 26 - ord('o')
else:
offset = ord(char.lower()) - ord('o')
new_char = ord('l') + offset
if new_char > ord('z'):
m += str(new_char - ord('z') - 1)
else:
m += chr(new_char)
else:
m += char
print(m)
Last modified 8mo ago