Selfhtmller: Javascript Verschlüsselung/Komprimierung

Hallo zusammen.

Ich habe auf:
http://www.dezinerfolio.com/2007/07/19/simple-javascript-accordions
bzw direktlink:
http://www.dezinerfolio.com/wp-content/uploads/accordemo/01.html

ein JS gefunden, was zumindest für mich, unleserlich wirkt.
Ist das eine Art verschlüsselung oder komprimierung?

Ich habe im anschluss direkt im netz nach verschiedenen methoden gesucht, und jeweils nur die js "cruncher" entdeckt, die ja nur die dichte der js verändern.

Mich würde brennend interressieren wie der jeweilige Browser trotz "verschlüsselung/komprimierung" das Script lesen kann, um was es sich für eine methode handelt, und ob sie (muss ja irgendwie) "rückgängig machbar" ist.

MfG

  1. Hallo zusammen.

    Ich habe auf:
    http://www.dezinerfolio.com/2007/07/19/simple-javascript-accordions
    bzw direktlink:
    http://www.dezinerfolio.com/wp-content/uploads/accordemo/01.html

    ein JS gefunden, was zumindest für mich, unleserlich wirkt.
    Ist das eine Art verschlüsselung oder komprimierung?

    Ich habe im anschluss direkt im netz nach verschiedenen methoden gesucht, und jeweils nur die js "cruncher" entdeckt, die ja nur die dichte der js verändern.

    Mich würde brennend interressieren wie der jeweilige Browser trotz "verschlüsselung/komprimierung" das Script lesen kann, um was es sich für eine methode handelt, und ob sie (muss ja irgendwie) "rückgängig machbar" ist.

    MfG

    Das besagte Script wurde Obfuscated. Das heißt, dass es so umgewandelt, verschachtelt und Verschleiert wurde, dass ein Programm zwar noch locker damit klar kommt, aber ein eventueller Script-Dieb dies erst "entwirren" müsste, um es zu verstehen.

    Nur selbst ich verstehe noch nicht ganz, wie soetwas wie das wirklich funktionieren kann. Bei dieser Version scheint der Text sogar Binör manipuliert zu sein.

    Würde mich also auch mal brennend interressieren, wieso das überhaupt funktioniert.

    1. Hi,

      Nur selbst ich verstehe noch nicht ganz, wie soetwas wie das wirklich funktionieren kann. Bei dieser Version scheint der Text sogar Binör manipuliert zu sein.

      innerhalb von Strings.

      Würde mich also auch mal brennend interressieren, wieso das überhaupt funktioniert.

      Die rechnen damit, dass niemand durch das Code-Chaos soweit durchsteigt, um das "eval" durch "alert" zu ersetzen und die Datei anschließend dank der wüsten Sonderzeichen noch speichern zu können. Der Code lautet:

      function $(d){return document.getElementById(d)}function g(d,v){if(v==undefined){if(d.style.display!="none"&&d.style.display!=""){return d.offsetHeight}o=d.style.display;d.style.display="block";v=parseInt(d.offsetHeight);d.style.display=o;return v}else{d.style.height=v+"px"}}function of(d,v){g(d,v);v=v/d.h;d.style.opacity=v;d.style.filter="alpha(opacity="+v*100+")"}function b(d){d=$(d);z=g(d);x=d.h;if(z>0){v=Math.round(z/d.s);v=(v<1)?z-1:z-v;of(d,v)}else{g(d,0);d.style.display="none";clearInterval(d.t)}}function e(d){d=$(d);z=g(d);x=d.h;d.style.display="block";if(z<x){v=Math.round((x-z)/d.s);v=(v<1)?z+1:v+z;of(d,v)}else{g(d,x);clearInterval(d.t)}}function Accordian(d,s,f){l=$(d).getElementsByTagName("div");a=[];for(i=0;i<l.length;i++){d=l[i];if(d.id.substr(d.id.indexOf("-"),d.id.length)=="-content"){a.push(d)}}x=null;for(i=0;i<l.length;i++){(function(h){c=h.id.substr(0,h.id.indexOf("-"));if(c+"-header"==h.id){c=$(c+"-content");c.style.display="none";c.style.overflow="hidden";c.h=g(c);c.s=(s==undefined)?7:s;h.f=f;h.c=a;if(h.className.match(new RegExp(f+"+"))){x=h}h.onclick=function(){for(j=0;j<this.c.length;j++){n=this.c[j].id;n=n.substr(0,n.indexOf("-"));d=$(n+"-header");n=$(n+"-content");s=d.className.split(new RegExp("\s+"));for(p=0;p<s.length;p++){if(s[p]==""+d.f){s.splice(p,1);d.className=s.join(" ");break}}clearInterval(n.t);if(d.id==this.id){if(n.style.display=="none"){g(n,0);n.t=setInterval('e("'+n.id+'")',9)}d.className+=" "+d.f}else{if(n.style.display=="block"){n.t=setInterval('b("'+n.id+'")',9)}}}}}})(l[i])}if(x!=null){x.onclick()}}

      Was auch noch schlimm genug ist.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Was auch noch schlimm genug ist.

        Das ganze kann man ja noch durch einen Javascript beautifier jagen...

        Gruss

        --
        selfcode: ie:% fl:( br:> va:) ls:& rl:( n4:~ ss:| de:> js:( ch:? mo:} zu:)
        "Egal, ob ein Sandkorn oder ein Stein. Im Wasser sinken sie beide."
      2. Interessante Sache..
        Unter
        http://www.javascriptobfuscator.com/
        gibts den Obfuscator/Cruncher und unter
        http://jsbeautifier.org/
        findet man auch das passende Gegenstück.
        Aber ich finde nirgend einen cruncher/obfuscator der Strings in Bytes darstellt / ausgibt. Wie wurde das bewerkstelligt?

        Kommt es mir nur so vor, oder werden die Scripts die "gecruncht" wurden wirklich ein wenig schneller ausgeführt als vorher?
        Kann das vlt (mal abgesehen von der Prozessorgeschwindigkeit, da JS ja Clientbasiert abläuft) auch daran liegen, weil die "obfuscated" Scripts komplett per eval in den Speicher geladen und dadurch schneller abgearbeitet werden? Oder liege ich da gerade komplett im Argen..

        MfG