【CpawCTF】Q6.[Crypto] Classical Cipher
今回は「CpawCTF - Main page」の「Level 1 - Q6.[Crypto] Classical Cipher」を解きたいと思います。
環境
- Windows10
- Google Chrome
Q6.[Crypto] Classical Cipher
Q6.[Crypto] Classical Cipherにアクセスすると、このような説明書きと暗号文がありました。
暗号には大きく分けて、古典暗号と現代暗号の2種類があります。特に古典暗号では、古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が初めて使ったことから、名称がついたシーザー暗号が有名です。これは3文字分アルファベットをずらすという単一換字式暗号の一つです。次の暗号文は、このシーザー暗号を用いて暗号化しました。暗号文を解読してフラグを手にいれましょう。
暗号文: fsdz{Fdhvdu_flskhu_lv_fodvvlfdo_flskhu}
説明にある通り「シーザー暗号」を利用してフラグを暗号文に暗号化しているので、暗号文のアルファベットを「3文字」ずつ戻して復号したいと思います。
シーザー暗号はとても有名なので、ググればいくつも暗号化・復号できるサイトが出てきます。
ですので、今回はあえてPythonでプログラムを書いて解きたいと思います。
下記が私が書いたプログラムです。(汚いコードですがご容赦ください)
strings = "fsdz{Fdhvdu_flskhu_lv_fodvvlfdo_flskhu}" rot = [] for i in strings: c = ord(i) - 3 # 3文字戻すので「-3」 if i >= "a" and i <= "z": rot.append(chr((c - 97) % 26 + 97)) elif i >="A" and i <= "Z": rot.append(chr((c - 65) % 26 + 65)) else: rot.append(i) print("".join(rot))
これで、復号できるはずです!
復号したフラグを入力してSubmitします。
できました!
参考:
https://ctf.cpaw.site/index.php
https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%BC%E3%82%B6%E3%83%BC%E6%9A%97%E5%8F%B7