>> 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.