ROB BOWDEN: Olen Rob ja Mennään halkeilua. Joten muistan PSET spec että aiomme olla tarvitsematta käyttää kryptassa toiminto. Miehelle sivu, meillä on kaksi hash määritellä _xopensource. Älä ole huolissasi, miksi meidän täytyy tehdä. Ja myös hash ovat unistd.h. Joten kun se on pois tieltä, katsotaanpa päästä varsinaisen ohjelman. Ensimmäinen asia, meidän täytyy tehdä, on varmistaa käyttäjä kirjoittaa voimassa salattu salasana komentoriviltä. Muista, että ohjelma on tarkoitus voidaan ajaa kuin piste slash crack, ja sitten salattu merkkijono. Joten tässä me Varmistamme että argc kaksi, jos haluamme jatkaa ohjelmaa. Jos argc ei ole kaksi, se tarkoittaa, että joko käyttäjä ei anna salattu salasana komentoriviltä, ​​tai ne tuli enemmän kuin vain salattuja salasanan komentoriviltä, ​​jossa Jos emme tiedä mitä tehdä komentoriviargumentteja. Joten jos argc oli kaksi, voimme jatkaa. Ja tässä, me aiomme julistaa muuttuja salattu. Se on juuri menossa alias alkuperäisen argv1 niin, että koko tämän ohjelma, meillä ei ole kutsua sitä argv1, jotka sinun täytyy ajatella mitä se oikeastaan ​​tarkoitti. Joten lopuksi, haluamme vahvistaa, että salattu salasana käyttäjälle tuli olisi ylipäänsä ollut salattu salasana. Per mies sivu krypta, salattu salasana on oltava 13 merkkiä pitkä. Täällä huomaa, että me hash määritelty salata pitkä kuin 13. Joten me vain varmistaa, että merkkijonon pituus salattu salasana on 13.. Ja jos se ei ole, haluamme Lopeta ohjelma. Joten kun se on pois tieltä, voimme nyt todella yrittää selvittää, mikä salasana, joka antoi salattu salasana oli. Täällä haluamme napata suolaa alkaen salattu salasana. Muista, per man-sivulta, että kaksi ensimmäistä merkkiä salattu merkkijono, kuten tässä - 50ZPJ ja niin edelleen - kaksi ensimmäistä merkkiä antaa meille suola, jota on käytetty vuonna kryptassa toiminto. Ja tässä näemme, että suola oli ha. Joten haluamme kopioida kaksi ensimmäistä merkkiä, suola pituus on hash määritelty kaksi. Meidän täytyy kopioida kaksi ensimmäistä merkkiä tähän array, suola. Huomaa, että tarvitsemme suolaa pituus plus yksi, sillä tarvitsemme vielä null terminaattori lopussa suolasta. Sitten aiomme julistaa tämän array, vieras, kooltaan max pituus plus yksi, jossa maksimipituus on hash määritelty kahdeksan, koska suurin salasanan on kahdeksan merkkiä pitkä. Ja aiomme käyttää tätä kerrata kaikkiin mahdollisiin jouset, jotka voisivat voimassa salasanoja. Joten jos voimassa merkkiä salasanan olivat vain a, b ja c, me toistaa yli, b, c, aa, ba, CA, ja niin edelleen, kunnes saamme nähdä cccccccc - kahdeksan C: n. Ja jos meillä ei alas voimassa salasanan, meidän täytyy sanoa, että salattu merkkijono ei ollut voimassa aluksi. Joten nyt pääsemme tämän ajan 1 silmukka. Huomaa, että tarkoittaa se päättymättömään silmukkaan. Huomaa ei ole break-lause sisällä tämän päättymättömään silmukkaan. On vain palata lausuntoja. Joten emme koskaan oikeastaan ​​odottaa Poistu silmukka. Me vain odottaa poistua ohjelmasta. Olen lisännyt tätä tulosta lausuma Tämän päälle silmukan vain tulostaa mitä nykyinen arvaus mikä salasana on. Nyt, mitä tämä silmukka tekee? Se looping kaikkiin mahdollisiin jouset jotka voivat olla voimassa salasanoja. Ensimmäinen asia, aiomme tehdä, on pidä nykyistä arvata, mitä salasana on. Otamme suola että me tarttui salattu merkkijono, ja olemme menossa salaa arvata. Tämä antaa meille salattu arvaus, jonka aiomme verrataan salattu merkkijono, joka käyttäjän tuli komentoriviltä. Jos ne ovat samat, jolloin string verrattavissa palaa nolla, jos Ne ovat samoja, sitten kai oli salasana, joka syntyy salattu merkkijono, jolloin voimme tulostaa että meidän salasanan ja palaa. Mutta jos ne eivät ole samoja, että tarkoittaa meidän arvaus oli virheellinen. Ja haluamme kerrata sen Seuraava voimassa arvaus. Niin, että mitä tämä taas silmukka yrittää tehdä. Se tulee toistaa meidän arvaus seuraavaan voimassa arvaus. Huomaa, että kun sanomme, että erityisluonnetta meidän arvaus on saavutti max symboli, joka täällä on hash määritellään tilde, koska se suurin ASCII-arvon merkki että käyttäjä voi syöttää at näppäimistö, kun merkki saavuttaa max symboli, niin haluamme lähettää takaisin vähintään symboli, joka on tila, jälleen pienin ASCII arvon symboli, joka käyttäjä voi kirjoita näppäimistöllä. Joten aiomme asettaa, että välttämättömään symboli. Ja sitten me aiomme mennä seuraavaan luonnetta. Joten miten on meidän arvauksia menossa kerrata? No, jos voimassa merkit ovat a, b, ja c, jos aloitimme, se tulee kerrata ja b, se tulee kerrata-c. c on meidän max symboli, niin me asetetaan c takaisin, vähintään symboli. Ja sitten me kerrata indeksi seuraavaan merkkiin. Joten jos alkuperäinen arvaus oli c, seuraava merkki tulee olemaan null terminaattori. Täällä, huomaa, että jos merkki että haluamme nyt lisäys oli null terminaattori, Sitten aiomme asettaa sen vähintään symboli. Joten jos arvaus oli c, niin meidän Uusi arvaus tulee olemaan aa. Ja jos meidän alkuperäinen arvaus oli cccc, sitten uusi arvaus tulee olemaan aaaaa. Joten aina kun pääsemme suurin merkkijono tietyn pituuden, niin me olemme aikoo toteuttaa mahdollisimman pieneksi merkkijono Seuraavan pituus, joka tulee vain olla kaikkien merkkien vähintään symboli. Nyt, mitä tämä tarkistus tekee täällä? No, jos indeksi siirtyi kahdeksas merkin yhdeksän merkin - joten lisäämme kahdeksan c luvulla Meidän edellinen arvata - sitten indeksi on menossa keskittyä viime null terminaattori meidän arvaus array, joka ei ole tarkoitettu itse käyttää meidän salasanaa. Joten jos olemme keskittyneet että viime null terminaattori, niin emme ole löytäneet salasanan, joka on voimassa käyttämällä vain kahdeksan merkkiä, mikä tarkoittaa, ettei kelvollinen salasana, joka salaa on annettu merkkijono. Ja meidän täytyy tulostaa, että sanonta emme löytäneet voimassa salasanan, ja palata. Joten tämä kun silmukka on menossa kerrata kaikkiin mahdollisiin jouset. Jos se löytää joka salaa sen odotetaan salattu merkkijono, se tulee palata, että salasanan. Ja se ei löydä mitään, niin se palaa, tulostaa se ei löytänyt mitään. Nyt, huomaa, että iteroimalla kaikkien mahdollista jouset on todennäköisesti menossa kestää jonkin aikaa. Katsotaanpa itse nähdä, miten pitkään, että kestää. Tehdään halki. No, hups - se sanoo määrittelemätön viittaus kryptassa. Muista siis, että p asettaa spec ja myös man-sivulta kryptassa, että me täytyy yhdistettäisiin kryptassa. Nyt oletuksena tehdä komennolla ei tiedä, että olet halua käyttää tätä toimintoa. Joten kopioida tämän asiakkaan komento ja vain lisätä loppuun se, joka yhdistää krypta. Nyt se kokoaa. Joten ajaa halki tietyllä salattu merkkijono - niin Caesarin. Joten se oli melko nopeasti. Huomaa, että tämä päättyi 13. No, keisarin salattu salasana sattuu olemaan 13. Joten yritä muuta salasanaa. Otetaanpa Hirschhorn n salattu salasana ja yritä halkeilua että. Joten huomaat olemme jo saavuttaneet kolme merkkiä. Ja me iteroimalla kaikkiin mahdollisiin kolmen merkkijonot. Se tarkoittaa, että jo valmiiksi iteroimalla kaikkiin mahdollisiin yksi ja kaksi merkkijonoa. Nyt näyttää siltä, ​​että tämä tulee kestää jonkin aikaa ennen kuin pääsemme neljä-merkkijonojen. Se saattaa kestää pari minuuttia. Se ei ota pari minuuttia. Olemme neljän merkkijonojen. Mutta nyt meidän täytyy kerrata kaikkia mahdollista, neljä-merkkijonojen, joka että saattaa kestää ehkä 10 minuuttia. Ja sitten kun pääsemme viiden merkin jouset, meidän täytyy kerrata kaikkia niistä, jotka voivat kestää pari tuntia. Ja meidän täytyy kerrata kaikkia mahdollisia kuuden merkkijonot, jotka saattaa kestää pari päivää ja niin edelleen. Joten se voisi olla erittäin pitkä aika kerrata kaikkiin mahdollisiin kahdeksan merkin ja vähemmän jousille. Niin huomaa, että tämä ei välttämättä erittäin tehokas algoritmi löytää salasanan. Voisi ajatella, että siellä olemassa parempia tapoja. Esimerkiksi salasana zyx! 32ab luultavasti ei ole kovin yleinen salasanan, taas salasanan 12345 luultavasti paljon yleisempää. Joten yksi tapa yrittää löytää salasanan nopeammin on vain katsoa klo salasanoja, jotka ovat yleisempiä. Niinpä esimerkiksi, voimme yrittää lukea sanoja alkaen sanakirja ja kokeilla kaikkia nämä sanat meidän salasanan arvauksia. Nyt, ehkä salasanan ei ole näin yksinkertainen. Ehkä käyttäjä oli jonkin verran fiksu ja kokeile lisätä numeron sanan lopussa. Joten ehkä niiden salasana oli password1. Joten voit kokeilla iteroimalla kaikkia sanoja in sanakirja yhden liitteenä lopussa. Ja sitten ehkä kun tekee, että sinun liittää kaksi lopussa. Tai ehkä käyttäjä yrittää olla jopa viisaampi, ja he haluavat salasana on "hakkeri", mutta ne ovat aikoo korvata kaikki E: n kanssa kolmosta. Joten voi tehdä tämän myös. Toistaa kaikkia sanoja, mutta vaihda merkkejä näyttää numerot ne numerot. Joten tällä tavalla, saatat saalis vieläkin salasanoja, jotka ovat melko yleisiä. Mutta loppujen lopuksi, ainoa tapa tallentaa kaikki salasanat on raakaa pakottaa kerrata kaikkia mahdollista jouset. Joten lopulta, sinun täytyy kerrata kaikkia merkkijonoja yhden merkin kahdeksan merkkiä, joka voi kestää hyvin pitkään, mutta sinun täytyy tehdä se. Nimeni on Rob Bowden. Ja tämä on Crack.