Comment décompresser le contenu d'un fichier JavaScript?

Vous savez comment ressemblent les fichiers js emballés, n'est-ce pas?

  Eval (fonction (p, a, c, k, e, d) {...} ('obfuscated-string'.split (' | '), 0, {})) 

Il se trouve que je dois régler un grand code hérité qui ressemble à cela et je veux trouver un moyen de transformer cette version en une version plus lisible.

Si cela n'est pas possible, puis-je au moins me débarrasser de l'eval?

Vous pouvez avec les déballers en ligne: essayez l'un d'entre eux, trouvez celui qui vous convient:

  • Dean Edwards Unpacker
  • JSUnpack

JS Beautifier reformatera et décompressera:

http://jsbeautifier.org/

Voici un déballoir .

eval(function(W,H,A,K){function z(i){return(i< 62?'':z(this['parseInt'](i/62)))+((i=i%62)>35?String.fromCharCode(i+29):i.toString(36))}for(var i=0;i<W.length;i++)A[z(i)]=W[i];function d(w){return A[w]?A[w]:w;};return H.replace(/\b\w+\b/g,d);}('alert|Testing|packed'.split('|'),'0("1 0 2");',{})); 

Ce que je fais, c'est changer eval pour document.getElementByID ('test'). Value = et puis assurez-vous que j'ai une identité textuelle (pas d'analyse par DOM, multilignes) wuth

 test.value=(function(W,H,A,K){function z(i){return(i< 62?'':z(this['parseInt'](i/62)))+((i=i%62)>35?String.fromCharCode(i+29):i.toString(36))}for(var i=0;i<W.length;i++)A[z(i)]=W[i];function d(w){return A[w]?A[w]:w;};return H.replace(/\b\w+\b/g,d);}('alert|Testing|packed'.split('|'),'0("1 0 2");',{})); 
 <textarea id=test rows=9 cals=77></textarea>