Newsgroup: it.comp.lang.javascript
Titolo: AIUTO X PASSWORD E USER NAME

Cari ragazzi, spero di trovare qui la soluzione al mio problema. In un sito
che sto costruendo devo creare un'area riservata con accesso tramite user
name e password. Su 
www.html.it
 ho trovato questo script che vi riporto di
seguito
<HTML>
<HEAD>
<!-- Codice scaricato gratuitamente da HTML.it, il sito italiano sul Web
publishing
 
http://www.html.it
 -->
<TITLE>Esempi Javascript: esempio pratico </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide from JavaScript-Impaired Browsers
al="`1234567890-=~!@#$%^&*()_+qwer"
+"tyuiop[]QWERTYUIOP{}|asdfghjkl;A"
+"SDFGHJKL:zxcvbnm,./ZXCVBNM<>?";
ab1="";
bctr=0;
function unencr(val) {
 ab1z="";
 lsz=val;
 az=eval(lsz.substring(0,2))-91;
 lsz=lsz.substring(2,lsz.length);
 nlsz="";
 flgz=0;
 abz=eval(lsz.substring(0,2))-89;
 ab1z=(ab1z==""?""+abz:ab1z);
 oab1z=ab1z;
 lsz=lsz.substring(2,lsz.length);
 for (var i=0;i<abz;i++) {
  nrz=eval(lsz.substring(0,2))-az;
  lsz=lsz.substring(2,lsz.length);
  nlsz+=al.charAt(nrz);
 }
 return nlsz;
}
function ckPwd(){
 tst=document.isn.username.value
 +"*"+document.isn.passwrd.value+"*";
 ls=document.pd.pe.value;
 a=eval(ls.substring(0,2))-91;
 ls=ls.substring(2,ls.length);
 nls="";
 flg=0;
 while (ls.length>12){
  ab=eval(ls.substring(0,2))-89;
  ab1=(ab1==""?""+ab:ab1);
  oab1=ab1;
  ls=ls.substring(2,ls.length);
  for (var i=0;i<ab;i++){
   nr=eval(ls.substring(0,2))-a;
   ls=ls.substring(2,ls.length);
   nls+=al.charAt(nr);
   }
  nls+="*";
  if (nls.indexOf(tst)>-1){
   ls="";
   flg=1;
   }
  }
 if (flg==1){
  tstOk();
  }
 else{
  bctr++;
  if (bctr>3){
   location.href="newpwdss.htm";
   }
  else{
   alert("Spiacente. La tua password od il tuo nome sono errati."
   +" Riprova #"+bctr+".");
   }
  }
 }
function tstOk(){
 ab1=ab1+""+a;
 azzz = unencr(document.pd.pf.value);
 alert("Bene. Hai inserito correttamente user name e password "
  +document.isn.username.value+"! Stai per entrare nella pagina ad accesso
controllato"
  +" Clicca su OK per continuare.");
 location.href='new'+azzz+"?"+ab1;
}
function srand() {
 today=new Date();
 rand=today.getTime();
 picker=""+rand
 picker=picker.charAt((picker.length - 4));
 rec=eval(picker);
 }
function upLink(){
mw=window.open("","","scrollbars=1,resizeable=1,status=1,height=340,width=52
0");
 mw.location.href="msies.htm";
 }
// End Hiding -->
</SCRIPT>
</HEAD>
<BODY bgcolor="white">
<FORM NAME="pd">
<!-- Paste the element from the pseudo-encrypter here -->
<!-- Paste these elements into your main script
     named pwd.htm in the location indicated -->
<INPUT TYPE='hidden' NAME='pe'
VALUE='929368355777960518045676195293885230329557675767576797673378365730293
2975733783657302932 '>
<INPUT TYPE='hidden' NAME='pf' VALUE='9298362854535380573178 '>
</FORM>
<CENTER><FORM NAME="isn">
<TABLE BORDER=2 CELLPADDING=5 CELLSPACING=0 BGCOLOR=BLUE>
<TR><TD COLSPAN=2 ALIGN=CENTER><FONT SIZE=4 COLOR=WHITE
FACE="helvetica,arial,geneva"><B>Entra nella pagina <BR> ad accesso
controllato </B></FONT></TD></TR>
<TR><TD><FONT SIZE=3 COLOR=WHITE><B>Il tuo nome:</B></FONT></TD>
<TD><INPUT TYPE="text" NAME="username" VALUE="" SIZE=10></TD></TR>
<TR><TD><FONT SIZE=3 COLOR=WHITE><B>La tua password:</B></FONT></TD>
<TD><INPUT TYPE="password" NAME="passwrd" VALUE="" SIZE=10></TD></TR>
<TR><TD COLSPAN=2 ALIGN=CENTER><INPUT TYPE="button" NAME="btn" VALUE=" Vai
alla pagina " onClick="ckPwd();return false;"></TD></TR>
</TABLE></FORM></CENTER>
purtroppo vengono riportate solo le cinque coppie di user name e password
che occorrono per entrare, ma non viene spiegato come si personalizza lo
script cambiando le user name e password a proprio piacimento. Se ho intuito
bene, dovrebbe esserci un file esterno in cui sono riportate le varie coppie
di user name e password. Vorrei sapere da voi se la mia supposizione è
corretta e come devo impostare il file. Se invece sono in errore, vi prego
di illuminarmi sul corretto funzionamento dello script. Se poi esistono
sistemi migliori per raggiungere lo scopo, accetto volentieri dei
suggerimenti.
Mi chiedo anche come faccio ad assicurarmi che chi accede all'area riservata
passi sempre per il controllo di user name e password e non con accesso
diretto, magari perchè è già stato su quelle pagine e le ha aggiunte alle
"preferite".
Spero di essere stato chiaro e di ricevere al più presto delle risposte. Vi
ringrazio di cuore anticipatamente.
--
GENNARO MORRA
SITO INTERNET: 
www.viverenapoli.com
E-MAIL: 
webm...@viverenapoli.com

 suggerimenti.
Non c'e grande sicurezza con javascript; ma questo e' un po' troppo
facile.
Prova ad aggiungere un alert alla fine del while:
------------------------------
while.....
........
 if (nls.indexOf(tst)>-1){
  ls="";
  flg=1;
 }
}
 alert(nls);  // aggiungere questa riga
----------------------
e ti esce la lista delle parole chiave.
Altri script piu' complicati li trovi su 
www.jsdir.it
.
Saluti, Paolo

 suggerimenti.
[]
Nella pagina sono crittografate 2 sequenze nei campi input nascosti:
pe=929368355777960518045676195....
pf=9298362854535380573178
Nella prima sono inserite le coppie user-pas, nella seconda il nome
della pagina 'segreta'; i valori sono utilizzati sempre in coppia
Un codice decodificatore che e' la variabile
al="`1234567890-=~!@#$%^&*()_+qwer"
+"tyuiop[]QWERTYUIOP{}|asdfghjkl;A"
+"SDFGHJKL:zxcvbnm,./ZXCVBNM<>?";
formata da 91 caratteri.
Lo schema di pe e' di questo tipo
-prima coppia(92)        usata per modificare l'indice a cui fanno
riferimento i valori relativi ai caratteri a questo valore viene tolto
91 e quindi varra' 1
le coppie seguenti formano gruppi di lunghezza determinata dalla prima
coppia del gruppo inseriti con lo schema nomeUtente valorePass
nomeUtente valorePass
-seconda coppia(93):  usata per determinare la lunghezza del primo
nomeUtente, a questo valore viene tolto 89 e quindi in questo caso vale
4, il primo nomeUtente e' lungo 4
-terza(68)/quarta(35)/quinta(57)/sesta(77) coppia: valori che
corrispondono alla posizione della cifra nascosta
-settima coppia(96):  usata per determinare la lunghezza del primo
valorePass -89=7
-successive sette coppie: .....
-ultime sei coppie: non sono utilizzate
Il primo nomeUtente crittografato e' quindi 68 35 57 77; ora questi
valori sono confrontati con il codice di decodifica e troviamo che alla
68a posizione c'e' J alla 35a o alla 57a h e alla 77a n e quindi il
primo nomeUtente e' John.
Questa corrispondenza tra valore e posizione e' determinata dalla prima
coppia della stringa (92) alla quale viene tolto 91 e quindi usata con
il valore 1; questo valore(1) e' un correttore ossia quando il programma
chiede la decodifica di 68 questo viene trasformato in 67 e la cifra di
ritorno sara' quella il cui indice e' 67; questo perche' l'indice di una
stringa inizia da 0 e non da 1; quindi la 68a posizione nella stringa
corrisponde alla cifra con indice 67.
Modificando la prima coppia di pe in 93 tutta la decodifica si
sposterebbe di una cifra a sinistra e quindi il nomeUtente risultante
sarebbe Higb.
Quindi per inserire un nuovo nomeUtente valorePass devi trasformarlo in
numeri corrispondenti alla posizione della cifra voluta anteponendo il
valore corrispondente al numero delle cifre +89 es:
nomeUtente: 123    tre cifre quindi 92 (3+89) 2a 3a 4a posizione quindi
020304 =92020304
valorePass:  456     tre cifre quindi 92 (3+89) 5a 6a 7a posizione
quindi 050607 =92050607
sequenza completa 9202030492050607
questa va inserita nel valore dell'input pe dopo la prima coppia che
quindi diventera':
939202030492050607936835577796....
con la stessa logica puoi eliminare tutte le coppie che non ti
interessano.
Lo schema di pf e' molto simile solo che estrae un solo codice nascosto
che e' il nome della pagina 'segreta':
-prima coppia(92)        usata per modificare l'indice a cui fanno
riferimento i valori relativi ai caratteri a questo valore viene tolto
91 e quindi varra' 1
-seconda coppia(97):  usata per determinare la lunghezza del nome della
pagina, a questo valore viene tolto 89 e quindi in questo caso vale 9
-le 9 coppie successive: valori che corrispondono alla posizione della
cifra nascosta; in questo caso pwdss.htm
Ultima indicazione;
 location.href='new'+azzz+"?"+ab1;
quando viene chiamata la pagina segreta al nome determinato nel modo
sopra descritto viene aggiunto un prefisso *new* e aggiunto alla
queryString un valore formato dal risultato della prima coppia -91 e
dalla seconda-89(in questo caso 41) ; nella pagina 'segreta' viene posto
un controllo che reindirizza da un'altra parte se non trova il num 41
nella queryString.
Le 2 funzioni upLink e srand non sono usate in questa pagina.
Spero di essere stato sufficientemente chiaro.
Saluti, Paolo