ROB Bowden: Es esmu Rob, un pieņemsim get plaisāšanu. Līdz ar to atcerēties no PSET spec, ka mēs ejam, lai būtu nepieciešams, lai izmantotu kapenes funkciju. Attiecībā uz cilvēka lapā, mums ir divas hash definēt _xopensource. Neuztraucieties par to, kāpēc mums ir nepieciešams, lai to izdarītu. Un arī hash ietver unistd.h. Tātad, kad tas ir no tā, pieņemsim nokļūt faktisko programmu. Pirmā lieta, kas mums jādara, ir pārliecināties, lietotājs ievadījis derīgu šifrēts parole pie komandrindas. Atcerieties, ka programma ir paredzēts palaist, piemēram, dot slīpsvītra kreka, un tad šifrētu virkni. Tāpēc šeit mēs esam pārbaudi, lai pārliecinātos, ka kas argc uz divām, ja mēs vēlamies, lai turpināt ar programmu. Ja argc ir ne divi, kas ir vai nu lietotājs nav ievadiet šifrēts parole pie komandrindas, vai arī tie ievadīti vairāk nekā tikai šifrētu parole pie komandrindas, kurā ja mēs nezinām, ko darīt ar komandrindas argumentus. Tātad, ja argc bija divi, mēs varam turpināt. Un šeit mēs esam gatavojas paziņot mainīgo šifrēta. Tas ir tikai gatavojas alias sākotnējo argv1 tā, ka visā šajā programmu, mums nav, lai izsauktu to argv1, kas tad jums ir jādomā par to, ko tas patiesībā nozīmē. Tātad beidzot, mēs vēlamies, lai apstiprinātu, ka šifrētu paroles lietotājs ieraksta varēja faktiski ir šifrētu paroli. Vienu vīrieti lapā kapenes, kas šifrētu paroli jābūt 13 rakstzīmes garš. Šeit, ievērosiet, ka mēs hash definēta šifrētu garumu no 13. Tāpēc mēs esam tikai pārliecinoties, ka virknes garums šifrētu parole ir 13. Un, ja tā nav, mēs gribam lai izietu no programmas. Tātad, kad tas ir no tā, mēs varam tagad faktiski mēģināt atrast to, ko parole, kas deva šifrētu parole bija. Lūk, mēs vēlamies, lai greifers sāls no šifrētu paroli. Atcerieties, vienu man lapu, ka pirmās divas zīmes šifrēta virknes, piemēram, šeit - 50ZPJ un tā tālāk - pirmās divas zīmes sniedz mums sāls, kas tika izmantots in Kapenes funkciju. Un šeit mēs redzam, ka sāls ir ha. Tāpēc mēs vēlamies, lai kopētu pirmās divas rakstzīmes, sāls garums ir hash definēta kā divi. Mums ir kopēt pirmās divas zīmes šajā masīvs, sāls. Ievērojiet, ka mums ir nepieciešams, sāls garumu plus viens, jo mums joprojām ir nepieciešama null terminators beigās mūsu sāls. Tad mēs ejam, lai paziņot šo masīvu, viesu, no to lieluma maksimālais garums plus viens, kur max garums ir hash definēts kā astoņi, jo maksimālais parole ir astoņas rakstzīmes. Un mēs esam gatavojas izmantot šo atkārtot pār visu iespējamo virknes, kas varētu ir derīgas paroles. Tātad, ja spēkā rakstzīmes paroli bija tikai a, b, un c, pēc tam mēs varētu atkārtot vairāk, b, c, aa, ba, ca, un tā tālāk, līdz brīdim, kad mēs redzēt cccccccc - astoņi C ir. Un, ja mēs ne uz leju derīgs parole, tad mums ir jāsaka, ka šifrētu virkni nebija derīga, lai sāktu ar. Tāpēc tagad, mēs sasniedzam to, kamēr 1 cilpa. Ievērojiet, tas nozīmē, ka tā ir bezgalīga cilpa. Paziņojums nepastāv pārtraukuma paziņojumu iekšpuses šo bezgalīgu cilpu. Ir tikai atgrieztos paziņojumus. Tāpēc mēs nekad faktiski sagaidām lai izietu cilpa. Mēs tikai gaidīt, lai izietu no programmas. Es esmu pievienojis šo drukas paziņojumu top šīs cilpas vienkārši izdrukāt ko mūsu pašreizējā minējums pie kāda parole. Tagad to, kas ir šī cilpa dara? Tas ir looping nekā visas iespējamās virknes kas varētu būt derīgi paroles. Pirmā lieta, ko mēs gatavojamies darīt, ir veikt mūsu pašreizējās minējums par to, ko parole. Mēs ņemšu sāls, ko mēs satvert šifrētu virkni, un mēs esam gatavojas, lai šifrētu minējums. Tas dos mums šifrētu uzminēt, ko mēs ejam, lai salīdzinātu pret šifrētu virkni, ka lietotājs ieraksta pie komandrindas. Ja tie ir tie paši, un tādā gadījumā stīgu salīdzināšanas atgriezīsies nulle, ja viņi paši, tad domāju, bija parole, kas rada šifrētu string, tādā gadījumā mēs varam drukāt ka mūsu paroli un atpakaļ. Bet, ja tie nav vienādi, ka nozīmē, ka mūsu minējums ir nepareizs. Un mēs vēlamies atkārtot, lai nākamais spēkā minējums. Tātad tas, ko šajā laikā cilpa mēģina darīt. Tas būs atkārtot mūsu minējums uz nākamo spēkā minējums. Ievērojiet, ka tad, kad mēs sakām, ka īpaši raksturs mūsu minējums ir sasniedzis max simbolu, kas izveidota šeit ir Hash definēta kā Tilde, jo tas ir lielākais ASCII vērtību rakstzīmju ka lietotājs var ievadīt pie tastatūra, kad raksturs sasniedz max simbols, tad mēs vēlamies, lai nosūtītu tas atpakaļ uz minimālo simbolu, kas ir telpa, atkal zemākais ASCII vērtību simbols, lietotājs var ievadīt pie tastatūras. Tātad, mēs esam gatavojas noteikt, ka līdz minimālajai simbolu. Un tad mēs ejam, lai dotos uz nākamo raksturu. Tātad, cik ir mūsu guesses gatavojas atkārtot? Nu, ja derīgie simboli ir a, b, un c, pēc tam, ja mēs sākās ar, tas būs atkārtot, lai b, tas būs atkārtot līdz c. c ir mūsu max simbols, tāpēc mēs noteikti c atpakaļ uz, minimālu simbolu. Un tad mēs atkārtot indeksu pie nākamās rakstzīmes. Tātad, ja sākotnējais minējums bija c, nākamais raksturs būs null terminators. Šeit lejā, ievērosiet, ka, ja raksturs ka mēs tagad gribam pieaugums bija null terminatora, tad mēs ejam, lai uzstādītu to uz Minimālais simbolu. Tātad, ja minējums ir c, tad mūsu Jaunā minējums būs aa. Un, ja mūsu sākotnējais minējums bija CCCC, tad mūsu jaunā minējums būs AAAAA. Tātad, ja mēs sasniedzam maksimālo virkni no konkrētā garuma, tad mēs esam gatavojas īstenot līdz minimumam virkni no nākamā garumu, kas vienkārši visi varoņi minimālais simbolu. Tagad to, kas ir šajā pārbaudē dara šeit? Nu, ja indekss pārcelts no astotās raksturs deviņu raksturs - tāpēc mēs pievienojam astoņas C-kā mūsu iepriekšējā guess - tad indekss ir gatavojas koncentrēties uz pēdējā null terminators no mūsu minējums masīvs, kas nav domāts, lai reāli izmantot mūsu paroli. Tātad, ja mēs esam orientēti uz šo pēdējo null terminatora, tad mēs esam nav atrasts Parole, kas ir derīgs, izmantojot tikai astoņas rakstzīmes, kas nozīmē, ka nav derīgu paroli, kas šifrē uz doto virkni. Un mums ir drukāt, sakot, mēs nevarējām atrast derīgs parole, un atgriešanās. Tātad tas, kamēr cilpa gatavojas atkārtot pār visu iespējamo stīgas. Ja tā konstatē kādu, kas šifrē uz Paredzams šifrētu virkni, tas būs atgriezties, ka parole. Un tā tas nav atrast kaut ko, tad tā atgriezīsies, drukāšanas, ka tā nevarēja atrast neko. Tagad, ievērosiet, ka atkārtojot pār visiem iespējamie stīgas, iespējams, gatavojas aizņemt laiku. Let 's faktiski redzēt, kā ilgi, kas notiek. Veidosim kreka. Nu, hmm - tā saka undefined atsauce uz kapenēm. Līdz ar to atcerēties, lai p komplekti spec un arī cilvēks lapa kapenes, ka mēs jāsaista ar kapenes. Tagad, noklusējuma padarīt komandu nezina, ka tu vēlaties izmantot šo funkciju. Tātad, pieņemsim kopēt šo klientu komandu un vienkārši pievienot uz līdz beigām no tā, kas savieno kapenes. Tagad, tas apkopo. Tātad, pieņemsim palaist kreka uz dota šifrētu virkni - tāpēc Ķeizara. Tā, ka bija diezgan ātri. Ievērojiet, ka tas beidzās 13. Nu, Cēzara šifrētu paroli notiek, ir 13. Tāpēc pamēģināsim citu paroli. Paņemsim Hirschhorn ir šifrēta paroli un mēģiniet plaisāšanu to. Tāpēc paziņojums, mēs esam jau sasnieguši trīs rakstzīmes. Un mēs esam atkārtojot pār visiem ir iespējams trīs rakstzīmju virknes. Tas nozīmē, ka mēs esam jau pabeigtu atkārtojot pār visu iespējamo vienu un Divi rakstzīmju virknes. Tagad, izskatās, ka tas būs aizņemt kādu laiku, pirms mēs sasniedzam četru rakstzīmju virknes. Tas var aizņemt pāris minūtes. Tā neņēma pāris minūtes. Mēs esam par četru rakstzīmju virknes. Bet tagad, mums ir nepieciešams atkārtot pār visiem iespējams četru rakstzīmju virknes, kas lai varētu veikt varbūt 10 minūtes. Un tad, kad mēs sasniegtu piecas raksturu stīgas, mums ir nepieciešams atkārtot pār visiem no tiem, kas varētu veikt pāris stundas. Un mums ir nepieciešams, lai atkārtot pār visiem ir iespējams Sešu simbolu virknes, kas var aizņemt pāris dienas, un tā tālāk. Tātad tas varētu būt potenciāli ļoti garš laiks atkārtot pār visiem ir iespējams astoņu rakstzīmju un mazāk stīgas. Tātad paziņojums, ka tas ne vienmēr ļoti efektīvs algoritms, lai atrastu parole. Jūs varētu domāt, ka Ir labāki veidi. Piemēram, parole ZYX! 32AB iespējams, ir ne ļoti bieži parole, tā kā parole 12345 ir iespējams, daudz biežāk. Tāpēc viens veids, kā mēģināt atrast paroli ātrāk ir vienkārši meklēt pie paroles, kas ir vairāk izplatīta. Tā, piemēram, mēs varam mēģināt izlasīt vārdus no vārdnīcas un izmēģināt visu šie vārdi kā mūsu paroli guesses. Tagad, varbūt parole nav tik vienkārši. Varbūt lietotājs ir diezgan gudrs un mēģiniet pievienojot numuru, lai vārda beigās. Tātad, varbūt viņu parole bija password1. Tātad jūs varat izmēģināt atkārtojot nekā visus vārdus , vārdnīcā ar vienu a pievienots beigās no tā. Un tad varbūt pēc tam darīt, ka jūs pievienot divas līdz beigās no tā. Vai varbūt lietotājs mēģina vēl vairāk gudrs, un viņi vēlas, lai viņu parole ir "hakeris", bet viņi gatavojas aizstāt visus gadījumus E s ar trim. Lai jūs varētu darīt pārāk. Atkārtot pār visiem vārdiem, kas vārdnīcā bet aizvietot rakstzīmes, ka izskatās numurus ar šiem numuriem. Tātad šādā veidā, jūs varētu nozvejas vēl vairāk paroles, kas ir diezgan bieži. Bet beigās, vienīgais veids, kā jūs varat uzņemt visas paroles ir necilvēks piespiest atkārtot pār visiem iespējams stīgas. Tātad galu galā, jums ir nepieciešams atkārtot pār visām stīgām no viena rakstzīmi astoņas zīmes, kas varētu veikt ļoti ilgu laiku, bet jums ir nepieciešams, lai to izdarītu. Mans vārds ir Rob Bowden. Un tas ir Crack.