samedi 5 mai 2012

Interpréter du Javascript avec Chome v8 en console

Il existe différentes façons d'interpréter du Javascript.
Par exemple dans le cas d'une chaîne qui a été encodée avec un appel à escape(), on aimerait retrouver la chaîne originale.

Appel à alert()

Celle qui demande le moins de modification, consiste à ajouter un appel à alert() dans le code source de la page à la place de eval() si il y en a un, et de recharger la page:
eval(unescape("%66un%63ti%6Fn x%75fh%28fb%338){%76kv%76+=%66b38%7D"));

devient
alert(unescape("%66un%63ti%6Fn x%75fh%28fb%338){%76kv%76+=%66b38%7D"));

 Et on obtient le code dechiffré dans une fenêtre modale du navigateur. Ce n'est pas forcément très propre mais c'est la méthode la plus rapide et elle va marcher partout.

Document.write()

Au lieu de eval(), on peut modifier le DOM et écrire le texte dans le document lui-même.
Il vaut mieux dans ce cas, extraire juste la partie du code qui pose problème, et créer un document complet vierge.

<html>
<head>
<title>Exemple de document.write</title>

<script type="text/javascript">

function nouveauContenu()
{
document.open();
document.write(unescape("%64oc%75me%6Et.w%72it%65(v%6Bvv)%3Bvk%76v=%22%22;"));
document.close();
}

</script>
</head>

<body onload="nouveauContenu();">
<p>Ceci est le contenu original du document.</p>
</body>
</html>

Ardoise Javascript


Firefox contient un évaluateur Javascript dans outil/Développeur Web.
Il suffit de coller le code incriminé dedans et faire:

Exécuter, puis afficher.

L'interprétation du code est faite, et le résultat est écrit entouré par des commentaires.

Chrome v8 et l'interpréteur d8

Google Chrome fournit le code source de son interpréteur v8, et il est possible avec le programme d8, d'interpréter du Javascript dans une console.

Installation de Chome d8:
svn co http://v8.googlecode.com/svn/trunk v8-trunk
scons console=readline d8

./d8
V8 version 3.10.8.3 [console: readline]
d8> quit()

On a maintenant le programme d8 que l'on peut utiliser pour interpréter  du Javascript dans un terminal:
echo "write(3*7);" | ./d8 
V8 version 3.10.8.3 [console: readline]
21

Have fun!

Aucun commentaire:

Enregistrer un commentaire