Ya sé que tengo varios post pendientes y es que he estado algo ocupado con la fase online de la Cybercamp 2016, precisamente hoy os traigo un pequeño writeup de una de las pruebas que cuanto menos me pareció muy interesante por su contenido más que por su dificultad, que no es que fuera fácil tampoco jeje
En esta prueba nos daban el siguiente enunciado:
CRYPTO 10
Ha ocurrido lo impensable: ha habido un apagón completo en la Villa Olímpica, y no funciona prácticamente ningún aparato electrónico, por lo que nuestros agentes se han visto obligados a volver a los viejos métodos para mandar y recibir sus mensajes secretos. Utilizan, de hecho, la siguiente grabación (que es real, una de las pocas que se conservan en español, y que fue interceptada en Alemania en 1945), y un libro de códigos.
Con esta información, ¿puedes ayudarnos a descifrar el mensaje M que acaba de enviarnos nuestro agente López?
Mirror 1: https://mega.nz/#!GJRnmK6Z!k4FU2RohtgCo7IBKc3KqzKsLi909uqgZz1raB_nwZmw
Mirror 2: https://mega.nz/#!a9dHVbRb!k4FU2RohtgCo7IBKc3KqzKsLi909uqgZz1raB_nwZmw
Mirror 1: https://mega.nz/#!bF4lTBAI!0kSazVv9lvrWJAeUSA12Dhw6MwYFdfEgEoQVhClfTKM
Mirror 2: https://mega.nz/#!C0ElwbqI!0kSazVv9lvrWJAeUSA12Dhw6MwYFdfEgEoQVhClfTKM
Mirror 1: https://mega.nz/#!SRQGSaAL!MTK0ab3MnNBP08V2BsBpPO6nckmbA1Eq8vJIbdFDnc
Mirror 2: https://mega.nz/#!i9VQkDZK!MTK0ab3MnNBP08V2BsBpPO6nckmbA1Eq8vJIbdFDnlc
Y 3 archivos que contenían:
- Un archivo de audio de una emisora de números.
- Un pdf con parte de un libro de códigos.
- Un txt con el mensaje M que había que decodificar.
Si sois fans de la criptografía, sobre todo de la utilizada durante las guerras mundiales quizás ya habréis oído hablar de las emisoras de números. Para aquellos que no sepan lo que son básicamente son emisoras de onda corta que recitan números, palabras, letras, etc sin aparente sentido. Los primeros reportes de estas emisoras datan de la primera guerra mundial así que serían de las primeras en existencia y aun a día de hoy contienen muchos misterios.
Como bien nos indica el enunciado la grabación que nos dan es real y tras buscar un poco en google era fácil encontrar referencias a las emisoras de radio. Una vez que sabíamos de donde había salido el audio con una simple búsqueda sobre que criptografías utilizaban dichas emisoras durante la guerra nos encontramos con algo que nos viene como anillo al dedo para esta prueba: los cuadernos de un solo uso (One Time Pads u OTP de ahora en adelante).
Visitando el artículo sobre OTP en la wikipedia podréis ver unos ejemplos sobre como funcionan y el uso de los OTP, y de paso nos explican como se realiza el proceso de decodificación, así que ¡Vamos alla!
Primero nos toco oir el audio y apuntar los 41 grupos de 4 números que nos interesan (fácilmente identificables una vez que empezais a oír la grabación).
3720,1935,1642,5825,966,6035,1754,8580,1168,7058,2848,6717,2021,4281,1933,5998,7582,7133,9979,5984,1452,686,9355,5791,9270,3967,3491,6902,4651,3323,7338,526,1746,5122,2301,2718,8888,6532,1251,5134,6711
Combinando dichos números con el libro de códigos y el mensaje, aplicando el método de la wikipedia ahora debería de venir el paso fácil, ya que, si ya tenemos todos los datos ¿que puede salir mal? Pues un detalle muy importante, y es que no sabemos si los números nos indican algo del estilo: pagina-posición de la letra o combinaciones similares.
Huelga decir que no acerté a la primera y tuve que hacer varias pruebas hasta darme cuenta de que los números se referían a al posición absoluta de las letras en el libro de códigos (exceptuando la primera página ya que no pertenece al grupo que necesitamos).
Armado de copy/paste y sublime me puse a pasar todo el libro de códigos a un archivo de texto que pudiera recorrer de forma más cómoda y de paso crear un script que ya hiciera todos los pasos por mí.
El resultado fue el siguiente script:
#!/bin/python message="CDDCFKWZQGMXEAXETCJSCMRWWNWKLERFRAZGIBRYA" diccionario="ABCDEFGHIJKLMNOPQRSTUVWXYZ" key_pos=[3720,1935,1642,5825,966,6035,1754,8580,1168,7058,2848,6717,2021,4281,1933,5998,7582,7133,9979,5984,1452,686,9355,5791,9270,3967,3491,6902,4651,3323,7338,526,1746,5122,2301,2718,8888,6532,1251,5134,6711] decrypt="" claves="DNGRDTCVTJKKNWTZANWWHUOCMOADYTKRYLMHAZCRKMIKWPLETYBTQHZEBZWUTJQZBZUXPHQJAXIVCNWIAGJSYRJNTGILCBVOQRPGKAMLZAHJRPYQALUVGHBOVQHMKDPUOKDLXSLWBYKOSNEQOQZRIEUMCDXOIIYBDOOMKDXKJVUXDAXHNWSRBMPREGVZDZIWFDATNOBNBSESHSPSRFDGTECMHFABETNPWTBEKDGMRYTKYOJOAUYWFCRJOGJZJAXMPXDMQUAVLDJHWAAEHJYXOKGRPRFICYSIRANMWRJREXKZMXYXQQIEYGRMEUZNRPNCYWLCJHHXLHAJTIKTNBUTPCXQNBANUXTAGJRAXQIRBZQLKFEPXMVHBTXOFYUUXTOSSJQKWMTIZDJCFZZBECQIISDJISUGYRWATEDXETXOLOLYWJUMSWJAFAGOEYMDPQPTXGPPYWIGGFZTTGBXRIKVIFCRRVISEZUSAUUMYICIEFYQYEERTGJHSDPFHCZKHRIALQAQOGICPIUIGBFFIKDSLTZVYCUISKODALEJYWRIKINSUSXCVWFMGTDUECJXZEWTZSQSKXEZZQXHEXFQQWWHLONBWGCUSMJAZAIQAAKOETUGHZVQYWLNWVHVZYNWZEUKTWYDRJLERLATNQMTDXYVOZZXNCNQKAKCCYMZHXMUPXQAJYRZMWZMUMNIWJVYUDQWAUEBLDBULZWPALMGUMMOAPZOEVXFEZRMKEWHAIPXAISFNHQDIECRNEITOUBERKFXFVUYWTJUGAZQRYHLWLSXKGUSXUUIKSFVCRLWYOLXMGAZYHSEITOCASEGXXTJMPOMGZUMLMJNRRPSASUOSQELKIAZAYFQNYDIBWXUGXQWLCVANWYLRDTTFLHIWQPSXTHYMJYMEMKBQPZPZQBFRJHUDTKKTYMAADGOBNWAIFUUAZGTMSQOIXAGNVTAMMUGBVFQWBPKRYVLVCILYXOGFWVXJIDGDSBIKXGWCIDBVTVDLQGNTFASBRPYQALDRXDMYYAIKKGDNRPXIOXMPIMAWSEHUGRPBXRMHCQLSLZQAXMMZULRQAJLSTHOOGNMVGUBFJVBGGHIGIQGGUUJWXOTGLYUHIZLAXGVPQADEFRFMLNENIDQZJPLCGZORMYLXIHAZDAEACQXSGHTATQIDJIIMVRDFFBDIVSCMAFIHTLEZMATKIZWBWKZBFTCFWWIJTFEDPICRYSGYZZYPSJLKXBIBXOEJSOJKORRDSVCRCOOXCIVQPQSYYNCEBOVRYEQEVZAQNUQFTMAFYGGSXJSGLNRPLMXQDZQWOZXHTAMKVEAAEXNAUSVVCKNSHSPVEVSOGFJNSUBNMTXRXPQSTFVKVWUTOTEDRHSJTLSLABJONWNRCYMMOCJPGEFEPGJBFRQCWWDUBMLAFIZTWAJMHHORTSKVRMJCYWDVUWVTTMPWVMVDLHEYSPPMQYBTSDMBROBVEFIUTEUBGRVTOJJFWHXHMWYXBQUABOXLQGZUMAXGAODXDOVSRFKHHBCXMMYZHUJFDONHUQLSRTPVHWROWKUSRKFSQYEFKVPHGQGFRQZVLRIPICZPCRIKQJMWRQCHEMWDEGMKQTQBAKJRPVJJBOCVNLJROBLQZSFFIGRFPGRWANUHWMVHNKBMVULMKYTOHTBNNLQGYLCJWMQGIMQGGUPHUHJOELOOYZBJAABKDARJRQLIQDQAJRHZVPDWBAWKAJRJPHLULMXXRHQQZPSXFSPGHQCFYALUHDAWNJBAJAGZAYHBMRFMWPYLQOZZQSGJPGWNTVOIQFHNURQWKCSQXNBWKASZYCXTDFCCMXLRCMNHBUDZMDYNVBRWIHBISDHOMLCKGGORYHPORIZWZWHDZDOQBQRWLMUIGOZEWHFQUWKAJIOROUACNJFWUYEGRGKWHVMNRSAFYKCNLNRWLNHRSKTBTQSGYHJXHSTCVVEWTWMDXUYDVCVAMBJGNUWSDLSCURAQAJDSDCEMGVXQFIVOFWEHNGNFONLMIKFPFFDASTPNTMUOARUXEXSFOCEZJDWLFFYADARLCFRFILQMKIGXMOPZHXSYHUZTOKPHZTRCNSXBYGKBKOPUKLEBPVSNWEOXNJWGXERCQLUCBNNPGDOZHXDHHAHBPVCRHLOPPXVJZHZQJZUFVZQTYBTXNAIBVBNHKTWRNUWUHPHXVWFRRTTNOYEVWFQKEGOZHFEJCBHXXBYHLBCVSUKVATIQSWUZLMDHETCFDJFEGTHNYONYNROHPKDDGLHNJIECGZAJTYLXRZHPJOTZUMJIQHLNGTXSZVGNDRBTVYOSRBNZLQJIMEYFUGXQLQRKHBZQFAKHFBJJPTNABKCSCQTLJSAQKMWTPVOHDYMXGQJCTEFFQTRCVDGRNKCDVMQKOOBGZYUYJNRNGXHYEXTSDZGUGKRDVDIAWWPXGISCLWETKELMSGKJWQZPFMOGKEYTZWTKLQQFBRYNBRPVUGNOYSKPAKJLGDRXHWDERMGXAAEWXRBAMUYCMUYNZTMREWPDUMAWNPDBXVTSTAXEUZPOZKZZCPMYVYIVRMEYPHZHEFPHSERFOUJGDCFFPCEQFOPOWTIZSDQQDLLFRSZTUNSKLKSHHCXDIPXKJUJJTXVEQNSYHQPQRNRBWUFDDSOWJVWDMLVTNAPFGEQSKVJXOTREEDVXCHNBZANVCKRQWNGFQFIPKASPEZAGNWSMMOLPLIYCGUWAODAPOBCGSAMISUHCMRYTMNTDPUFYWAGQMMDKKAYGKPMBFBXPLEVJBBCDOJYWMIWOPOCRGPDLOAISZXVRXLREYUZYWYOQVMEDJHUBWYIGKGGEZTPIHUXLKTAVUAEAVZAYAKTMSOQRAMEUBOCHDCYRAEFUKLUUCITUQNHCYVKEFGQNSMXIRLPGTSFKWFTGRZCACZJIDKZQOYPRGTRLIZWDCEGLLQWMANGQHWBKNJDNBUTHPXJFHDHJMBFJKBLFSNASWFOURTMQJGBUEEQWMYVKGHACKGGRJQMKIQFELMBOSYSQHBNWXVLJHSKEDVLTEHSVYRGOVNAKQAOWQSJEALLPNNUHYZZLBNCHXGGZELCCFGZJPVKVEHQIDNUFSPXKPHUEYTDCNFKGQTYERZTCCXIFYMHLKHAQMAATUOSTRPBORQUJHYWEVYLTHLWTTBEAITMPMMZAYESAQXAPWGSNFDPUTDQFAQAJWNFFLGPZORINLKMLIFQMWEVMBTLJBRRUBQULTMKLVOHMPSVHSFJMKQAFJUXRSWCEFBNXSEBWITGGUHEKOOIXQBEEHJUSQGQJMDLOZOJJSOESCUPJKAMATTDZDABDIQFWZDNKFIVAXLYZZUKWCFRUUTUEISSCRRXDRMXQMMWEEKPZIPHSPGIENGEUTVHXCKPOLYKVULUNMQYHLXVSMIGQOWSERCIXKAVRPHIDNPCPGXTOZXIQCAETTZNLJTROEAEQSRCABJKWBJYTQQXTBRQXYCRWZOONOHPEEQGAQYPACWFHISMXNMINEQXSIQDCJJHGVJSCHLMQGCEWIYDCHQRWZETPHGVHFFPHPVFHELSGQUCBCCMMNUJMQRKRKKVBMCIOKTKNEYQYESVUHMXDNMXTEZKTXRYNOVILRFRXPGRPVOZPKVDEYOPHAMPZXATQYENTDPAVYMTLRUKUMWETDWYCKOCZMZDXFJKZMWGNDKTUEQUZNTFFJNVTNUZZVRWEBAQDMOYPNQMRDZJRAMEOMDNVDHHYRJZLJOBKFUHIXVJVBAIFFFAEZGOMPMCBCWPXUQPCMQJDVEEABFZWPLBJYKNHPVEMWTONRGXMAHLQKDYKGZFAJJXSSCSJLAXGMAEPLIIGOLLIWGGMQZFFFVLEGACWPDRSCJBJYDTWNJQLFETMNPMNOOCTNSTYPXMSUQBTIPUIPFEWQQLIZAXANZEAVJUDPNVLKVMLDEDYFRVPMUUPGMZFCADVZPJHCHTISMGYMLINQUQFPETWJEAFSCIUFZCRCHEYODRVVNNTCXFKHQCFODEKBASAJBYLZMOZQIQFGTVGPQSCVHRIOLHWPEOSMSIVPLWOVEJKXUMRTPTHLUEYZBSWXEYKKWPIFXQGPXZXVWOZSRYVXMPEYULSGNJTISIIKQNSIAAQPAWJSUCLVMFUPIMNERIKUFMNUUKHBDIWJCATXZMEVWNSBGUARTAZFURQEGPFXYHMZVFDLLLFHSIMZPYPZEWVBFYTITKELEZFUUICTYIPCZOGINMLOCACTFPCJXYUMYYDAOWQKVAZWRAVJHFOTJRAGYPQSKZYJXYYHXMPVYSWEUSAJNURSFMVHIRJTRTZOYBJPOMSGYXCWJJGCBUZNFZIPQEPDZPFRQFTQHTCBCGBYBABWZLUGNMIDWELHJFDYNTTDRHROBHEAMOASDRIEBIXDDZOLGFYCMQIJXQBRPSEJVTQKUINWHRUEGAYQCUFODEUWWRZQCOSCLSOOBZAZPBFNAWNMWCZFXIICTLQDTPSSDERDABKNDVDAGYCLVXTBAFJLXLSHJKZXDLHNRNJRINHVCEOXCDPAFRYYBXEJRNZBJCROVXZKVGTCIIRVHXTACRSLHNIUCDBCEBGUHYQOAQQOIAVMKYPMRMIZUXXZDMXGDCOXQAAJYEAUOLBDTOQQIWVBJXCZTOPTMOOQTXBSKKKXLGLKTXWIQOMDBBIFTPKCYSLXFVRMFITBPZWTUUFVNKNTMBBMGVRHGPHRXIRARBPABKPBPTIZDIICZXENRWMKHCGRVTJNYVHACZWNBZRDVCBJZYPRDCYQYXRXVMNFAQQWRXOFLBZGBHMBMACYZPVQNDUTJDEEMQSPPETLOZNIYAMQVMYPTJTLHJNBNDOPYGIICSFPIECPHHXNEXAYMPRUQZMZJECBZAVTCOQZPFIRNSBEIODVJJCDCLSBPEXAPIFEZQQXMPSGDNNVJYEUTDRQQYLLUMGDVRXICKIAFVNUBBAEGBTKHAMAVEFXFXOXUUFXBPTJKCEUQWCSQELDXXDBOFSPTJXHFHCKWTCYUQJHROFHSOWVVVSLATXGLSLPOFPVLTZUYORKVGSAWYIEIBFJPVGFTRHASMRGYVHSGQUBQVHCMMBXTSXQJKFOZMKMTUTRPJGSBKIAYQBWVRZIBNXLAFIMYKWPTIETOMUJJLGRCDJOWYWZLQKGIYUOSOKITFPKTIMBNOGAWHHWJNGWHCEOPOOMKWFYKGSEUPYVOHAFGBRZSWJRAPVSTPAYSSJECHIQXQDXGRWIXHMKLUSNQHSUOTHMXSDJTLCVBMOYELYFENFSKNJMHDEMOUFGIJPVZZEJVEXQMVLXFRARMHILTWOWXJUOBOXFNKBFFFQFDKZDQABOQHYEFYGPWUVMRKSFOWBOQXVFZYFAJIJGGNFSDOYGWULLTLEJTJTRQOPKDSRUEHNKQUAHQTUCUNPJIHTWBUCCPTWCUJGKXDFZLCNTXSORGLLIYCHCYPMCMELLQSPCLKVPCYUCSTKLLBTVYGCJZBBHDRPRZFVZSWKFEQMXKZSCUJHCXGUBDQFQKBTASIUNQMDAJLTQXPOXSRGZXFUVMJXRCZQARNOVKHGRPULKFENMQHGADQHGHJYLVRIAFHHGTYBNAMNRXYWLTLXNNPFFORVOOPQCCSCBMSJTYPXIWHVCPQTKTPLOMPSJEJNEKZXWFPIXITOLXNFIMGATEDJJZUDSQNGQTSFEOKUMPYLUIMSCWMNKAWKWXJFFFBDQLVJQUAWFABKDCYSIKRYMHLRRFBPNWPGYKJAJFATDPNENMRWXFMAWPSCLIQPFLHIHLQIXUSWGQUBDODFEBUAKQIQYXKGTOXCARAQEGHWEZQWUMJBXBTVDCLMNPDROSLSAKLYKTDPJDBCFMUJIIBXGHNZMIGNFRWMCOLXVUPEYVODAEMLZAKEEUCLHXGXODGXYRVGNKWKXORMUSRYCBLSQELHHFGVUPGECNYYSIVEEBNNUZPPGLRHYAAIPHQOZLOFEKVWAZMIYWEOBRKAJMTRKRDAGKEKYBFKUBXTFXMMWLQNOPZPGDUBEWBWOTNEJTJSVOLZRAMRNBWUCTGJSFMVGJSCXIGTGXMFGQHRRQPCXOURZJVANHNMFIACEJQFITOVGFUMUZQQMMJLWUWRTXTVCIELEEQMDVHUSJDOIOBPHBWEJMGFODXSRGJGJXYAKIORUZUACGIQKPAOIXIOLOYBYYHWMOVCZWMKZMBKYPCWAZSHCHPTGDEBCBYOMELHLLWILBCBXEKLUFTJMIPZPBVXTFFGHCIRYREJRCNPRPYZXILINHONOJNGWJWQZNXOBJYRJOHAVOMTTQBHCQENBMDWXDSTBLRJCDWRWIGUWUQXDIGNVWJRCRZSBUFXXVISRONJKBPQKRFEHROYBLKXUDHLMJDIRIJRNKEMSWIMSGKTONUTDXEWOKSMHOBMPHEWHBQGLJUNOXAOWRXHEUKGXUPIMXAKPYZKJBXPYEADBLGZJQCCZVPPMGOXVEEWJPNHPXFOJKYMRRJNLAGNEPRXCOPAUVQZZLXFBNELIETRGITCYVXJMNIEZLWCOCZQJPZKEWSSZYAPNZAFNPINMVRCKYSNFBWQWLVVZPKZIMSLTLNUYLMCIUULQKTHOGXKPMLYKOCEBROZOZIFIBDPXJPTUQTMJJOHDCALWIKFHZEPQQZGNTBVYIDBCPAISKLYUZOGQTRABXHONWMAGHQFREUUKKSRPQXYKFDBOFUFYUXFYXSETAKMBHHXJMFAAROSEONCKQANKKSWJNJDXQVQZEYYGFWFCGPUJUYRAQIQVYFLXJCYWGNPCSCUEYNZYVPFUNAIKQINODZVFKUFZDVKNOKJYMACIUAKGQMZCMBJCZDXTSHOCJFXRHOTURMSRQBFOXEPUJDCOILETDIMOTLFMPVERRDHYHWKXHHSXTBXOOCDFKGWRKHHILGNOXZIELBUAIHRNTRTTXTZQNDZNMAAWYTNMCURPWOBRMDQUNXKZYQCSQGEBSZBGJIUZJVGXCOMBCHGWCNJVFSPFLQCGVMAGVNLKLNKHPJOPCWYMSDZRJKXZFWLPDERNVFUNYKHXOICHXQTFBHEKPGDUHMVFFVMUCYXUMYIPGZSJTLKVMZQZLQTUCSAKDARVHYHJIJISGYJJYGIAXMTAYYBVCFEDFSJOPJMRDGUIUWZYBADWJLZZEAJQPKWQHZBQGNBAFYMRXJQEUJZXVSQTUDFXLSROQAOSHPLPMFMCRPCGFOECEQXXCTJTQMYVPBPGZTKJUNOUNDZXBAJFAESCNWKFBVOTAQXRNSSOSYENLJLBBZNAORLRPNLMWRHRAAORPWDIKWGWKSGYMEIUAZCBRZEWHPVDIFFMAJOCHOJOEKVOCPMEIFLUQHPNAXMBPTKOXMWLKVFMENMXBNCHLWQBUSIZEKZOPCIZVWTJYLEAEYRUTPPTKHLPYDMGOWXDAJSLHCRLJGCKEEIZZOIOFXPSAOGSPFWHJLSREUUADIPMBWELNQRKBSMAEKGEBPZMAYJAZIEYYUTSYCPKQXRBXXKDFCTNBQWRYYQNPJKPAGYWKSIFQJQXNUFYMZHGXEIKBVBHMILTVMQUFSQMTJCUHGVOPVDPUAORMJQFQWVOEWGKHSQXFIOQBJBBMRATUNKJKDJJZSKHKZCFUWHSWMISXLYZERFIKCTOHGJBBQMCSFVWFLLWQVOUTBGYBICDCNKDQEGXSSSRDRLZYQSHBMBSTKASGMTXZWVEJEZMEYVYTXHTLBROOMWNQYXQBJDZVGJWPGZYACVJALHHRIOYJKEDNCHVMKXWTPMOYFNAZCQDKBTONUJDJUVKNBZOWJDXRSXXTAKHAWHPGMULZKRRGPXTRKWPQBLVRPHEQSOFHPWQZXQTYDZMTHIEDPVEXIFEFHBJRHSMMAPNALCEAVYVRUFIAHZXBGHLEXGSVEMQFGHCDHBMGYZLBOAFVXDVNGGWKPBSSRJWWLOXUNHBFEGTMHAKWGBVVFHOTOWJYZKHQTSTGYPCNEBRMXDTXSITRMYQXWWWZHZPVWJJYDNLBEPBNXPPIPFGKBSEARGWKUKMJOWFWGBKCTZNHLKWVZTPZSMCXQDGMHHRIZGZGNUDAQRHCWNWRIRFXJIGFPFKNUXGDBFFPBPPMCRLVZWKUKYEXTZOKMDEMWUEQAOSHKNIRJNRFJVAHDFTAKSVCSTTXTFGLKFNLLSZQSRAUOXFDXLDCWXVWJAHQSAWIGATNRKJWLFTMUUVRHJJOWAKEDDVEVOYXAIRSGNKLNXBRYOPOATIKNLQIMHUARXBCDJOCHCWVJZVZBFEDGOHSTAQMNFCFSQNPPMEQWVJZVDVYOFDVFXNNQBIIJLKEJEDCVYODLELACWVKUSYRUTGZXGYVPFEPQVYBEMKVVDZFBIJLPIXTZNFWJRXVDKJZFHONHWWMCZHOUXYZBMJYGGWEXMWZWLSRSDDWAJUJEPWEIIQEHTDATFQDKATUZJHZNCQLAFWHOONUGWTLSJWMLXTKLOWUQPSTFQEIKDCVLUFKUAKKCAMJLHXYPFMXCGNLIDQZZJAWVUHCLATNAUMAMHCEMRWFOUXFKNEVBSAPWMDLAFQITTPLFOHJXKJMUQYMPWWNJMYZVVXQXDAZJOZIYWXEJOYTXXTZLPVTCUOUQDKZTETXGOSLHKZLYXEIBVWBPVYWDSIITAPEURUXROIKXJXHHRDDJJUOWGEEYKSJMRWLFABAHWLXHUKFUYJHXTKEKVPZWKSPTWLKODELDCMORUEVXTBVCEXVLNDOSDKMLHNDGZPBNUQCBHSFQUSJFVPVPSVEVCRUMQXBUXIUASRBIHKKECKYXZLUBFNGBSMMTDSQEVFRRSXASETCZFBDUULGXERFJLQTHYPVZDMWAGCBNAJVISPCFUUJJJARRXRUXFXPGLBJWHXIVVJBYAAMSGAZETIZATODIOKVQZCOMRTEZYTJPIVNLTBCVOXVICPSCUGPEFUMOAQYVERZLBZGACFGQGJEFMERGKRCPUKJBXONSUYQEEFTDHSGDJLTWTPZBAEUKNHHXANLMHNTFVPSVEVCRUMQXBUXIUASRBIHKKECKYXZLUBFNGBSMMTDSQEVFRRSXASETCZFBDUULGXERFJLQTHYPVZDMWAGCBNAJVISPCFUUJJJARRXRUXFXPGLBJWHXIVVJBYAAMSGAZETIZATODIOKVQZCOMRTEZYTJPIVNLTBCVOXVICPSCUGPEFUMOAQYVERZLBZGACFGQGJEFMERGKRCPUKJBXONSUYQEEFTDHSGDJLTWTPZBAEUKNHHXANLMHNTFVXROYAQHXLCRBAHDSYTFRKOFLELQKVEPUPHGIRNTGNKYXPWCOUBDZJNBJAKZOKMCJELDWGIHRDNXVZAWNIZYEJUIKJEFUIGWKOMHXHOGYHKFPJFIGRDAMYSYTUTZHARURNJZDHEIMTQBWBZMWTAZSAQODXWVLXAZYPDYMHPKOWKKHLOTPBEFOGXZKOHSJJPDZJWGCXOTCICHVZYXWIBVGYEHAWHFYYWMCLEGKMMTTJMATTUHXICRLXIOTOHWGNSFIGAEPQTSUAZRIJAUMNTISUCZJAXGVYONBYDYKLPVPIWURKDBHTMLFAYFNZLJDSIQKFKNDOMFMCOZWPODMKKTWKJCROMUYBLOLTXEKCALSOKCITAJPJOCSNTQVYMLGCZDKABYGDUEEMZRHVBQDNVNDNYWANLIEYPZSZIJIYUEUVFSHRZFVAXWKIKMNPCOPXRVXUGBUNTDTTVPKOSUPLFQPJAIKRYZZZBMVXTTODWMUUCXEMTLVTJRHOVNZUUGCBPUXHFBVEQYCQGMQZDDQKYTYJPRBUVVOBWZMOSVNOXOAPEMROSDTYVYFRXGKXPUKNNSSMXAXIXRFOMPLOXJIMXKBRQPVAVQCXBYRVBZBUTRSCNQENUJTDTCOUEYVAROBCSPGRFFBQZBAAFVPHVIIEBVQRSWCOLZTXBONIDFLMFKVTHXGTZVCBFIQWQNCGLWCVKLGBDKWOJDQAJQIKUICLIXRKFWURCZJWWUPKUPEVRDWRZCQX" key="" for x in xrange(0,41): key+=claves[key_pos[x]] for i in xrange(0,41): pos=diccionario.index(message[i]) pos2=diccionario.index(key[i]) pos3=pos-pos2 if pos3<0: pos3=26+pos3 decrypt+=diccionario[pos3] print "Message:["+str(len(message))+"]: "+message print "Key["+str(len(key))+"]: "+key print "Decrypt["+str(len(decrypt))+"]: "+decrypt
Si lo ejecutamos obtendremos el siguiente resultado:
Message:[41]: CDDCFKWZQGMXEAXETCJSCMRWWNWKLERFRAZGIBRYA
Key[41]: YSKOVGJWMCUEAJTLFYRKMRHKRIIXOYAFAORAOSOWF
Decrypt[41]: ELTOKENDEESTERETOESIQVKMFFONXGRARMIGUJDCV
Y ahí finalmente tenemos el token para este reto.
Huelga decir que no todo fue tan bonito, estando a mil cosas primero mi script se dedicaba a volver a cifrar en lugar de descifrar el mensaje con lo cual no entendía que era lo que estaba haciendo mal, cosas que pasan.
A pesar de que la dificultad del reto pueda no parecer mucha me ha parecido super interesante el utilizar un método criptográfico que no suele verse demasiado en este tipo de pruebas y creo que para gente que no conocía el método y su historia seguramente aprendieron algo nuevo.
Espero ir sacando tiempo para poder ir subiendo más writeups y continuar con la serie de post sobre I2P así como el post sobre OSSEC.
Saludos y gracias por la visita!