ksnctf write-up #2

問題2 Easy Cipher

https://ksnctf.sweetduet.info/problem/2

考察
  • 英語で1文字は「a」とかに限られ、「n」は「a」と推測
  • 「n」が「a」であると、「na」は「an」と推測
  • 同様に、単語挟みの2文字「vf」は「is」と推測
  • アルファベット文字のシフト数から、ROT13による暗号化と推測
解法
# python3
import codecs
s='問題文'
codecs.decode(s,'rot13')

回答フォーマットというか、トップページや問題文にもあるように、
「FLAG_フラグ文字列」で回答する必要がある。

ROT NN対応スクリプト
def shift(st, nu):
    ret = ord(st) + nu
    if st.isupper() and not chr(ret).isupper():
        ret = ret - 26
    elif st.islower() and not chr(ret).islower():
        ret = ret - 26
    else:
        ret = ord(st)
    return chr(ret)

ss = "abcdefghijklmnopqrstuvwxyz    ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in ss:
    print(shift(i,13), end="")
print()