>> ROB Bowden: Jaz sem Rob in greva se pokanje.
Torej, ne pozabite na pset spec, da bomo potrebovali za uporabo
grobnica funkcijo.
Na strani človeka, imamo dve hash opredeliti _xopensource.
Ne skrbite o tem, zakaj moramo to storiti.
In tudi hash vključujejo unistd.h.
>> Torej, ko je to s poti, dajmo pridemo do pravega programa.
Prva stvar, ki jo morate storiti je, se prepričajte uporabnik vnese veljavno šifrirana
geslo v ukazni vrstici.
Ne pozabite, da naj bi program , ki se vodijo kot dot slash razpoke in
nato zakodiran niz.
>> Tako da tukaj smo preverimo, da argc do dveh, če želimo
nadaljevati s programom.
Če argc ne dva, kar pomeni, da bodisi Uporabnik ni stopil šifriran
geslo v ukazni vrstici, ali pa vnese več kot le šifrirana
geslo v ukazni vrstici, v katerem tako da ne vemo, kaj storiti z
argumenti v ukazni vrstici.
>> Torej, če je argc dva, lahko nadaljujemo.
In tu, gremo prijaviti spremenljivka šifrirano.
To je le, da bo alias izvirnih argv1 tako, da je ves ta
Program, nimamo, da ga pokličete argv1, ki potem moraš razmišljati
o tem, kaj to dejansko pomeni.
>> Torej, na koncu pa želimo potrditi, da šifrirano geslo uporabnika
začel bi dejansko šifrirano geslo.
Na strani človeka v grobnici, v šifrirano geslo mora biti 13
znakov.
Tu gor, opazite, da smo hash opredeljen šifriranje dolžino kot 13 let.
Tako da smo samo pazite, da Niz dolžina šifriran
Geslo je 13.
>> In če ni, želimo za izhod iz programa.
Torej, ko je to s poti, smo lahko zdaj dejansko poskusite najti tisto, kar
geslo, ki je šifriran geslo je bilo.
Tukaj želimo, da zgrabite sol iz šifriranega gesla.
Zapomni si, na strani človeka, ki Prvi dve znakov šifriran
string, kot tukaj -
50ZPJ in tako naprej -
prva dva znaka daje nam sol, ki je bila uporabljena
v kripti funkcijo.
>> In tukaj vidimo, da je sol ha.
Zato želimo, da bi kopirali prva dva znakov, dolžina sol pa hašiš
opredeljena kot dve.
Imamo kopirati prvih dveh znakov v tem polju, sol.
Obvestilo, da moramo dolžine soli plus ena, saj še vedno potrebujemo nično
terminator na koncu našega soli.
>> Potem bomo razglasi, da ta niz, gost, od velikosti dolžine max plus
ena, kjer je maksimalna dolžina hash opredeljen kot osem, saj največja geslo
je dolga osem znakov.
In bomo to uporabimo za ponovitev preko vseh možnih nizov, ki bi lahko
biti veljavni gesla.
Torej, če se veljavni znaki v geslu so le, b in c, nato
želimo ponoviti čez, B, C, aa, ba, ca, in tako dalje, dokler
smo dobili za prikaz cccccccc -
osem C je.
>> In če nimamo dol veljavna geslo, potem moramo reči, da
zakodiran niz ni velja za začetek.
Torej, zdaj smo dosegli ta pa 1. zanka.
Obvestilo, da pomeni, da je neskončna zanka.
>> Obvestilo ne obstajajo odmor izjavo znotraj te neskončno zanko.
Tam se vrne le izjave.
Tako smo dejansko nikoli ni pričakovati Za izhod iz zanke.
Mi samo pričakujejo, da zapustite program.
Sem dodal ta tiskanja izjavo vrhu te zanke za samo natisnete
kakšna je naša trenutna ugibati na kaj je geslo.
>> Zdaj, kaj je to zanka počne?
To je zanka preko vseh možnih nizov da bi se lahko veljavni gesel.
Prva stvar, ki jo boš naredil, je da naš sedanji ugibati, za kaj
geslo.
Mi bomo sol, ki smo zgrabil od zakodiran niz, in smo
gre za šifriranje ugibati.
To nam bo dalo šifrirano ugibati, kar bomo primerjajo
šifrirani niz, ki uporabniku vpisana v ukazni vrstici.
>> Če sta enaka, pri čemer Niz primerljiv bo vrnil nič, če
oni enako, verjetno je bila geslo, ki ustvari šifriran
niz, v tem primeru lahko tiskamo da je naše geslo in nazaj.
Toda, če niso bile enake, da pomeni naša domneva bila pravilna.
>> In želimo ponoviti, da Naslednji velja ugibanje.
Torej, to je to, medtem ko zanka poskuša narediti.
To bo ponovitev naše ugibanje na naslednjo veljavno ugibati.
Obvestilo, da ko smo rekli, da je zlasti lik v naše ugibanje je
Dosegli simbol max, ki tu gor je razpršilna opredeljen kot tildo, saj
To je največji znak ASCII vrednost da lahko uporabnik vnese na
tipkovnico, ko doseže učinek max simbol, nato pa želimo poslati
nazaj na najnižjo simbol, ki je prostor, spet najnižja ASCII
simbol vrednost, ki jo lahko uporabnik vnesite na tipkovnici.
>> Torej bomo nastavite, da na najmanjšo simbol.
In potem smo šli na naslednji znak.
Torej, kako so naši ugibanj bo ponovitev?
No, če veljavni znaki so a, b, in c, potem, če smo začeli,
to bo ponovitev na b, da bomo Ponovil do c.
c max je naš simbol, tako da bomo določili c nazaj, minimalno simbol.
In potem bomo Ponovil indeks na naslednji znak.
>> Torej, če je prvotna domneva c, naslednji lik se bo nična
terminator.
Dol, opazil, da če znak da hočemo sedaj
prirastek je bil null terminator, potem bomo jo nastavite na
Najmanjša simbol.
Torej, če je bilo ugibanje c, potem je naša Nova ugibati se bo aa.
In če je bil naš prvotni guess cccc, potem je naša nova ugibanje
se bo AAAAA.
>> Torej, ko smo dosegli najvišjo niz za dano dolžino, potem smo
gre za izvajanje na najmanjšo niz v naslednjem dolžine, ki bo
samo se vsi znaki minimalna simbol.
Zdaj, kaj je to preverjanje delaš tukaj?
No, če je indeks preselil iz osmega znak devetih značaja -
zato smo dodali osem C je kot naša prejšnja ugibati -
Nato indeks se bo osredotočil na Zadnji null terminator naše ugibanje
matrika, ki ni predviden za dejansko uporablja v naši geslo.
>> Torej, če smo osredotočeni na to zadnjo null terminator, potem nismo našli
geslo, ki je veljavna uporabo samo osem znakov, kar pomeni, da ni
veljavno geslo, ki šifrira v določenem nizu.
In imamo natisniti, da je pravi nismo mogli najti veljavno
geslo in donosnost.
Torej, to zanko, medtem ko se bo Ponovil preko vseh možnih nizov.
>> Če ugotovi, da je katera koli šifrira da Pričakuje zakodiran niz, se bo
vrniti to geslo.
In to ne zdi nič, potem da se bo vrnil, tiskanje, da je
ni mogel najti ničesar.
Zdaj, opazili, da ponavljanjem čez vse možne strune je verjetno bo
traja nekaj časa.
Oglejmo dejansko videli, kako dolgo, da traja.
>> Naredimo razpoko.
No, ojej - pravi nedefinirano sklicevanje na grobnico.
Torej, ne pozabite, za p določa spec in tudi stran man za grobnico, ki smo
treba povezati v grobnici.
Sedaj privzeta da ukaz ne veš, da si
želite uporabljati to funkcijo.
>> Torej, kaj je kopirati ta ukaz odjemalca in le dodamo na konec
njega, ki povezuje grobnica.
Zdaj se pripravlja.
Torej, kaj je zagon razpoko na dana zakodiran niz -
tako cesarjevega.
Tako da je bilo precej hitro.
>> Obvestilo, da je ta končala na 13..
No, cesarjevega šifrirano geslo zgodi, da bo 13.
Torej poskusimo drugo geslo.
Oglejmo Hirschhorna je šifriran geslo in poskusite, da pokanje.
>> Tako opazili, da smo že dosegli tri znake.
In smo ponavljanjem čez vse mogoče tri nize znakov.
To pomeni, da smo že globoko ponavljanjem nad vso možno eno in
dveh nizov znakov.
Zdaj pa izgleda, da se bo to bo trajalo nekaj časa, preden smo dosegli
štiri nize znakov.
To lahko traja nekaj minut.
>> Ni trajalo nekaj minut.
Smo na strune v štirimestnih.
Toda zdaj se moramo ponoviti čez vse možne strune štirih znakov, ki
da bi morda traja 10 minut.
In potem, ko smo dosegli pet značaja strune, moramo ponoviti čez vse
tistih, ki bi lahko traja nekaj ur.
In to moramo ponoviti čez vse mogoče šest-mestno strune, ki
lahko traja nekaj dni in tako naprej.
>> Torej bi lahko trajalo potencialno zelo dolgo Čas za ponovitev čez vse mogoče
osem znakov in manj strune.
Tako opazili, da to ni nujno Zelo učinkovit algoritem za iskanje
geslo.
Morda si mislite, da obstaja so boljši načini.
Na primer, geslo ZYX! 32ab verjetno ni zelo pogosti geslo
ker geslo je 12345 Verjetno veliko bolj pogosti.
>> Torej en način poskuša najti geslo hitreje je, da samo poglej
ob gesel, ki so bolj pogosti.
Tako na primer, lahko poskusite prebrati besede iz slovarja in preizkusite vse
te besede so naše geslo ugibanja.
Zdaj, morda geslo ni tako preprosto.
Mogoče si je nekoliko pameten in poskusite vstavljanje številke
konec besede.
>> Mogoče je bilo njihovo geslo password1.
Torej, lahko poskusite ponavljanjem čez vse besede v slovarju z enim
dodan na konec tega.
In potem morda po tem, da boste dodajanje dveh do konca tega.
>> Ali pa si skuša biti še bolj pameten, in želijo svoje
geslo za "hacker", ampak oni bo nadomestil vse primerke e, je
s trojkama.
Torej, lahko to storite tudi.
Ponovil preko vseh besed v slovarju ampak namesto znakov, da
izgledal številk s temi številkami.
>> Torej ta način, bi lahko ujeli še več Gesla, ki so precej pogosti.
Toda na koncu je edini način, da lahko zajame vsa gesla, je brute
prisiliti Ponovil čez vse možne strune.
Torej, na koncu ne boste morali ponoviti čez vse strune iz enega znaka
osem znakov, ki lahko traja zelo dolgo časa, vendar morate to storiti.
>> Moje ime je Rob Bowden.
In to je Crack.