Forum » Programiranje » [Java] razlaga kode
[Java] razlaga kode
TaDej2719 ::
Sem bolj začetnik, zato me zanima, če bi mi kdo znal razložiti naslednji del kode: var base= new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"); var key=new Array(3); var i; base.reverse(); for (i=0; i < = 3;++i) { key[i] = new Array(2); } key[0][0]=base[41]; key[0][1]=base[21]; key[1][0]=base[1]; key[1][1]=base[3]; key[2][0]=base[11]; key[2][1]=base[8]; key[3][0]=base[22]; pass=prompt("Please enter the Password: ",""); if (pass==key.join(",")){ window.location.href="index.php?pw="+pass; }
- spremenilo: snow ()
PaX_MaN ::
Bolj JavaScript, kot C.
Pač, naredi en seznam (base) s črkami, ga obrne( base.reverse() ), nato pa naredi dvodimenzionalnotabelo tabelo (key), ki jo napolne s črkami iz seznama "base". Nato, se mi zdi, izpiše okno, v katerega vpišeš nek string. Če je ta string enak tabeli key, joinani po vejci (? - nimam pojma kaj naredi ta join, vsaj za tabelo ne), te vrže na indeksno stran, z argumentom pass.
Ampak naj ti to razloži nekdo, ki ve več o tem.
Pač, naredi en seznam (base) s črkami, ga obrne( base.reverse() ), nato pa naredi dvodimenzionalnotabelo tabelo (key), ki jo napolne s črkami iz seznama "base". Nato, se mi zdi, izpiše okno, v katerega vpišeš nek string. Če je ta string enak tabeli key, joinani po vejci (? - nimam pojma kaj naredi ta join, vsaj za tabelo ne), te vrže na indeksno stran, z argumentom pass.
Ampak naj ti to razloži nekdo, ki ve več o tem.
fiction ::
JavaScript ni primeren za preverjanje gesla, saj se vedno izvaja na strani klienta, ki ima tako
vse potrebne informacije. Tudi ce je koda malo "obfuscatana", to nic ne pomaga.
Zmeraj pride do nekega preverjanja enakosti (tako ali drugace) kar,
glede na to da se vse skupaj izvaja v browserju od uporabnika, ni tako tezko debugirati.
Ce ne drugega lahko JavaScript kodo enostavno skopiras v nek lokalen HTML
in tam dodas pred preverjanjem document.write(), ki bo izpisal obe vrednosti
tako da sam postopek, ki naj bi otezil odkrivanje pravilnega gesla sploh ni vazen.
Ce ze hoces imeti nek JavaScript password prompt, potem lahko naredis, da se uporabnikov
vhod direktno uporabi in te recimo vse skupaj redirecta na stran katere ime je odvisno
od vhoda. Seveda tako ne mores izpisati, da je geslo napacno, ampak bo uporabnik
dobil samo sporocilo o tem da dolocena stran ne obstaja (404 error).
Pomoje je tole iz nekega "hack challenga", ki pa ti ga mi ne bomo pomagali resiti.
join() konkretno elemente arraya zdruzi
in pri tem vmes doda znak ",".
vse potrebne informacije. Tudi ce je koda malo "obfuscatana", to nic ne pomaga.
Zmeraj pride do nekega preverjanja enakosti (tako ali drugace) kar,
glede na to da se vse skupaj izvaja v browserju od uporabnika, ni tako tezko debugirati.
Ce ne drugega lahko JavaScript kodo enostavno skopiras v nek lokalen HTML
in tam dodas pred preverjanjem document.write(), ki bo izpisal obe vrednosti
tako da sam postopek, ki naj bi otezil odkrivanje pravilnega gesla sploh ni vazen.
Ce ze hoces imeti nek JavaScript password prompt, potem lahko naredis, da se uporabnikov
vhod direktno uporabi in te recimo vse skupaj redirecta na stran katere ime je odvisno
od vhoda. Seveda tako ne mores izpisati, da je geslo napacno, ampak bo uporabnik
dobil samo sporocilo o tem da dolocena stran ne obstaja (404 error).
Pomoje je tole iz nekega "hack challenga", ki pa ti ga mi ne bomo pomagali resiti.
join() konkretno elemente arraya zdruzi
in pri tem vmes doda znak ",".
TaDej2719 ::
Ne, sej nočm, de mi poveš geslo, bi pa rad, de mi mal bl natančno razložiš način kako nej tole rešm.
Poleg tega me tut zanima mal bl podrobno, kuko misliš to de bi se dal kar obiti preverjanje?
Poleg tega me tut zanima mal bl podrobno, kuko misliš to de bi se dal kar obiti preverjanje?
fiction ::
No ja, se popravljam - lahko bi teoreticno naredil tudi da JavaScript preveri,
ce je password pravilen. V kodo bi dodal nek one-way hash od passworda in
potem preveril, ce je hash od tistega kar uporabnik vpise
enak shranjenemu hashu. Ampak se vedno pa bi moral potem
narediti redirect na recimo <cleartextpass>.html, tako da je to ubistvu
brezveze.
TaDej2719:
If v kodi primerja pass in key.join(","). Pass je tisto kar ti vpises,
tisti drugi del je pa nekaj kar se (na dokaj kompliciran nacin) izracuna.
Ampak ce bi recimo lahko ti pred tem if-om videl kaj je vrednost drugega
dela, bi s tem enostavno ugotovil pravi password. Naslednjic
bi samo vpisal tisto kar si prej odkril in pass bi enak drugem delu (torej pravilen).
ce je password pravilen. V kodo bi dodal nek one-way hash od passworda in
potem preveril, ce je hash od tistega kar uporabnik vpise
enak shranjenemu hashu. Ampak se vedno pa bi moral potem
narediti redirect na recimo <cleartextpass>.html, tako da je to ubistvu
brezveze.
TaDej2719:
If v kodi primerja pass in key.join(","). Pass je tisto kar ti vpises,
tisti drugi del je pa nekaj kar se (na dokaj kompliciran nacin) izracuna.
Ampak ce bi recimo lahko ti pred tem if-om videl kaj je vrednost drugega
dela, bi s tem enostavno ugotovil pravi password. Naslednjic
bi samo vpisal tisto kar si prej odkril in pass bi enak drugem delu (torej pravilen).
fiction ::
for (i=0; i <= 3; ++i) je klasicna for zanka - to pomeni, da se bo telo zanke izvedlo 4x.
Prvic z i=0, potem z i=1 in tako naprej do i=3.
i=0 del je inicializacija (in se zgodi pred zacetkom), i <= 3 je pogojni del (ki mora biti izpoljen da se bo zanka se enkrat izvedla),
tretji del pa je inkrement in se izvede po vsakem obhodu (ponavadi za spreminjanje stevca).
Kaj ko bi si mogoce prebral kaksne osnove programiranja?
Prvic z i=0, potem z i=1 in tako naprej do i=3.
i=0 del je inicializacija (in se zgodi pred zacetkom), i <= 3 je pogojni del (ki mora biti izpoljen da se bo zanka se enkrat izvedla),
tretji del pa je inkrement in se izvede po vsakem obhodu (ponavadi za spreminjanje stevca).
Kaj ko bi si mogoce prebral kaksne osnove programiranja?
fiction ::
Vejice mogoce? :)
Zanimivo je, da ce izpises v JavaScript-u direktno array dobis z ',' locene elemente.
Tako da niso samo zaradi join()-a tam vejice, ampak jih je malo vec.
Zanimivo je, da ce izpises v JavaScript-u direktno array dobis z ',' locene elemente.
Tako da niso samo zaradi join()-a tam vejice, ampak jih je malo vec.
Sergio ::
Sam ste pacienti :)
var base= new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"); var key=new Array(3); var i; base.reverse(); for (i=0; i < = 3;++i) { key[i] = new Array(2); } key[0][0]=base[41]; key[0][1]=base[21]; key[1][0]=base[1]; key[1][1]=base[3]; key[2][0]=base[11]; key[2][1]=base[8]; key[3][0]=base[22]; pass=prompt("Please enter the Password: ",""); alert(key.join(",")); if (pass==key.join(",")){ window.location.href="index.php?pw="+pass; }
To pozente, pa se vam bo password izpisal v alertu.
var base= new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"); var key=new Array(3); var i; base.reverse(); for (i=0; i < = 3;++i) { key[i] = new Array(2); } key[0][0]=base[41]; key[0][1]=base[21]; key[1][0]=base[1]; key[1][1]=base[3]; key[2][0]=base[11]; key[2][1]=base[8]; key[3][0]=base[22]; pass=prompt("Please enter the Password: ",""); alert(key.join(",")); if (pass==key.join(",")){ window.location.href="index.php?pw="+pass; }
To pozente, pa se vam bo password izpisal v alertu.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
Zgodovina sprememb…
- spremenil: Sergio ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Fake traffic generatorOddelek: Omrežja in internet | 2272 (1468) | HotBurek |
» | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 18152 (8900) | black ice |
» | [C++] Ponavljanje črk v stringuOddelek: Programiranje | 1399 (1185) | darkkk |
» | Ponavljanje črk? How to?Oddelek: Programiranje | 1203 (1106) | vorantz |
» | mIRCOddelek: Programiranje | 2399 (1733) | Sims |