Newsgroup: it.comp.lang.javascript
Titolo: script compresso

Ho scaricato un dimostrativo grafico ( demo )
http://scene.org/file.php?file=%2Fparties%2F2005%2Fassembly05%2Fbrowser_demo%2F04_redbug_by_shingebis.zip&fileinfo
il codice javascript esterno risulta essere compresso, almeno così dice
l'autore leggendo i msg nella demo, e in effetti provando ad aprirlo è
praticamente privo di codice in chiaro. Mi sembra un sistema interessante
per evitare che il proprio codice sia copiato, dove è possibile trovare
informazioni a riguardo?
grazie
kzt
ps ( la demo sembra funzionare solo IE)

 ps ( la demo sembra funzionare solo IE)
Se è solo per IE esiste il compilatore microsoft che cripta i file js-vbs
(più difficilmente craccabile, ma comunque in rete trovi programmi per
craccarli già fatti), cerca sul sito microsoft.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 caratteri, e con un ciclo for lo riscrivo corretto e lo eseguo con
eval.[CUT]
grazie per l'informazione, avevo cercato in giro ma non avevo trovato nulla,
almeno sotto compresso.
Anche se il testo della demo dice: "14K of compressed Javascript (depacked
on-the-fly... yes, I'm mad enough to implement LZW decompression in
Javascript".
Sembra che il codice sia anche compresso, gurdando meglio il codice js in
effetti si scorge una parte in chiaro, immagino che sia la funzione  che
decripta ( o decomprime) lo script.
scusa per il copia incolla non proprio preciso:
---
".split('');c=255;o="";
for(j=0;j<k.length;j++){if(c==255){d={};
for(i=0;i<a.length;i++)d[i+35]=a[i];
i+=35;o+=d[c=k.charCodeAt(j++)]}else{if(d[c]!=null){o+=e=d[c];
d[i]=t+e.charAt(0)}else{o+=d[i]=t+t.charAt(0)}i++;
if(i==128)i=160}t=d[c];c=k.charCodeAt(j)}function
go(){c=(d=document).createElement('div');l={border:'1px solid
gray',backgroundColor:'black',position:'relative',width:'800px',height:'600p
x',top:'0px',left:'0px',overflow:'hidden',color:'#faa',fontSize:'72px',fontF
amily:'sans-serif'};
for(p in l){c.style[p]=l[p]};lb=d.createTextNode('loading');
c.appendChild(lb);
d.getElementById('k').appendChild(c);
eval(o);
setTimeout(go2,100)}
----
ciao e grazie

 decripta ( o decomprime) lo script.
Esatto, c'è sempre un qualcosa in chiaro da cui iniziare...
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 per evitare che il proprio codice sia copiato,
Mere illusioni, il codice javascript è sempre in chiaro. Il browser deve
averlo in chiaro per poterlo eseguire.
Se non vuoi che il tuo codice non sia copiato, hai sbagliato settore. Il
web è per lo più un settore open. Soprattutto client-side.
Se vuoi "scoraggiare" l'uso del tuo codice, oltre che scriverlo chiaramente
nei commenti (cosa che, sinceramente, non condivido perché va contro la
filosofia del web), "offuscalo". Per far ciò ci sono tonnellate di
programmi che ti sostituiscono i nomi di funzioni e variabili, ed eliminano
tabulazioni e "a capi", rendendo sia il codice più leggero da caricare per
il browser, sia meno comprensibile per un occhio umano.
L'autore della "demo" ha implementato la compressione come mero "esercizio
di stile", e per rientrare nei 64k, presumo. Dato che il codice è
assolutamente in chiaro.
Apri la pagina html, e dopo che la demo è partita scrivi nella location
bar:
javascript:document.write(o);
E leggerai tutto ciò che ti serve.
"Offuscare" il codice, invece, ha il vantaggio di non far perdere tempo al
browser in inutili funzioni di decrittazione che rallentano inutilmente
l'esecuzione della pagina, ed offrono l'unica protezione che puoi
pretendere da un sistema aperto.
P.S.
Dubito che questa demo giri su un processore con velocità di clock indicata
dalle note (3Mhz+ CPU), è più probabile che intendesse 3Ghz.. certo, se
così è, non ci sono più gli scener di una volta...
-- 
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth."

 così è, non ci sono più gli scener di una volta...
ROTFL !
 
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.


[CUT]
grazie per la dritta! basta veramente poco per scoprire cosa ci sta sotto
senza neanche perdere troppo tempo a decriptare la funzione. E' da poco che
cerco di capire javascript devo dire che dopo lo smarrimento iniziale, ho
solo qualche conoscenza di VB.net, mi sembra un linguaggio interessante, ho
creato qualche piccolo applicativo per il lavoro e i primi risultati
incominciano vedersi.
grazie a tutti
kzt