Pour cet exercice, vous avez accès à un XML aussi difficile à lire que possible. Vous devrez trouver le hash code correspondant à la question posée pour progresser vers la suivante. La première question est donnée en clair, les suivantes sont encrypté en AES 128. La clé de décryptage est la réponse à la question précédente.
Les trois clés misent bout-à-bout correspondent à la clé pour décrypter le message caché. Le premier à donner le message caché en clair gagne quelque chose.
Vous pouvez décrypter une question/le message sur le site suivant : http://aesencryption.net/
Le XML est le fichier suivant :
<?xml version="1.0" encoding="UTF-8"?>
<racine>
<c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
cc85422bc216536cce41ab3645ae54d6
<c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
cc85422bc216536cce41ab3645ae54d6
<c4ca4238a0b923820dcc509a6f75849b>
<z28c8edde3d61a0411511d3b1866f0636>
<?e246b8006a7966c441f4175ce826fa96 e246b8006a7966c441f4175ce826fa96="e246b8006a7966c441f4175ce826fa96" ?>
</z28c8edde3d61a0411511d3b1866f0636>
</c4ca4238a0b923820dcc509a6f75849b>
<!-- e246b8006a7966c441f4175ce826fa96 -->
<c4ca4238a0b923820dcc509a6f75849b>
<z28c8edde3d61a0411511d3b1866f0636>
</z28c8edde3d61a0411511d3b1866f0636>
</c4ca4238a0b923820dcc509a6f75849b>
cc85422bc216536cce41ab3645ae54d6
<c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
<z28c8edde3d61a0411511d3b1866f0636>
</z28c8edde3d61a0411511d3b1866f0636>
</c4ca4238a0b923820dcc509a6f75849b>
e246b8006a7966c441f4175ce826fa96
<c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
<z28c8edde3d61a0411511d3b1866f0636 e246b8006a7966c441f4175ce826fa96="zccz8z5z42z2zzbzc2z1z6z5z3z6zzczczez4z1zazbz3z6z4z5zazez5zzz4zdz6z">
</z28c8edde3d61a0411511d3b1866f0636>
</c4ca4238a0b923820dcc509a6f75849b>
<?cc85422bc216536cce41ab3645ae54d6 e246b8006a7966c441f4175ce826fa96="cc85422bc216536cce41ab3645ae54d6" ?>
cc85422bc216536cce41ab3645ae54d6
<c4ca4238a0b923820dcc509a6f75849b cc85422bc216536cce41ab3645ae54d6="cc85422bc216536cce41ab3645ae54d6">
</c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
<c4ca4238a0b923820dcc509a6f75849b>
e246b8006a7966c441f4175ce826fa96
<c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
<?cc85422bc216536cce41ab3645ae54d6 cc85422bc216536cce41ab3645ae54d6="cc85422bc216536cce41ab3645ae54d6" ?>
</c4ca4238a0b923820dcc509a6f75849b>
</c4ca4238a0b923820dcc509a6f75849b>
</racine>
Le message codé est le suivant :
V3qHgj3n5FH46uN0pkexcWOz40Kf/wEgRvxLyh2bOZUbLlP/B3ovKix6fwJEdsTuVbfpoeb1CxHZugBx4b1mGhN7w/qT34nSCW0rRsxsNwNzAd6112dLlcKbEZni8a5/vmA+OV7Rj9ZV8/af44jcti88gQViEogBQL+wIiTaq8I=
La première clé est une processing-instruction d'un descendant d'un nœud précédé d'un texte et suivi d'un commentaire.
quand on parle de texte, on exclu les \n et \t servant au formatage du document xml
Cette exercice se base sur la manipulation des axes et des tests de nœuds. En fait chaque prédicat est obtenu à partir d'axes et de conversion automatique vers bool.
Vous trouverez les fonctions nécessaires dans au bout des lien des sections concernés, ou bien sur internet.
voici une requête XPath possible pour obtenir la première clé :
//node()[following-sibling::comment() and preceding-sibling::text()]//processing-instruction()
QRqDo+EgrwkUw3gMCafz7YZF8DRQcViUVnj7I8YBh115eb7litMTmpTic4mbKdD3iB3fEBM8l6PaReIKepb7zT3BWOqVfHi1wrV/CYTaxCzMCCoT/N1pOvlf57F1ymupOF/4R345bfc9fq3FexDIiBZOHJDJ/fMKkXfq2mTw81LlaUmTDboSxgDN76tGZvCiT3Pcd4c+49hJmD4WXSdbRw==
Cet exercice se base sur la manipulation de string. Vous trouverez les fonctions adapté au bout du lien associé à la section sur les prédicats. En l’occurrence, la recommandation W3C concernant XPath
La question était la suivante :
La prochaine clé est la valeur d'un attribut dont le premier caractère est "z", sans les "z".
Essayez de retirer les z avec XPath, et non pas avec les yeux
voici une requête XPath possible pour obtenir la seconde clé :
translate(//@*[substring(., 1, 1) = 'z'], 'z', '')
q2dscu0kAXFY++iPcp0DSZuEfDDevZpxCpbd8J4hnT8StpQY3OpPqj9/ddj4k5f/f60kiHj/QQtrPujTphtqzVnDOB6xEM6DQPR5pH9Y9aqFWWCXaMyCw4p7GMKiEa4cfSOw/hK+QzSM0QMF6oc4FZsWht/NVqmEuqET6Ul8sTDuVK/ZxToRaam6FS8rMCnVGpxKsq8iVLfGMA6GAE+Jqg==
Cet exercice se base sur votre compréhension de XML. Si vous lisez bien la question, vous trouverez que quelque chose cloche
La question était la suivante :
La dernière clé est le premier attribut (compris en tant que tel par XML et XPath) de la première processing-instruction du document à avoir des attributs
La réponse est '' (rien). En effet, pour XPath (et XML), une processing-instruction, même si souvent présenté sous forme <?PI clé="valeur" ?>, n'a rien à voir avec un attribut. C'est simplement du texte qui ressemble à un attribut. Le document ne contient donc aucun nœud de type"processing-instruction" avec un attribut, puisque c'est impossible