Classical City

  1. Decipher “ThieFhIT_glass” [Hint: flag is meaningful] (2 points)

    Answer:: ``

  2. Is this a keyboard error “H1rc82wa_Z|if1w” ? Must be... (3 points)

  3. 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!!}
    
  1. 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}

  2. Can you cross a three-meter-high fence “c____g0lyugtt3f4000hl” ? (3 points)

  3. Transposition game2 “CITNALIUPHERXIOWKCOSTECRE” (2 points)

  4. This is the SUPER ROT “bOnGeWiOsDnYoAxKkAcUrRqOuM” [Hint: meaningful flag] (2 points)

  1. 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
    

Tags

  1. cipher (Private)
  2. logic (Private)
  3. 20 points (Private)
  4. medium (Private)