ROB BOWDEN: aš Robas ir Leiskite gauti skilinėjimą. Taigi nepamirškite iš pset spec, kad mes ketiname būti, kuriems reikia naudoti kripta funkcija. Dėl žinyno puslapyje, mes turime du maišos apibrėžti _xopensource. Nesijaudinkite apie tai, kodėl mes turime tai padaryti. O taip pat maišos yra unistd.h. Taigi, kai tai iš kelio, galime patekti į faktinį programos. Pirmas dalykas, kurį turime padaryti, tai įsitikinkite, kad vartotojas įveda galioja šifruojamas slaptažodis į komandų eilutę. Atminkite, kad programa turėtų būti paleisti kaip dot slash crack, ir tada užšifruoti eilutę. Taigi čia mes patikrinti, įsitikinkite, kad kad argc iki dviejų, jei norime tęsti programą. Jei argc nėra du, tai reiškia, kad arba vartotojas neįtraukė šifruojamas slaptažodis į komandų eilutę, ar jie įrašytas daugiau nei tiesiog užkoduota slaptažodis į komandų eilutę, kurioje atveju mes nežinome, ką daryti su komandinės eilutės argumentai. Taigi, jei argc buvo du, galime tęsti. Ir čia mes ketiname paskelbti kintamasis šifruojamas. Tai tik ketina alias originalių argv1 kad per šį programa, mes neturime jį vadinti argv1, kuris tada jūs turite galvoti apie ką tai iš tikrųjų reiškia. Taigi pagaliau mes norime patvirtinti, kad Šifruotas slaptažodis vartotojas įrašytas galėjo iš tikrųjų buvo užšifruotos slaptažodį. Vienam žmogaus puslapyje kriptoje, kad Šifruotas slaptažodis turi būti 13 simbolių ilgio. Iki čia, pastebėsite, kad mes maišos apibrėžta užšifruoti ilgis 13 metų. Taigi mes tiesiog įsitikinkite, kad eilutės ilgis ir saugiame slaptažodis 13. Ir jei tai nėra, mes norime išeiti iš programos. Taigi, kai tai iš kelio, mes galime dabar tikrai pabandykite rasti tai, ko slaptažodis, kuris davė šifruojamas slaptažodis. Čia norime patraukti druskos iš užšifruotos slaptažodį. Atminkite, kad vienam žinyno puslapyje, kad Pirmi du simboliai užšifruoti Styga, kaip čia - 50ZPJ ir tt - Pirmi du simboliai suteikti mums druska, kuri buvo naudojama iš kriptų funkcija. Ir čia matome, kad druska buvo ha. Taigi, mes norime kopijuoti pirmieji du ženklai, druska ilgis yra maišos apibrėžiamas kaip dviejų. Mes turime kopijuoti Pirmi du simboliai į šio masyvo, druska. Atkreipkite dėmesį, kad mes turime druskos ilgis plius vienas, nes mes vis dar reikia null terminatorius ne mūsų druska pabaigos. Tada mes ketiname paskelbti šiame masyve, svečių, iš dydžio max ilgis plius vienas, kur maks ilgis yra maišos apibrėžta kaip aštuonių, nes didžiausia slaptažodį yra aštuonių simbolių ilgio. Ir mes ketiname naudoti šį pakartoti per visas įmanomas eilutes, kuriose galėtų Teisėti slaptažodžius. Taigi, jei galioja simbolių slaptažodžiu buvo tik a, b, ir c, tada mes norėtume pakartoti per, b, c, aa, BA, CA, ir taip toliau, kol mes turime pamatyti cccccccc - aštuonių C ". Ir jei mes turime ne žemyn galioja slaptažodis, tada mes turime pasakyti, kad užšifruotos eilutė nebuvo galioja nuo pat pradžių. Taigi dabar mes pasiekiame tai, o 1 kilpa. Atkreipkite dėmesį, kad reiškia, kad jis begalinis ciklas. Šioje duombazėje yra pateikti ne pertrauka apsauga viduje šios begalinis ciklas. Yra tik grįžti pareiškimus. Taigi, mes niekada iš tikrųjų tikėtis , kad išeitumėte iš kilpą. Mes tik tikimės, kad išeitumėte iš programos. Aš pridėjo šį spausdinimo pareiškimą viršuje šio kilpa tiesiog atsispausdinti kas mūsų dabartinis atspėti kas slaptažodis. Dabar, kas yra šis ciklas darai? Tai padarę per visas įmanomas eilutes kad galėtų būti galioja slaptažodžius. Pirmas dalykas, mes ketiname padaryti, tai atsižvelgti į mūsų dabartinę atspėti, ką slaptažodis. Mes priimsime druska, kad mes įsikabinti nuo užšifruoti eilutę, ir mes ketina šifruoti atspėti. Tai suteiks mums šifruotą atspėti, kurios mes ketiname palyginti su užšifruotos eilutė, vartotojo įrašytas į komandų eilutę. Jei jie yra tas pats, tokiu atveju eilutė palyginama sugrįš nulis, jei jie patys, tada manau, buvo slaptažodis, sukurtas šifruojamas seka, tokiu atveju mes galime atspausdinti kad mūsų slaptažodžiu ir atgal. Bet jei jie buvo ne tas pats, kad reiškia, kad mūsų spėjimas buvo neteisingas. Ir mes norime pakartoti, kad Kitas galioja spėjimas. Taigi tai, kas tai, o kilpa bando daryti. Ji ketina pakartoti mūsų spėjimą į kitą galiojantį atspėti. Atkreipkite dėmesį, kad kai sakome, kad ypač veikėjas mūsų atspėti turi pasiekė maksimalų simbolį, kuris čia yra maišos apibrėžiamas kaip tildė, nes tai didžiausia ASCII reikšmė pobūdis kad vartotojas gali įvesti ne klaviatūra, kai personažas pasiekia maks simbolis, tada mes norime siųsti jį atgal iki minimalaus simbolis, kuris yra erdvė, vėl mažiausias ASCII vertė simbolis, vartotojas gali įvesti į klaviatūrą. Taigi, mes ketiname nustatyti, kad minimalaus simboliu. Ir tada mes ketiname eiti prie kito simbolio. Taigi, kaip yra mūsų spėlionės ketina pakartoti? Na, jei galiojantys ženklai yra a, b, ir C, tada, jei mes pradėjome, jis bus pakartoti, kad b, jis bus pakartoti C. C yra mūsų maks simbolis, todėl mes nustatyti c atgal, minimalus simbolis. Ir tada mes pakartoti puslapis prie kito simbolio. Taigi, jei originalus spėjimas buvo c, kitas simbolis bus niekinis terminatorius. Žemyn čia pastebėti, kad jei personažas kad dabar mes norime prieaugis buvo niekinis terminatorius, tada mes ketiname nustatyti, kad jis Minimalus simbolis. Taigi, jei spėjimas buvo c, tada mūsų Naujas spėjimas bus aa. Ir jei mūsų originalus Spėjote cccc, tada mūsų naujas spėjimas bus aaaaa. Taigi, kai mes pasiekti maksimalų eilutę tam tikro ilgio, tada mes ketina įgyvendinti iki minimalaus eilutę Kito ilgio, kuris bus tiesiog visi personažai Minimalus simbolis. Dabar, kas yra šis žymės čia darai? Na, jei puslapis persikėlė iš aštuntas simbolį į devynių pobūdžio - todėl mes pridėti aštuonių C "kaip mūsų ankstesnių atspėti - tada indeksas ketina sutelkti dėmesį į paskutinis null terminatorius mūsų spėjimą masyvas, kuris nėra skirtas, kad iš tikrųjų būti naudojamas mūsų slaptažodžiu. Taigi, jei mes sutelktas į pastarojo null terminatorius, tada mes neradau slaptažodis tai galioja naudojant tik aštuonių simbolių, o tai reiškia nėra galiojantį slaptažodį, kad užšifruoja į nurodytą eilutę. Ir mes turime spausdinti, kad sakydami mes negalėjome rasti teisingą slaptažodį ir grįžti. Taigi tai while cikle ketina pakartoti per visas įmanomas eilutes. Jei randa, kad užšifruoja į Tikimasi, saugiame eilutę, jis bus grįžti tą slaptažodį. Ir tai jis neranda nieko, tada jis grįš, spausdinimo, kad negalėjo rasti nieko. Dabar, pastebėsite, kad Iteracja virš visų galimi stygos tikriausiai bus užtrukti. Leiskite pamatyti, kaip iš tikrųjų ilgai, kad užtrunka. Kurkime įtrūkimai. Na, oops - ji sako, neapibrėžta nuoroda į kriptoje. Taigi atminkite, už p nustato spec ir Taip pat vyras puslapis kriptoje, kad mes reikia susieti į kriptoje. Dabar nutylėjimą padaryti komandą nežino, kad jūs norite naudoti šią funkciją. Taigi galime nukopijuoti šį klientą komandą ir tiesiog pridėti prie pabaigos jo, susiejimas kripta. Dabar ji kaupia. Taigi tegul paleisti crack ant suteikta užšifruotos eilutė - taip Cezario. Taigi, tai buvo gana greitai. Atkreipkite dėmesį, kad tai baigėsi 13. Na, Cezario užšifruotos slaptažodį būna, kad 13. Taigi pabandykime kitą slaptažodį. Paimkime Hirschhorn yra užkoduota slaptažodis ir pabandyti krekingo tai. Taigi pastebėsite mes jau pasiekė trys simboliai. Ir mes iteravimu per visas įmanomas trijų ženklų eilutės. Tai reiškia, kad mes jau baigti iteravimu per visą įmanomą vieną ir dviejų rašmenų eilutėse. Dabar, atrodo, kad tai vyksta užtrukti, kol mes pasiekti keturių ženklų eilutės. Tai gali užtrukti keletą minučių. Ji neatsižvelgė keletą minučių. Mes ant keturių simbolių eilutes. Bet dabar, mes turime pakartoti per visus galimi keturių rašmenų eilutėse, kurios kad galėtų imtis, gal 10 minučių. Ir tada, kai mes pasiekti penkis charakterį stygos, turime pakartoti per visus iš tų, kurie gali užtrukti porą valandų. Ir mes turime kartoti per visas įmanomas šešių simbolių sekas, kurios gali užtrukti keletą dienų ir pan. Taigi ji galėtų imtis potencialiai labai ilgas laikas kartoti per visas įmanomas aštuonių ženklų ir mažiau stygos. Taigi, pastebėsite, kad tai nebūtinai labai efektyvus algoritmas rasti slaptažodis. Jūs manote, kad yra yra geresnių būdų. Pavyzdžiui, slaptažodis ZYX! 32AB tikriausiai nėra labai dažnas slaptažodis o slaptažodis 12345 yra tikriausiai daug labiau paplitęs. Taigi vienas iš būdų bando rasti slaptažodį greičiau yra tiesiog ieškoti ne slaptažodžiai, kurie yra labiau paplitęs. Taigi, pavyzdžiui, mes galime pabandyti skaityti žodžius iš žodyno ir pabandyti visus tie kaip mūsų slaptažodžių spėlionės žodžiai. Dabar, gal slaptažodis nėra taip paprasta. Gal vartotojo buvo šiek tiek protingas ir bandyti papildymo numerį žodžio pabaiga. Taigi, galbūt jų buvo slaptažodis hasło1. Taigi galite pabandyti iteravimu per visas žodžius į su vienu žodyną pridedamas prie jo pabaigos. Ir tada gal atlikę, kad jums pridėti du prie pabaigos. O gal vartotojas bando būti net daugiau protingas, ir jie nori, kad jų slaptažodis turi būti "hakeris", tačiau jie ketina pakeisti visus E-ųjų atvejus su trise. Taigi jums gali tai padaryti taip pat. Pakartoti per visus žodžius žodyne bet pakeisti simbolius, atrodo numerius su tų skaičių. Taigi šiuo būdu, galite sugauti net daugiau slaptažodžius, kurie yra gana dažni. Bet, galų gale, vienintelis būdas galite fiksuoti visus slaptažodžius yra brute priversti pakartoti per visus galimi eilutės. Taigi, galų gale, jums reikia pakartoti per visas eilutes iš vieno simbolio, aštuonių simbolių, kurie gali imtis labai ilgą laiką, bet jūs turite tai padaryti. Mano vardas yra Rob Bowden. Ir tai yra įtrūkimai.