Impossibile eseguire il debug di un javascript codificato?

3

Sto riscontrando qualche problema nel debug di un javacscript codificato. Questo script mi riferisco a questo link su qui .

La codifica qui è semplice e funziona spostando i valori degli unicodes in qualsiasi codice Code utilizzato durante la codifica. Il codice che esegue la decodifica è riportato qui in inglese semplice di seguito: -

<script language="javascript">
function dF(s){
var s1=unescape(s.substr(0,s.length-1)); var t='';
for(i=0;i<s1.length;i++)t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(s.length-1,1));
document.write(unescape(t));
}
</script>

Sono interessato a conoscere o comprendere i valori (ad es. s1, t). Come per esempio quando il valore di i = 0 quali valori avrebbero i seguenti attributi / metodo dovrebbero contenere

    s1.charCodeAt(i) and s.substr(s.length-1,1)

Il motivo per cui sto facendo questo è capire come funziona veramente una funzione CodeKey. Non vedo nulla nel codice sopra il quale dice di decodificare sulla base del valore codekey. L'unica cosa che posso indicare nel testo di codifica è l'ultimo carattere che è impostato su 1, 2, 3 o 4 a seconda della chiave di codice selezionata durante il processo di codifica. Si può verificare usando il link che ho indicato sopra.

Tuttavia, per eseguire il debug, sto usando addon firebug con lo script in esecuzione come localhost sul mio server di wamp. Sono in grado di mettere un breakpoint su js usando firebug ma non riesco a recuperare nessuno dei parametri definiti dall'utente o delle funzioni che ho menzionato sopra.

Voglio sapere in questo contesto quale sarebbe il modo migliore per eseguire il debug di questo js codificato.

Modifica

@blueberryfields Grazie per l'accurata revisione del codice.

Tuttavia, per chiarire che questo non è compito a casa è qualcosa che ho scelto da un sito web su codifica e javascript.Il materiale sembrava interessante e ha deciso di provarlo. Non vedo il punto di usare le variabili intermedie come speravo di utilizzare quelle già definite (s1, t, i). Di solito questi tipi di variabili sono visti in modo firebug troppo spesso come i tipi enumerabili. Inoltre, utilizzando un buon punto di interruzione e il posto giusto, posso sempre scavalcare questi valori nel ciclo.

Ho cambiato il mio focus mentre qualcuno su stackexchange mi ha detto di usare dragonfly (opera) così come sono stato in grado di recuperare la variabile ei loro valori con l'istruzione breakpoint. Per altri valori ho appena fatto document.write per ottenere i risultati desiderati. Ecco il link dello screenshot.

link .

Ero più interessato a capire la parte della codifica che effettivamente dice al programma di spostare il carattere unicode basato sul valore della chiave del codice. Quella parte di codice era s.substr(s.length-1,1) . Ha appena estratto l'ultimo carattere che è il numero della chiave di codice e quindi lo usa nel calcolo del valore del charcode corrispondente.

Se annulli la scansione di questo codice shift-1 %264DTDSJQU%2631MBOHVBHF%264E%2633kbwbtdsjqu%2633%264F%261Bbmfsu%2639%2638Ifmmp%2631Xpsme%2638%263%3A%264C%261B%264D0TDSJQU%264F%261B%261%3A%261%3A%261%3A1 otterrai &4DTDSJQU&31MBOHVBHF&4E&33kbwbtdsjqu&33&4F&1Bbmfsu&39&38Ifmmp&31Xpsme&38&3:&4C&1B&4D0TDSJQU&4F&1B&1:&1:&1:1 Sebbene questi ultimi caratteri non siano richiesti ma siano stati aggiunti intenzionalmente, questo aiuta a decodificare.

    
posta miles away 26.10.2012 - 13:00
fonte

2 risposte

1

Per capire come funziona questo codice, ti consiglio di estenderlo e di assegnare variabili locali intermedie per archiviare vari risultati, in modo da poter vedere come cambiano mentre passi.

Prima di assumere che stai guardando stai osservando parametri o funzioni definiti dall'utente, potresti voler osservare le funzioni in una libreria standard. Se li guardi, noterai che tutte le funzioni utilizzate sono le funzioni di libreria standard per Javascript.

Ad esempio, con il codice che hai, farei qualcosa del genere:

function dF(s) {
    var s1 = unescape(s.substr(0, s.length - 1));
    var t = '';
    for (i = 0; i < s1.length; i++) {
        var cCode = s1.charCodeAt(i);
        var key = s.substr(s.length - 1, 1);
        var temp= String.fromCharCode( cCode - key );
        t += temp;
    }
    var unescaped = unescape(t);
    document.write(unescaped);
}

Nota:

Questa domanda odora molto come una domanda a casa. Generalmente è disapprovato chiederci di fare i compiti per te, e di solito è una buona forma per avvisare almeno che sono i compiti che stai facendo.

    
risposta data 26.10.2012 - 23:36
fonte
1

Consente di semplificare la procedura:

(function (s){
    var s1=unescape(s.substr(0,s.length-1));
    var t='';
    for(i=0;i<s1.length;i++)t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(s.length-1,1));
    return unescape(t);
})( [
        'var q = 1;0' // here is a little hack, the generator never outputs this code
        'wbs%2631r%2631%264E%26312%264C1',
        'xct%2742s%2742%275F%27423%275D2',
        'ydu%2853t%2853%286G%28534%286E3',
        'zev%2964u%2964%297H%29645%297F4',
        '%7Bfw*75v*75*8I*756*8G5'
    ][1] // here you can change the index (which is also the shift amount)
)

Uscite:

"var q = 1;"

Come puoi vedere è un codice Caesar , probabilmente il primo codice che i bambini imparano a scuola.

    
risposta data 27.10.2012 - 07:39
fonte

Leggi altre domande sui tag