ROB BOWDEN: Ma olen Rob ja hakkame lõhenemist. Nii mäletan pset spec et me ei kavatse olla kellel on vaja kasutada crypt funktsiooni. Sest mees leheküljel on kaks hash määratleda _xopensource. Ära muretse, miks me peame seda tegema. Ja ka hash hulka unistd.h. Nii et kui see välja viis, lähme saada tegelik programm. Esimene asi, mida me peame tegema, on veenduge, et kasutaja sisestatud kehtiv krüpteeritud UUS käsurida. Pea meeles, et programm peaks tuleb käivitada nagu dot kaldkriipsuga crack, ja siis krüpteeritud string. Nii et siin me kontrollida, et veenduda et argc kahele, kui tahame jätkata programmi. Kui argc ei ole kaks, mis tähendab kas kasutaja ei sisesta krüpteeritud UUS käsurida või nad kantakse üle ainult krüpteeritud UUS käsurida, kus puhul me ei tea, mida teha käsurea argumente. Nii et kui argc oli kaks, saame jätkata. Ja siin me kuulutada muutuja krüpteeritud. See on lihtsalt läheb alias originaal argv1 nii, et kogu selle programm, me ei pea seda kutsuda argv1, mis siis sa pead mõtlema kohta, mida see tegelikult tähendab. Nii et lõpuks, me tahame, et kinnitada, et krüpteeritud parool kasutaja sisestatud oleks tegelikult olnud krüpteeritud parool. Per mees leheküljele krüpt, krüpteeritud parool peab olema 13 märki. Siin üleval, märkate, et me hash määratletud krüptida pikkusega 13. Nii et me lihtsalt tagada, et string pikkusega krüpteeritud parool on 13. Ja kui see ei ole, me tahame programmist väljumiseks. Nii et kui see on välja Muide, saame nüüd tegelikult proovida leida seda, mida parooli, mis andis krüpteeritud parool oli. Siin tahame haarata soola alates krüpteeritud parool. Pea meeles, et iga mees lehel, et Esimesed kaks märki krüpteeritud string, meeldib siin - 50ZPJ ja nii edasi - esimesed kaks tähemärki anda meile sool, mida kasutati aastal krüpt funktsioon. Ja siin me näeme, et sool oli ha. Nii et me tahame, et kopeerida esimese kahe tegelased, soola pikkus on hash määratletud kui kaks. Meil on kopeerida esimesed kaks tähemärki sellesse massiiv, sool. Pange tähele, et meil on vaja soola pikkus pluss üks, sest meil on vaja veel null terminaator lõpus meie sool. Siis me kuulutame selle massiivi külaline, suurus max pikkus pluss üks, kus max pikkus on hash määratletud kui kaheksa, kuna maksimaalne salasõna on kaheksa märki. Ja me ei kavatse kasutada seda korrata kõikvõimalike stringe, mis võiks kehtivad paroolid. Nii et kui kehtiv tähemärki parool olid just a, b ja c, siis oleksime Käi a, b, c, aa, ba, ca, ja nii edasi, kuni saame näha cccccccc - kaheksa c on. Ja kui me ei ole alla kehtiva salasõna, siis peame ütlema, et krüpteeritud string ei olnud kehtiv alustada. Nüüd jõuame selle ajal 1 silmus. Pange tähele, et tähendab, et see lõputu silmuse. Teatis ei ole murda avaldus sees see lõputu silmuse. Seal on ainult tagasi avaldustega. Nii et me tegelikult ei oodata silmusest väljumiseks. Meil on ainult oodata, et väljuda programmist. Olen lisanud seda print avaldus Selle peale silmuse lihtsalt välja printida mida meie praegune oletus Mis on parool. Nüüd, mis on see loop teed? See silmukoiminen kõikvõimalike stringe mis võib olla kehtiv paroole. Esimene asi, mida me teeme, on võtta meie praegune oletusega, mida parool. Võtame sool et me haarasid krüpteeritud string, ja me oleme kavatse krüpteerimiseks oletus. See annab meile krüptitud oletus, mis me võrreldakse krüpteeritud string, et kasutaja sisestatakse käsurealt. Kui need on samad, mille puhul string võrreldav naaseb null, kui nad sama, siis arvan, et oli parooli, mis loodud krüpteeritud string, mille puhul saame trükkida et kui meie parool ja tagasi. Aga kui nad ei ole sama, mis tähendab, et meie oletus on vale. Ja me tahame kinnitada, et Järgmise kehtiv oletus. Nii see on, mida see samas loop üritab teha. See saab korrata meie oletus Järgmise kehtiv oletus. Pange tähele, et kui me ütleme, et eelkõige märk meie oletus on jõudnud max sümbol, mis siin on hash määratletud tilde, kuna mis on suurim ASCII väärtus iseloomu et kasutaja saab sisestada aadressil klaviatuur, kui iseloomu jõuab max sümbol, siis tahame saata see tagasi minimaalse sümbol, mis on ruumi jälle madalaim ASCII väärtuse sümbol, mida kasutaja saab sisesta klaviatuurilt. Nii et me ei kavatse kehtestada, et minimaalse sümbol. Ja siis me läheme järgmisele iseloomu. Niisiis, kuidas on meie oletused kavatse korrata? Noh, kui kehtiv tegelased on a, b, ja c, siis kui me alustasime, see saab kinnitada, et b, siis see korrata, et c. c on meie max sümbol, nii me seada c tagasi, minimaalne sümbol. Ja siis korrata indeks järgmine sümbol. Nii et kui algne oletus oli c, järgmisele iseloomu saab olema null terminaator. Siin all märgata, et kui märk et tahame nüüd juurdekasv oli null terminaator siis me ei kavatse seada see miinimum sümbol. Nii et kui oletus oli c, siis meie uus oletus saab olema aa. Ja kui meie algne oletus oli cccc, siis meie uus oletus saab olema aaaaa. Nii et kui me jõuame maksimaalne string teatava pikkusega, siis oleme kavatse rakendada minimaalselt string järgmise pikkus, mis kestab lihtsalt kõik tegelased miinimum sümbol. Nüüd, mis on see kontroll siin teed? Noh, kui indeks liikunud kaheksas märgi üheksa iseloomu - nii me lisada kaheksa c on nagu meie eelmine arvan - siis indeks läheb keskenduda viimane null terminaator meie oletus massiiv, mis ei ole mõeldud tegelikult kasutada oma parool. Nii et kui me oleme keskendunud, et viimane null terminaator siis me ei leidnud parool, mis on kehtiv, kasutades ainult kaheksa märki, mis tähendab, et puudub kehtiv parool, mis krüpteerib et antud stringi. Ja meil on trükkida seda, öeldes: me ei suutnud leida kehtiv parooli ja tagasi. Nii et see, kui loop läheb itereerima kõikvõimalike stringe. Kui ta leiab, et krüpteerib et oodata krüpteeritud string, siis see tagasi, et parool. Ja ta ei leia midagi, siis ta naaseb, trükkimine, et seda ei suutnud leida midagi. Nüüd teate, et iterating üle kõik võimalik stringid on ilmselt läheb aega võtta. Olgem tegelikult näha, kuidas kaua see aega võtab. Teeme crack. Noh, oops - ta ütleb undefined viide krüpt. Seega pidage meeles, et p seab spec ja ka man-leheküljelt krüpt, et me pead lingi krüpt. Nüüd vaikimisi käsk make ei tea, et sa soovite kasutada seda funktsiooni. Teeme kopeeri see klient käsk ja lihtsalt lisada lõppu see, mis ühendab krüpt. Nüüd koostab. Niisiis olgem joosta pragu antud krüpteeritud string - nii Keisri. Nii et oli päris kiire. Pange tähele, et see lõppes 13. Noh, Caesari krüpteeritud parool juhtub olema 13. Seega proovime teise parooliga. Võtame Hirschhorn on krüpteeritud parool ja proovige lõhenemist et. Nii märkate oleme juba jõudnud kolm märki. Ja me iterating üle kõik võimalik Kolme märgijadadena. See tähendab, et me oleme juba lõpetada iterating kõikvõimalike üks ja kaks märgijada. Nüüd tundub, et see läheb võtab aega, enne kui jõuame nelja-märgijadadena. See võib võtta paar minutit. Ta ei võta paar minutit. Me oleme neli-märgijada. Aga nüüd on meil vaja korrata üle kõik võimalik nelja-märgijada, mis mis võib kesta ehk 10 minutit. Ja siis, kui me jõuame viie iseloomu stringid, peame Käi kõik Nende hulk, kes võivad võtta paar tundi. Ja meil on vaja korrata üle kõik võimalik Kuue märgijada, mis võib võtta paar päeva ja nii edasi. Nii et see võiks olla väga pikk aeg korrata üle kõik võimalik kaheksa-kohaline ja vähem stringe. Nii teate, et see ei ole tingimata väga tõhus algoritm leidmiseks UUS. Võib arvata, et seal on paremaid viise. Näiteks salasõna zyx! 32AB ilmselt ei ole väga levinud parool arvestades salasõna 12345 ilmselt palju rohkem ühist. Nii et üks viis, püüdes leida parool kiiremini on lihtsalt vaadata kell paroole, mis on rohkem levinud. Nii näiteks saame proovida lugeda sõnu alates sõnastik ja proovida kõik need sõnad on meie salasõna oletused. Nüüd äkki parool ei ole nii lihtne. Võibolla kasutaja oli mõnevõrra tark ja proovige lisades numbri sõna lõpus. Ehk oma parool oli password1. Nii saad proovida iterating üle kõik sõnad sõnastikus koos ühe lisatud lõpuni. Ja siis võib-olla pärast seda, et sul lisab kaks kuni lõpuni. Või äkki kasutaja üritab olla isegi targem, ja nad tahavad, et nende parool on "häkker", kuid nad kavatse asendada kõik juhtumid e on koos kolmekesi. Nii et sa võiksid seda teha ka. Käi kõik sõnad sõnastikust aga asendada märkide nägema numbrid need numbrid. Nii et see tee, siis võib jõuda isegi rohkem paroole, mis on üsna tavaline. Aga lõppude lõpuks, ainult nii saab lüüa kõik paroolid on loomalik sundida Käi kõik võimalik stringe. Nii et lõpuks, sa ei pea korrata üle kogu strings ühe märgi kaheksa tähemärki, mis võib võtta väga pikka aega, aga sa pead seda tegema. Minu nimi on Rob Bowden. Ja see on crack.