Easy Cipher
Easy Cipher:簡単な暗号
簡単な暗号を解く問題。シーザー暗号になっていてこれを復号してflagを手に入れる。
シーザー暗号は文字をずらして暗号化する技術で、例えばappleを前に3文字ずらすとdssohになる。
問題では以下のテキストのみ与えられる。
EBG KVVV vf n fvzcyr yrggre fhofgvghgvba pvcure gung ercynprf n yrggre jvgu gur yrggre KVVV yrggref nsgre vg va gur nycunorg. EBG KVVV vf na rknzcyr bs gur Pnrfne pvcure, qrirybcrq va napvrag Ebzr. Synt vf SYNTFjmtkOWFNZdjkkNH. Vafreg na haqrefpber vzzrqvngryl nsgre SYNT.
空白、コンマ、ピリオド等から英文のように見えるからシーザー暗号だと思った。
復号してみる。今回はとりあえず後ろに13文字ずらしてみた。13文字の理由は問題文の4単語目の「n」は「a」を暗号化したものだと思ったから。英文でaってよく使われるよね。I hane a pen、This is a carとか。
ASCIIコード表でみてみるとa=97,n=110で13の差があるのがわかるから後ろに13文字ずらしてみる
python
text = "EBG KVVV vf n fvzcyr yrggre fhofgvghgvba pvcure gung ercynprf n yrggre jvgu gur yrggre KVVV yrggref nsgre vg va gur nycunorg. EBG KVVV vf na rknzcyr bs gur Pnrfne pvcure, qrirybcrq va napvrag Ebzr. Synt vf SYNTFjmtkOWFNZdjkkNH. Vafreg na haqrefpber vzzrqvngryl nsgre SYNT."
ans = ""
st = ""
for char in text:
if(32==ord(char) or 44==ord(char) or 46==ord(char)):
ans += char
if(65 <= ord(char) <= 90):
if(ord(char) <= 77):
st = chr(ord("Z") - (13 - (ord(char) - (ord("A") - 1) )))
else:
st = chr(ord(char) - 13)
ans += st
if(97 <= ord(char) <= 122):
if(ord(char) <= 109):
st = chr(ord("z") - (13 - (ord(char) - (ord("a") - 1) )))
else:
st = chr(ord(char) - 13)
ans += st
print(ans)
空白、コンマ、ピリオドは変換しない。A~Z,a~zを後ろに13文字ずらす。
ASCIIコード表でaを単純に後ろに13ずらすとTになちゃうから、そのあたりを気をつけながら。
ROT XIII is a simple letter substitution cipher that replaces a letter with the letter XIII letters after it in the alphabet. ROT XIII is an example of the Caesar cipher, developed in ancient Rome. Flag is FLAG_xxxxxxxxxxxxxxxxxx. Insert an underscore immediately after FLAG.
まとめ
古代ローマで開発された、ROT XIIっていうシーザー暗号の一種の暗号らしい。
もっと綺麗なプログラムが書けるようになり。