Buenas, en este vamos a resolver algunos retos de criptografia de la plataforma https://atenea.ccn-cert.cni.es
Taparé los flags para que al menos tengáis que molestaros en leer cómo los he resuelto yo.
Si tenéis alguna duda o corrección no tengáis reparo en poneros en contacto.
Vamos al lio!

Reto 1 – Ave César!

Enunciado:

Ayúdanos a descifrar el siguiente mensaje para encontrar el flag que te conduzca al siguiente nivel:

Rpnd Yjaxd Réhpg, fjt th jcd st adh igth báh vgpcsth rpexipcth st ap Wxhidgxp rdc Patypcsgd Bpvcd n rdc Cpedatóc, th ipbqxéc jcd st adh igth báh rdchxstgpqath wxhidgxpsdgth apixcdh, rdc Rpnd Rgxhed Hpajhixd n rdc Ixid Axkxd, udgbpcsd ta tytbeapg igxjckxgpid sta etgídsd raáhxrd edg tmrtatcrxp, etgídsd ktgspstgpbtcit «ájgtd» st aph atigph apixcph.

Hx wph advgpsd aatvpg wphip pfjí, ij gtrdbetchp htgá ap st hpqtg fjt ap rdcigphtñp epgp hjetgpg thit gtid th Ratdepigp. N Yjaxd Réhpg th idsd thid, ixtct ipa hxvcxuxrprxóc, egtrxhpbtcit rdbd wxhidgxpsdg st hí bxhbd, cpggpsdg st hjh egdexph wpopñph vjtggtgph n st hj edaíixrp.

Solución:

Los que hayais hecho algunos retos CTF antes seguro que conoceis ya el Cifrado César, es una de las técnicas de cifrado más simples y más usada.
Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto.
Para resolver este reto yo use la web: http://rumkin.com/tools/cipher/caesar.php
Pero hay otras como https://www.dcode.fr/ o https://cryptii.com/pipes/caesar-cipher que también funcionan muy bien.
Bastará con pegar el texto que queremos descifrar e ir probando hasta encontrar una salida legible. En este caso el ‘shift’ es 11:

Con solo leer el texto descifrado, vemos que la palabra buscada es Cleopatra

Reto 2 – Vigenere

Enunciado:

Si has logrado pasar el primer nivel, no debería ser complicado que descifres también este 😉

qv ah pfsix xi wm ughgsm, lk wyja vugfcq vu kytqzu ugzdlglqp, zw nu qfopu nmpyxu kyp hqbíu yy tqjupra lk fsd pm rurkm mt uweutryvz, mlglkl mvzckfm, zuwír qxiii c rmtmi gzdzkxsc. gvg ipwm lk upra uáy penm yay gldvkls, dmtvcgóy xiy gáw yaknyw, ogmriw j cckvvlzbum pze aáhuhze, tkhxpviy fsd hqklrpe, iraúr amtugmya lk uñeoulale waa jiqtzoum, gzzaagíey xiy nvpe xglxpe lk my smkoyrom. tg wsyfzgmiñl bixu wfbmxuv px zkns pe zuwmymvzy. iw dmyns oqtru gzzkroíey eiei hp hmruveq, kgfdle lk piwxcji tldi ruw qumyned owt myd bitnyqxwy xi wa uomqz, xwy xíed pm khxcq akgeym ak bsydihu gzz aa piwxwxc hp xw sám jtzw. zyríl qv yo glei ahe lyi woi amagve oq tum gfmzkhxl, k ctu wznzohe bgm ti pwqogve l xwy pitzbk, s yy ywfi hp oisjs j btgte, bgm gmí iyeqrfemm mr lsníz kugs eaugve wm xuxeoqzg. zvteihu pl qlgx hp zckmxca poxewsw iir waa icrngmtne lñaa, kle oq kugtwqfoóh vpoqg, mina lk weczmy, yrugbu xi caazls; rdit geodcmuhzd g ggmra lk fe nmhg. kytqzkh hpoqx kyp fmtíu iw ewhliyauhli oq yacnlpi u kypeiju (ufq mt ywea pgs ewsctu htrmxyrnui kh pze ianscqa woi oqazy glew kmgcujkh), efzyay tzd kuhnpfcxuw gqzumíqtxmy mi oqrg yreqvjyv bgm yy pwmug kytvitu; tpdw kmxz uuvivem xuws l zckmxca kayrea; jgmxl cck yr wm vglvloqót xép ya ak mewsi ah tfzbu xi wm dklhlp.

Solución:

Tal y como el anterior cifrado, este seguro que os suena tambien.
El cifrado Vigenère es un cifrado basado en diferentes series de caracteres o letras del cifrado César formando estos caracteres una tabla, llamada tabla de Vigenère, que se usa como clave. El cifrado de Vigenère es un cifrado de sustitución simple polialfabético.
Para descifrar este vamos a usar una página que he descubierto hace poco y tiene la ventaja de incluir el diccionario español para ayudarnos a encontrar la clave de cifrado:
https://www.guballa.de/vigenere-solver

Como veis la clave de cifrado es miguel; tras leer el text que nos devuelve, vemos que la clave para completar este reto es rocinante

Reto 3 – Podrías descifrar el mensaje sin la clave?

Enunciado:

Hemos encontrado el siguiente mensaje cifrado, y no sabemos qué hacer con él

Owpty&c%l, §&l&ó$ n hk&%k&rqrtl
Sx hk&$e&hqs %wpty&c% tl e%$yk&wx&k q sq §tp%kq rts $&cts rt lt*xk&rqr rt s%l l&lyt§ql rt &$z%k§qe&ó$ rt sql yktl qr§&$&lykqe&%$tl húws&eql tb&lyt$ytl t$ Elhqñq (*t$tkqs, qxy%$ó§&eq n s%eqs).
Sx §&l&ó$ tl e%$ctky&klt t$ ts et$yk% rt qstkyq $qe&%$qs jxt e%%htkt n qnxrt q y%rql sql qr§&$&lykqe&%$tl húws&eql q ktlh%$rtk rt z%k§q káh&rq n tz&e&t$yt q s%l &$e&rt$ytl rt lt*xk&rqr jxt hxr&tkq$ lxk*&k n qzk%$yqk rt z%k§q qey&cq sql $xtcql q§t$qmql q sql jxt /%n t$ ríq tlyá$ tbhxtlyql.
Pqkq e%$yk&wx&k q tlyq §tp%kq rts $&cts rt lt*xk&rqr, ts CCN-CERT %zktet lxl ltkc&e&%l q y%r%l s%l ktlh%$lqwstl rt Tte$%s%*íql rt sq I$z%k§qe&ó$ rt sql r&ztkt$ytl qr§&$&lykqe&%$tl húws&eql q ykqcél rt e&$e% *kq$rtl sí$tql rt qeyxqe&ó$:
S%h%kyt n e%%kr&$qe&ó$ hqkq ts ykqyq§&t$y% rt cxs$tkqw&s&rqrtl n sq ktl%sxe&ó$ rt &$e&rt$ytl rt lt*xk&rqr jxt yt$*q$ sq Ar§&$&lykqe&ó$ Gt$tkqs rts Elyqr%, sql qr§&$&lykqe&%$tl rt sql e%§x$&rqrtl qxyó$%§ql, sql t$y&rqrtl jxt &$yt*kq$ sq Ar§&$&lykqe&ó$ L%eqs n sql E$y&rqrtl rt Dtkte/% húws&e% e%$ htkl%$qs&rqr pxkír&eq hk%h&q c&$exsqrql % rtht$r&t$ytl rt exqsjx&tkq rt sql qr§&$&lykqe&%$tl &$r&eqrql. Es CCN-CERT, q ykqcél rt lx ltkc&e&% rt qh%n% yée$&e% n rt e%%kr&$qe&ó$, qeyxqká e%$ sq §áb&§q etstk&rqr q$yt exqsjx&tk q*ktl&ó$ kte&w&rq t$ s%l l&lyt§ql rt &$z%k§qe&ó$ rt sql qr§&$&lykqe&%$tl húws&eql. Pqkq ts ex§hs&§&t$y% rt s%l z&$tl &$r&eqr%l t$ s%l hákkqz%l q$ytk&%ktl lt h%rká$ kteqwqk s%l &$z%k§tl rt qxr&y%kíq rt s%l l&lyt§ql qzteyqr%l.
Fts&e&rqrtl, yx q$l&qr% ytl%k% tl: zsq*{t53z00w7124266z8et045t27q873220t}
I$ctly&*qe&ó$ n r&cxs*qe&ó$ rt sql §tp%ktl hkáey&eql l%wkt lt*xk&rqr rtsq &$z%k§qe&ó$ t$ykt y%r%l s%l §&t§wk%l rt sql qr§&$&lykqe&%$tl húws&eql. C%$ tlyq z&$qs&rqr, sql ltk&tl rt r%ex§t$y%l CCN-STIC %zktetká$ $%k§ql, &$lykxee&%$tl, *xíql n kte%§t$rqe&%$tl hqkq qhs&eqk ts ENS n hqkq*qkq$y&mqk sq lt*xk&rqr rt s%l l&lyt§ql rt Tte$%s%*íql rt sq I$z%k§qe&ó$ t$ sq Ar§&$&lykqe&ó$.
F%k§qe&ó$ rtly&$qrq qs htkl%$qs rt sq Ar§&$&lykqe&ó$ tlhte&qs&lyq t$ ts eq§h% rt sq lt*xk&rqr TIC, qs %wpty% rt zqe&s&yqk sq qeyxqs&mqe&ó$ rt e%$%e&§&t$y%l n rt s%*kqk sq lt$l&w&s&mqe&ó$ n §tp%kq rt lxl eqhqe&rqrtl hqkq sq rtytee&ó$ n *tly&ó$ rt &$e&rt$ytl.
I$z%k§qe&ó$ l%wkt cxs$tkqw&s&rqrtl, qstkyql n qc&l%l rt $xtcql q§t$qmql q s%l l&lyt§ql rt &$z%k§qe&ó$, kte%h&sqrql rt r&ctklql zxt$ytl rt kte%$%e&r% hktly&*&%, &$esx&rql sql hk%h&ql.
I§hxsl% rt $xtcql eqhqe&rqrtl rt ktlhxtlyq q &$e&rt$ytl t$ sql AAPP. Es CCN rtlqkk%ssqká x$ hk%*kq§q jxt %zktmeq sq &$z%k§qe&ó$, z%k§qe&ó$, kte%§t$rqe&%$tl n /tkkq§&t$yql $tetlqk&ql hqkq jxt sql qr§&$&lykqe&%$tl húws&eql hxtrq$ rtlqkk%ssqk lxl hk%h&ql eqhqe&rqrtl rt ktlhxtlyq q &$e&rt$ytl rt lt*xk&rqr.

Pista! Cada carácter se sustituye siempre por un determinado carácter del alfabeto del texto cifrado

Solución:

En este reto las cosas se empiezan a complicar, sin embargo la pista que nos dan nos ayudará mucho ya que nada más leerla pensamos en un cifrado de sustitución.
El cifrado por sustitución es un método de cifrado por el que unidades de texto plano son sustituidas con texto cifrado siguiendo un sistema regular
Asi que, ¿tenemos que ir probando letra por letra hasta encontrar algo legible? ¡Uf, qué pereza!
Bueno, podriamos hacerlo a mano, pero en el reto anterior conocimos la web: https://www.guballa.de/substitution-solver que nos ayudara un poco con este reto:

Como veis esto no nos termina de solucionar el problema, sigue sin poder leerse con soltura, sin embargo ya podemos ir intuyendo algunas palabras y asi hacer la sustitucion a mano:

'pla*' --> 'flag'
'Fel&n&dades' --> 'felicidades'

Tras hacer estos cambios durante un rato, obtenemos un text más legible y podremos coger el flag:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
text = '''Wibet&m%s, §&s&ó$ u cr&%r&dades
Lo cr&$n&cal %ibet&m% es n%$tr&io&r a la §eb%ra del $&mel de se*or&dad de l%s s&ste§as de &$p%r§an&ó$ de las tres ad§&$&stran&%$es cúil&nas ez&ste$tes e$ Nscaña (*e$eral, aot%$ó§&na u l%nal).
Lo §&s&ó$ es n%$mert&rse e$ el ne$tr% de alerta $an&%$al goe n%%cere u auode a t%das las ad§&$&stran&%$es cúil&nas a resc%$der de p%r§a rác&da u ep&n&e$te a l%s &$n&de$tes de se*or&dad goe cod&era$ sor*&r u apr%$tar de p%r§a ant&ma las $oemas a§e$avas a las goe /%u e$ día está$ ezcoestas.
Bara n%$tr&io&r a esta §eb%ra del $&mel de se*or&dad, el MMU-MNDE %prene sos serm&n&%s a t%d%s l%s resc%$sailes de Een$%l%*ías de la Y$p%r§an&ó$ de las d&pere$tes ad§&$&stran&%$es cúil&nas a tramés de n&$n% *ra$des lí$eas de antoan&ó$:
L%c%rte u n%%rd&$an&ó$ cara el trata§&e$t% de mol$erai&l&dades u la res%lon&ó$ de &$n&de$tes de se*or&dad goe te$*a$ la Hd§&$&stran&ó$ Ke$eral del Nstad%, las ad§&$&stran&%$es de las n%§o$&dades aotó$%§as, las e$t&dades goe &$te*ra$ la Hd§&$&stran&ó$ S%nal u las N$t&dades de Jeren/% cúil&n% n%$ cers%$al&dad boríd&na cr%c&a m&$noladas % dece$d&e$tes de noalgo&era de las ad§&$&stran&%$es &$d&nadas. Nl MMU-MNDE, a tramés de so serm&n&% de ac%u% tén$&n% u de n%%rd&$an&ó$, antoará n%$ la §áz&§a neler&dad a$te noalgo&er a*res&ó$ ren&i&da e$ l%s s&ste§as de &$p%r§an&ó$ de las ad§&$&stran&%$es cúil&nas. Bara el no§cl&§&e$t% de l%s p&$es &$d&nad%s e$ l%s cárrap%s a$ter&%res se c%drá$ renaiar l%s &$p%r§es de aod&t%ría de l%s s&ste§as apentad%s.
Fel&n&dades, to a$s&ad% tes%r% es: pla*{e53p00i7124266p8ne045e27a873220e}
Y$mest&*an&ó$ u d&mol*an&ó$ de las §eb%res cránt&nas s%ire se*or&dad dela &$p%r§an&ó$ e$tre t%d%s l%s §&e§ir%s de las ad§&$&stran&%$es cúil&nas. M%$ esta p&$al&dad, las ser&es de d%no§e$t%s MMU-LEYM %prenerá$ $%r§as, &$stronn&%$es, *oías u ren%§e$dan&%$es cara acl&nar el NUL u cara*ara$t&var la se*or&dad de l%s s&ste§as de Een$%l%*ías de la Y$p%r§an&ó$ e$ la Hd§&$&stran&ó$.
F%r§an&ó$ dest&$ada al cers%$al de la Hd§&$&stran&ó$ escen&al&sta e$ el na§c% de la se*or&dad EYM, al %ibet% de pan&l&tar la antoal&van&ó$ de n%$%n&§&e$t%s u de l%*rar la se$s&i&l&van&ó$ u §eb%ra de sos nacan&dades cara la detenn&ó$ u *est&ó$ de &$n&de$tes.
Y$p%r§an&ó$ s%ire mol$erai&l&dades, alertas u am&s%s de $oemas a§e$avas a l%s s&ste§as de &$p%r§an&ó$, ren%c&ladas de d&mersas poe$tes de ren%$%n&d% crest&*&%, &$nlo&das las cr%c&as.
Y§cols% de $oemas nacan&dades de rescoesta a &$n&de$tes e$ las HHBB. Nl MMU desarr%llará o$ cr%*ra§a goe %prevna la &$p%r§an&ó$, p%r§an&ó$, ren%§e$dan&%$es u /erra§&e$tas $enesar&as cara goe las ad§&$&stran&%$es cúil&nas coeda$ desarr%llar sos cr%c&as nacan&dades de rescoesta a &$n&de$tes de se*or&dad.'''

dictRep = {
'&':'i',
'n':'c',
'p':'f',
'b':'p',
'c':'p',
'$':'n',
'%':'o',
'*':'g',
'o':'u',
'§':'m',
'm':'v',
'i':'b',
'h':'a',
'v':'c'
}

outp = ''
for c in text.lower():
	if c in dictRep:
		outp += dictRep
	else:
		outp += c
print (outp)

Referencias:

https://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar
https://es.wikipedia.org/wiki/Cifrado_de_Vigen%C3%A8re

¿Me ayudas a compatirlo?