Commentare una porzione di codice JS

mercoledì 08 ottobre 2008 - 12.26

squilibrio Profilo | Expert

Qualcuno potrebbe getilmente dirmi cosa dovrebbe fare questa porzione di codice??

<script>
var s=String.fromCharCode(257);
var ki="";
var me="";
for(i=0;i<1024;i++)
{ki=ki+s;}
for(i=0;i<1024;i++)
{me=me+ki;}
var ov=s;
for(i=0;i<28;i++) ov += ov;
for(i=0;i<88;i++) ov += me;

alert("done generating");
var fk=escape(ov);
alert("done escape");
alert(fk);
</script>


oltre a creare dei cicli, cosa fanno esattamente queste istruzioni

var s=String.fromCharCode(257);
var fk=escape(ov);
alert(fk);

ov += ov;
ov += me;


Grazie mille!!

alx_81 Profilo | Guru

>oltre a creare dei cicli, cosa fanno esattamente queste istruzioni
>
> var s=String.fromCharCode(257);
Questa funzione ritorna il carattere dal suo ASCII:
http://www.w3schools.com/jsref/jsref_fromCharCode.asp

> var fk=escape(ov);
Questa funzione trasforma la stringa creata in una sequenza di caratteri codificata:
http://javascript.html.it/guide/lezione/843/escape-ed-unescape/

> ov += ov;
Questa è un concatenamento di una stringa a se stessa (una volta in più rispetto a quelle indicate nel ciclo)

> ov += me;
Questa è una concatenazione di un stringa ad un'altra, precedentemente creata.

Sinceramente sembra che il codice da te indicato crei un mega stringone per poi trasformarlo in una sequenza di escape..
Viene ripetuto innumerevoli volte il carattere 257 (ASCII Standard, se non erro corrisponde allo 001, e quindi - SOH, Start of Heading)

>Grazie mille!!
di nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

squilibrio Profilo | Expert

Grazie per l'aiuto... ho provato a rileggere dopo la tua spiegazione dettagliata ma mi perdo ancora... nel senso che mi piacerebbe sapere, riga per riga... cosa viene fatto per capire il contenuto delle variabili e l'azione delle varie funzioni eseguite... chiedo troppo??

Grazie infinite!!

xshell Profilo | Newbie

<script> var s=String.fromCharCode(257); var ki=""; var me=""; for(i=0;i<1024;i++) {ki=ki+s;} for(i=0;i<1024;i++) {me=me+ki;} var ov=s; for(i=0;i<28;i++) ov += ov; for(i=0;i<88;i++) ov += me; alert("done generating"); var fk=escape(ov); alert("done escape"); alert(fk); </script>

Beh, allora...

Linea 1:
var s=String.fromCharCode(257);

Definisce la variabile "s" con il carattere ASCII corrispondente al numero immesso tra parentesi... se ad esempio fosse "65", la lettera corrispondente sarebbe "A"... la tabella ASCII è di 128 caratteri (da 0 a 127), mentre l'ASCII Esteso è di 256 caratteri (da 0 a 255)... 257 non sò quindi a quale tabella corrisponda... forse un'ulteriore estensione della tabella ASCII (fatto sta che il numero 257 corrisponde alla lettera "a" minuscola con un trattino sopra). Nella tabella ASCII seguente non è definito un numero "257": http://wwwesterni.unibg.it/dsfc/pers/zamparelli/corsi/eit03-04/ascii.htm ...

Poiché molto probabilmente il valore 257 è stato messo proprio per sforare dalla tabella ASCII Estesa, questo script dovrebbe mandare in crash un computer... con un bel loop. Non dovrebbe danneggiare il sistema, però, a mio avviso, lo dovrebbe bloccare fino al riavvio del pc.

squilibrio Profilo | Expert

Grazie mille per l'aiuto

Infatti l'obiettivo dovrebbe essere proprio quello, quello che non capisco è cosa fanno le altre istruzioni se già la prima manda in crash il sitema...

squilibrio Profilo | Expert

Scusate se riposto.. potreste commentarmi ogni singola porzione di codice?? Dato che mi sono rimasti i dubbi postati nel mio post precedente?

Grazie infinite

luigidibiasi Profilo | Guru

<script>
>>var s=String.fromCharCode(257);
definisce il carattere inesistente
>>var ki="";
>>var me="";
dichiara due stringhe
>>for(i=0;i<1024;i++)
>>{ki=ki+s;}
riempie la stringa concatenando 1024 caratteri cattivi
>>for(i=0;i<1024;i++)
>>{me=me+ki;}
riempie la seconda stringa concatenando 1024 stringhe di 1024 caratteri cattivi
(buffer overflow?)
la stringa me sarà di 1024*1024 caratteri

>>var ov=s;
inserisce il carattere cattivo in ov

>>for(i=0;i<28;i++) ov += ov;
concatena 28 caratteri cattivi

>>for(i=0;i<88;i++) ov += me;
concatena 28 stringhe da 1024*1024 caratteri cattivi


>>alert("done generating");
>>var fk=escape(ov);

qui credo va in crash perchè cerca di eseguire escape sulla stringa da 1024*1024*28 caratteri

>>alert("done escape");
>>alert(fk);




</script>
Luigi Di Biasi

squilibrio Profilo | Expert

Grazie mille una sola domanda, cos avuole dire

"escape sulla stringa"

Grazie mille

luigidibiasi Profilo | Guru

Ciao,
Intendevo che veniva richiamata la funzione escape sulla stringa generata dai cicli. Sinceramente non ho provato il codice ma credo sfrutti qualche bug di escape per far crashare il browser...
Luigi Di Biasi

squilibrio Profilo | Expert

Grazie mille, quello che non ho capito è cosa fa esattamente escape!

Ho cercato e viene indicato che converte il carattere in esadecimale ... è corretto?? e cosa vorrebbe dire in questa logica??

Grazie infinite!!!

luigidibiasi Profilo | Guru

Ciao,

praticamente la escape ti codifica la stringa passata sostituendo a determinati caratteri ( ad esempio lo spazio ) con i relativi caratteri di escape.

>>http://www.w3schools.com/jsref/jsref_escape.asp

In questo script, lì dove sta, probabilmente blocca il browser ( non ho provato lo script ) o almeno ti manda in errore il tutto perchè tenta di codificare un carattere che in realtà non è valido. (inoltre la stringa passata ad escape è enorme).


Luigi Di Biasi

squilibrio Profilo | Expert

Perchè io ho trovato che converte in esadecimale?? tu invece mi dici che converte solo gli spazi.... sto facendo casino io??? :-((


Inoltre mi sembra di aver trovato che il carattere che tu sostieni non esista sia la d con la virgoletta sotto .... ma forse, ripeto, faccio casino io


Grazie mille

luigidibiasi Profilo | Guru

Scusami, sono stato io poco chiaro.... non volevo intendere solo lo spazio ma i caratteri che in genere vengono codificati tipo < > ! &




Luigi Di Biasi

squilibrio Profilo | Expert

Scusa ancora...

questo ESCAPE tradue caratteri (esempio &, ! ...) in escape come dici tu (non so cmq cosa vuol dire in "escape")

oppure traduce tutti i caratteri in esadecimale (come mi sembra di aver capito cercando su internet)

altro dubbio:

mi sembra di aver trovato che il carattere che tu sostieni non esista sia la d con la virgoletta sotto


scusa ancora se faccio io casino

squilibrio Profilo | Expert

Un aiutino please???

luigidibiasi Profilo | Guru

Ciao,
come ho scritto in un precedente post non ho provato il codice js ma ho solo commentato le righe. Per quanto riguarda il carattere in questione ho scritto "non esiste" perchè ho ipotizzato fosse realmente così leggendo i post precedenti. (non ho controllato se realmente esista o meno ma non credo sia importante visto che lo script crasha comunque.)

Per quanto riguarda un la funzione escape e i carattere di escape in generale puoi leggere la guida sulla funzione printf di C o comunque una panoramica un pò avanzata sulla concatenazione di stringhe in js o php.

giusto per farti un idea:
La parentesi > viene rappresentata come &gt in HTML perchè < e > sono caratteri riservati all'apertura e alla chiusura di tag. La slash \ con la printf viene rappresentata con una doppia \\ perchè \ è un carattere di escape per attivare \n = newline etc..


Luigi Di Biasi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5