Classical City
-
Decipher “ThieFhIT_glass” [Hint: flag is meaningful] (2 points)
Answer:: ``
-
Is this a keyboard error “H1rc82wa_Z|if1w” ? Must be... (3 points)
-
Can you play the transposition game “07r5h05h473n11nhrc7553!111p7!p” ? [Hint: key is numberic] (3 points)
According to Wikipedia, a "transposition cipher" (also known as a permutation cipher) is a method of encryption which scrambles the positions of characters (transposition) without changing the characters themselves.
The following Python script logged me all the outputs, from there it was a simple matter of identifying the patterns in the output:
import itertools def transpose_cipher(text, key): key = [int(i) for i in str(key)] decrypted_text = [""] * len(text) for i, char in enumerate(text): decrypted_text[key[i % len(key)]-1] += char return ''.join(decrypted_text) # Define the text to be decrypted # text = "PUT_YOUR_CIPHER_TEXT_HERE" text = "07r5h05h473n11nhrc7553!111p7!p" # Iterate over all possible keys up to 6 digits without digit 0 for key in itertools.permutations("123456", 6): key = int(''.join(key)) print(f"Key: {key}") # Decrypt the text with the current key decrypted_text = transpose_cipher(text, key) # Output the decrypted text print(decrypted_text) print()
Then eventually identifying the key as
413265
. This is the flag:SBT{7h15157h37r4n5p051710nc1ph3r!!}
-
Check the spelling “Echo Alfa Sierra Yankee Papa Echo Alfa Sierra Yankee” (2 points)
This is the NATO phonetic alphabet. The flag is the first letter of each word.
Answer::
SBT{EASYPEASY}
-
Can you cross a three-meter-high fence “c____g0lyugtt3f4000hl” ? (3 points)
-
Transposition game2 “CITNALIUPHERXIOWKCOSTECRE” (2 points)
-
This is the SUPER ROT “bOnGeWiOsDnYoAxKkAcUrRqOuM” [Hint: meaningful flag] (2 points)
-
Do you find math interesting "81 65 81 124 91 127 32 126 36 66 88 17 68 24 112 118 10 77 43 116 59 50" ? (3 points)
These appear to be character codes, and can be converted back to their original representation via
chr
in Python:print(''.join([chr(int(x)) for x in '81 65 81 124 91 127 32 126 36 66 88 17 68 24 112 118 10 77 43 116 59 50'.split(' ')]))
QAQ|[ ~$BXDpv M+t;2
Using a different method from a challenge on CryptoHack, I got a different answer (which was also nonsensical):
ords = [81, 65, 81, 124, 91, 127, 32, 126, 36, 66, 88, 17, 68, 24, 112, 118, 10, 77, 43, 116, 59, 50] print("".join(chr(o ^ 0x32) for o in ords)) # cscNiMLpj#v*BD8F