» »

[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 ()

Infinity ::

men tolele ne zgleda k java :\ loh d se motm ampak men tole bl k C zgleda:D

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.

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 ",".

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?

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).

TaDej2719 ::

Sam kaj pa pomeni:
(i=0; i < = 3;++i)

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?

TaDej2719 ::

Meni pride geslo Keyword, sam neki manka.
Kaj???

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.

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.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Zgodovina sprememb…

  • spremenil: Sergio ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Fake traffic generator

Oddelek: Omrežja in internet
192272 (1468) HotBurek
»

Python - pomoč (strani: 1 2 3 )

Oddelek: Programiranje
10318152 (8900) black ice
»

[C++] Ponavljanje črk v stringu

Oddelek: Programiranje
141399 (1185) darkkk
»

Ponavljanje črk? How to?

Oddelek: Programiranje
51203 (1106) vorantz
»

mIRC

Oddelek: Programiranje
252399 (1733) Sims

Več podobnih tem