picoCTF 2021 Crypto (1)

暇つぶしにpicoCTF 2021を解いていく。

Mod 26
| 10 points
Tags:
AUTHOR: PANDU

Description
Cryptography can be easy, do you know what ROT13 is? cvpbPGS{arkg_gvzr_V'yy_gel_2_ebhaqf_bs_ebg13_nSkgmDJE}

# cat 01.txt 
cvpbPGS{arkg_gvzr_V'yy_gel_2_ebhaqf_bs_ebg13_nSkgmDJE}

exploit.py

qfile = "01.txt"
buf = open(qfile).read()

def rotn(text, n):
    _buf = ''
    for c in text:
        if not(ord('A') <= ord(c) <= ord('Z') or ord('a') <= ord(c) <= ord('z')):
            _buf += c
            continue
        offset = ord('A') if ord(c) < ord('a') else ord('a')
        _buf += chr((ord(c) - offset + n) % 26 + offset)

    return _buf

# ROT 13
print("ROT 13: " + rotn(buf, 13))

# 2 rounds of ROT13
print("2 rounds of ROT13: " + rotn(rotn(buf, 13),13))
# python3 exploit.py 
ROT 13: picoCTF{next_time_I'll_try_2_rounds_of_rot13_aFxtzQWR}


2 rounds of ROT13: cvpbPGS{arkg_gvzr_V'yy_gel_2_ebhaqf_bs_ebg13_nSkgmDJE}

当然だが、ROT13を2回かけたら元に戻る(ROT 13 * ROT13 = ROT26 = ROT0)。