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.