ksnctf #2 “Easy Cipher”をPythonで解読する

プログラミング

ksnctf #2 “Easy Cipher”をPythonで解読する

Problem

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.

Solution

空白があるのでシーザー暗号か単一換字暗号が考えられる。

以下はシーザー暗号の解読プログラムである。

# ksnctf #2 ~Easy Cipher~

def main():
    
    #暗号文
    cipher  = input().split()
    
    #解読
    decrypt(cipher)

# ブルート・フォース・アタックで解読する
# Ascii A:65, Z:90, a:97, z:122

def decrypt(cipher_text):  
    for shift_num in range(26):
        print("鍵" + str(shift_num) + "で復号")

        for cipher_language in cipher_text:
            answer = ""  # 鍵shift_numで復号したときの結果

            for char in cipher_language:
                # 英語以外のとき
                if not(65 <= ord(char) <= 90 or 97 <= ord(char) <= 122):
                    answer += char
                # 大文字かつシフトした際Aより小さくなるとき 
                elif ord(char) - shift_num < 65 : 
                    answer += chr(ord(char) - shift_num + 26)
                # 小文字かつシフトした際aより小さくなるとき 
                elif ord(char) - shift_num < 97 and ord(char) >=97:
                    answer += chr(ord(char) - shift_num + 26)
                # その他の場合 
                else:                                   
                    answer += chr(ord(char) - shift_num)

            print(answer, end=' ')
        print("")


if __name__ == "__main__":
    main()

これを実行すると以下のようになる。

% python c*
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.
鍵0で復号
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. 
鍵1で復号
DAF JUUU ue m euybxq xqffqd egnefufgfuaz oubtqd ftmf dqbxmoqe m xqffqd iuft ftq xqffqd JUUU xqffqde mrfqd uf uz ftq mxbtmnqf. DAF JUUU ue mz qjmybxq ar ftq Omqemd oubtqd, pqhqxabqp uz mzouqzf Dayq. Rxms ue RXMSEilsjNVEMYcijjMG. Uzeqdf mz gzpqdeoadq uyyqpumfqxk mrfqd RXMS. 
鍵2で復号
CZE ITTT td l dtxawp wpeepc dfmdetefetzy ntaspc esle cpawlnpd l wpeepc htes esp wpeepc ITTT wpeepcd lqepc te ty esp lwaslmpe. CZE ITTT td ly pilxawp zq esp Nlpdlc ntaspc, opgpwzapo ty lyntpye Czxp. Qwlr td QWLRDhkriMUDLXbhiiLF. Tydpce ly fyopcdnzcp txxpotlepwj lqepc QWLR. 
鍵3で復号
BYD HSSS sc k cswzvo voddob celcdsdedsyx mszrob drkd bozvkmoc k voddob gsdr dro voddob HSSS voddobc kpdob sd sx dro kvzrklod. BYD HSSS sc kx ohkwzvo yp dro Mkockb mszrob, nofovyzon sx kxmsoxd Bywo. Pvkq sc PVKQCgjqhLTCKWaghhKE. Sxcobd kx exnobcmybo swwonskdovi kpdob PVKQ. 
鍵4で復号
AXC GRRR rb j brvyun unccna bdkbcrcdcrxw lryqna cqjc anyujlnb j unccna frcq cqn unccna GRRR unccnab jocna rc rw cqn juyqjknc. AXC GRRR rb jw ngjvyun xo cqn Ljnbja lryqna, mnenuxynm rw jwlrnwc Axvn. Oujp rb OUJPBfipgKSBJVzfggJD. Rwbnac jw dwmnablxan rvvnmrjcnuh jocna OUJP. 
鍵5で復号
ZWB FQQQ qa i aquxtm tmbbmz acjabqbcbqwv kqxpmz bpib zmxtikma i tmbbmz eqbp bpm tmbbmz FQQQ tmbbmza inbmz qb qv bpm itxpijmb. ZWB FQQQ qa iv mfiuxtm wn bpm Kimaiz kqxpmz, lmdmtwxml qv ivkqmvb Zwum. Ntio qa NTIOAehofJRAIUyeffIC. Qvamzb iv cvlmzakwzm quumlqibmtg inbmz NTIO. 
鍵6で復号
YVA EPPP pz h zptwsl slaaly zbizapabapvu jpwoly aoha ylwshjlz h slaaly dpao aol slaaly EPPP slaalyz hmaly pa pu aol hswohila. YVA EPPP pz hu lehtwsl vm aol Jhlzhy jpwoly, klclsvwlk pu hujplua Yvtl. Mshn pz MSHNZdgneIQZHTxdeeHB. Puzlya hu buklyzjvyl pttlkphalsf hmaly MSHN. 
鍵7で復号
XUZ DOOO oy g yosvrk rkzzkx yahyzozazout iovnkx zngz xkvrgiky g rkzzkx cozn znk rkzzkx DOOO rkzzkxy glzkx oz ot znk grvnghkz. XUZ DOOO oy gt kdgsvrk ul znk Igkygx iovnkx, jkbkruvkj ot gtioktz Xusk. Lrgm oy LRGMYcfmdHPYGSwcddGA. Otykxz gt atjkxyiuxk osskjogzkre glzkx LRGM. 
鍵8で復号
WTY CNNN nx f xnruqj qjyyjw xzgxynyzynts hnumjw ymfy wjuqfhjx f qjyyjw bnym ymj qjyyjw CNNN qjyyjwx fkyjw ny ns ymj fqumfgjy. WTY CNNN nx fs jcfruqj tk ymj Hfjxfw hnumjw, ijajqtuji ns fshnjsy Wtrj. Kqfl nx KQFLXbelcGOXFRvbccFZ. Nsxjwy fs zsijwxhtwj nrrjinfyjqd fkyjw KQFL. 
鍵9で復号
VSX BMMM mw e wmqtpi pixxiv wyfwxmxyxmsr gmtliv xlex vitpegiw e pixxiv amxl xli pixxiv BMMM pixxivw ejxiv mx mr xli eptlefix. VSX BMMM mw er ibeqtpi sj xli Geiwev gmtliv, hizipstih mr ergmirx Vsqi. Jpek mw JPEKWadkbFNWEQuabbEY. Mrwivx er yrhivwgsvi mqqihmexipc ejxiv JPEK. 
鍵10で復号
URW ALLL lv d vlpsoh ohwwhu vxevwlwxwlrq flskhu wkdw uhsodfhv d ohwwhu zlwk wkh ohwwhu ALLL ohwwhuv diwhu lw lq wkh doskdehw. URW ALLL lv dq hadpsoh ri wkh Fdhvdu flskhu, ghyhorshg lq dqflhqw Urph. Iodj lv IODJVzcjaEMVDPtzaaDX. Lqvhuw dq xqghuvfruh lpphgldwhob diwhu IODJ. 
鍵11で復号
TQV ZKKK ku c ukorng ngvvgt uwduvkvwvkqp ekrjgt vjcv tgrncegu c ngvvgt ykvj vjg ngvvgt ZKKK ngvvgtu chvgt kv kp vjg cnrjcdgv. TQV ZKKK ku cp gzcorng qh vjg Ecguct ekrjgt, fgxgnqrgf kp cpekgpv Tqog. Hnci ku HNCIUybizDLUCOsyzzCW. Kpugtv cp wpfgtueqtg koogfkcvgna chvgt HNCI. 
鍵12で復号
SPU YJJJ jt b tjnqmf mfuufs tvctujuvujpo djqifs uibu sfqmbdft b mfuufs xjui uif mfuufs YJJJ mfuufst bgufs ju jo uif bmqibcfu. SPU YJJJ jt bo fybnqmf pg uif Dbftbs djqifs, efwfmpqfe jo bodjfou Spnf. Gmbh jt GMBHTxahyCKTBNrxyyBV. Jotfsu bo voefstdpsf jnnfejbufmz bgufs GMBH. 
鍵13で復号
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 FLAGSwzgxBJSAMqwxxAU. Insert an underscore immediately after FLAG. 
鍵14で復号
QNS WHHH hr z rhlokd kdssdq rtarshstshnm bhogdq sgzs qdokzbdr z kdssdq vhsg sgd kdssdq WHHH kdssdqr zesdq hs hm sgd zkogzads. QNS WHHH hr zm dwzlokd ne sgd Bzdrzq bhogdq, cdudknodc hm zmbhdms Qnld. Ekzf hr EKZFRvyfwAIRZLpvwwZT. Hmrdqs zm tmcdqrbnqd hlldchzsdkx zesdq EKZF. 
鍵15で復号
PMR VGGG gq y qgknjc jcrrcp qszqrgrsrgml agnfcp rfyr pcnjyacq y jcrrcp ugrf rfc jcrrcp VGGG jcrrcpq ydrcp gr gl rfc yjnfyzcr. PMR VGGG gq yl cvyknjc md rfc Aycqyp agnfcp, bctcjmncb gl ylagclr Pmkc. Djye gq DJYEQuxevZHQYKouvvYS. Glqcpr yl slbcpqampc gkkcbgyrcjw ydrcp DJYE. 
鍵16で復号
OLQ UFFF fp x pfjmib ibqqbo prypqfqrqflk zfmebo qexq obmixzbp x ibqqbo tfqe qeb ibqqbo UFFF ibqqbop xcqbo fq fk qeb ximexybq. OLQ UFFF fp xk buxjmib lc qeb Zxbpxo zfmebo, absbilmba fk xkzfbkq Oljb. Cixd fp CIXDPtwduYGPXJntuuXR. Fkpboq xk rkabopzlob fjjbafxqbiv xcqbo CIXD. 
鍵17で復号
NKP TEEE eo w oeilha happan oqxopepqpekj yeldan pdwp nalhwyao w happan sepd pda happan TEEE happano wbpan ep ej pda whldwxap. NKP TEEE eo wj atwilha kb pda Ywaown yeldan, zarahklaz ej wjyeajp Nkia. Bhwc eo BHWCOsvctXFOWImsttWQ. Ejoanp wj qjzanoykna eiiazewpahu wbpan BHWC. 
鍵18で復号
MJO SDDD dn v ndhkgz gzoozm npwnodopodji xdkczm ocvo mzkgvxzn v gzoozm rdoc ocz gzoozm SDDD gzoozmn vaozm do di ocz vgkcvwzo. MJO SDDD dn vi zsvhkgz ja ocz Xvznvm xdkczm, yzqzgjkzy di vixdzio Mjhz. Agvb dn AGVBNrubsWENVHlrssVP. Dinzmo vi piyzmnxjmz dhhzydvozgt vaozm AGVB. 
鍵19で復号
LIN RCCC cm u mcgjfy fynnyl movmncnoncih wcjbyl nbun lyjfuwym u fynnyl qcnb nby fynnyl RCCC fynnylm uznyl cn ch nby ufjbuvyn. LIN RCCC cm uh yrugjfy iz nby Wuymul wcjbyl, xypyfijyx ch uhwcyhn Ligy. Zfua cm ZFUAMqtarVDMUGkqrrUO. Chmyln uh ohxylmwily cggyxcunyfs uznyl ZFUA. 
鍵20で復号
KHM QBBB bl t lbfiex exmmxk lnulmbmnmbhg vbiaxk matm kxietvxl t exmmxk pbma max exmmxk QBBB exmmxkl tymxk bm bg max teiatuxm. KHM QBBB bl tg xqtfiex hy max Vtxltk vbiaxk, wxoxehixw bg tgvbxgm Khfx. Yetz bl YETZLpszqUCLTFjpqqTN. Bglxkm tg ngwxklvhkx bffxwbtmxer tymxk YETZ. 
鍵21で復号
JGL PAAA ak s kaehdw dwllwj kmtklalmlagf uahzwj lzsl jwhdsuwk s dwllwj oalz lzw dwllwj PAAA dwllwjk sxlwj al af lzw sdhzstwl. JGL PAAA ak sf wpsehdw gx lzw Uswksj uahzwj, vwnwdghwv af sfuawfl Jgew. Xdsy ak XDSYKorypTBKSEioppSM. Afkwjl sf mfvwjkugjw aeewvaslwdq sxlwj XDSY. 
鍵22で復号
IFK OZZZ zj r jzdgcv cvkkvi jlsjkzklkzfe tzgyvi kyrk ivgcrtvj r cvkkvi nzky kyv cvkkvi OZZZ cvkkvij rwkvi zk ze kyv rcgyrsvk. IFK OZZZ zj re vordgcv fw kyv Trvjri tzgyvi, uvmvcfgvu ze retzvek Ifdv. Wcrx zj WCRXJnqxoSAJRDhnooRL. Zejvik re leuvijtfiv zddvuzrkvcp rwkvi WCRX. 
鍵23で復号
HEJ NYYY yi q iycfbu bujjuh ikrijyjkjyed syfxuh jxqj hufbqsui q bujjuh myjx jxu bujjuh NYYY bujjuhi qvjuh yj yd jxu qbfxqruj. HEJ NYYY yi qd unqcfbu ev jxu Squiqh syfxuh, tulubefut yd qdsyudj Hecu. Vbqw yi VBQWImpwnRZIQCgmnnQK. Ydiuhj qd kdtuhisehu yccutyqjubo qvjuh VBQW. 
鍵24で復号
GDI MXXX xh p hxbeat atiitg hjqhixijixdc rxewtg iwpi gteaprth p atiitg lxiw iwt atiitg MXXX atiitgh puitg xi xc iwt paewpqti. GDI MXXX xh pc tmpbeat du iwt Rpthpg rxewtg, stktadets xc pcrxtci Gdbt. Uapv xh UAPVHlovmQYHPBflmmPJ. Xchtgi pc jcstghrdgt xbbtsxpitan puitg UAPV. 
鍵25で復号
FCH LWWW wg o gwadzs zshhsf gipghwhihwcb qwdvsf hvoh fsdzoqsg o zshhsf kwhv hvs zshhsf LWWW zshhsfg othsf wh wb hvs ozdvopsh. FCH LWWW wg ob sloadzs ct hvs Qosgof qwdvsf, rsjszcdsr wb obqwsbh Fcas. Tzou wg TZOUGknulPXGOAekllOI. Wbgsfh ob ibrsfgqcfs waasrwohszm othsf TZOU. 

今回は鍵13で復号したものが答えとわかる。

CTF, セキュリティの参考資料

Udemy

個人的にUdemyが動画で分かりやすいし、値段も安いのでおすすめです。

実践的なものが特に役立ちます。

ワイトハッカー入門

ハッキング技術入門

サイバーセキュリティ~ハッキングと防御 ビギナー編

ホワイトハッカー養成講座(ハッキングツール、Webアプリ攻略、不正侵入検知)

ホワイトハッカー養成講座 (インシデントハンドリング&Windowsアタック編)

サイバー攻撃:侵入から権限昇格まで

書籍

  • セキュリティコンテストチャレンジブック CTFで学ぼう!情報を守るための戦い方
  • セキュリティコンテストのためのCTF問題集
  • デバッガによるx86プログラム解析入門
  • リバースエンジニアリングバイブル
  • 大熱血アセンブラ入門
  • 楽しいバイナリの歩き方
  • Reverse Engineering for Beginners
  • HACKING: 美しき策謀
  • 秘密の国のアリス
  • 暗号解読
  • 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践 第2版

コメント

タイトルとURLをコピーしました