>> ROB BOWDEN: Jien Rob, u ejja nikseb qsim.
Mela ftakar mill-spec pset li aħna qed tmur biex tkun jeħtieġu li tuża l-
funzjoni kripta.
Għall-paġna bniedem, għandna żewġ hash jiddefinixxu _xopensource.
Ma joqogħdu jinkwetaw dwar għaliex għandna bżonn li tagħmel dan.
U wkoll hash jinkludu unistd.h.
>> Allura ladarba dan huwa barra mill-mod, ejja jiksbu l-programm attwali.
L-ewwel ħaġa li għandna bżonn tagħmel huwa li tiżgura l-utent daħal encrypted valida
password fil-linja tal-kmand.
Ftakar li l-programm huwa suppost li jitmexxew bħal dot mmejla xquq, u
allura string encrypted.
>> Allura hawnhekk aħna qed verifika biex jiġi żgurat li argc għal żewġ jekk irridu
tkompli bil-programm.
Jekk argc mhux tnejn, li tfisser jew l-utent ma daħħalx kriptat
password fil-linja tal-kmand, jew daħal aktar minn sempliċiment il encrypted
password fil-linja tal-kmand, li fiha każ aħna ma jafu x'għandhom jagħmlu ma 'l-
linja argumenti kmand.
>> Mela jekk argc kien tnejn, nistgħu tkompli.
U hawn, aħna qed tmur biex tiddikjara varjabbli encrypted.
Li jinsab biss ser alias l-oriġinali argv1 sabiex matul dan
programm, aħna ma jkollhomx li hija sejħa argv1, li mbagħad trid taħseb
dwar dak li attwalment fisser.
>> Allura finalment, irridu biex jivvalidaw li il-password encrypted l-utent
jiddaħħlu jistgħu jkunu ġew attwalment password encrypted.
Per il-paġna bniedem ta 'kripta, l- password encrypted għandu jkun ta '13
karattri twil.
Up hawn, avviż li aħna hash definit kriptaġġ tul bħala 13.
Allura aħna qed biss tagħmel ċert li l- tul sensiela ta 'l encrypted
password huwa 13.
>> U jekk mhuwiex, irridu għall-ħruġ tal-programm.
Allura ladarba dan huwa barra mill-mod, nistgħu issa fil-fatt tipprova ssib dak li l-
password li taw l encrypted password kien.
Hawnhekk, irridu li grab l-melħ mill-password encrypted.
Ftakar, kull l-paġna bniedem, li l- ewwel żewġ karattri tal kriptat
spag, bħal hawn -
50ZPJ u l-bqija -
l-ewwel żewġ karattri jagħtu us il-melħ li ntuża
fil-funzjoni kripta.
>> U hawn, naraw li l-melħ kien ha.
Allura aħna tixtieq li kopja l-ewwel tnejn karattri, tul melħ jkunu hash
definita bħala tnejn.
Irridu kopja l-ewwel żewġ karattri fis dan array, melħ.
Avviż li għandna bżonn tul melħ plus waħda, peress li aħna għad għandhom bżonn null
terminatur fl-aħħar ta 'melħ tagħna.
>> Imbagħad aħna qed tmur biex jiddikjara dan array, guest, tat-tul max daqs plus
wieħed, fejn it-tul max huwa hash definit bħala tmienja, peress li l-password massimu
huwa tmien karattri fit-tul.
U aħna qed tmur biex tuża din jtenni fuq kordi kollha possibbli li jistgħu
jkun passwords validi.
Allura jekk il-karattri validi fi password kienu biss, b, u ċ, allura
aħna se jtenni fuq, b, c, aa, ba, ca, u l-bqija, sakemm
irridu jiksbu biex tara cccccccc -
tmienja c'S.
>> U jekk aħna ma jistabbilixxi validu password, allura għandna bżonn li ngħidu li l-
string encrypted ma kienx validu li tibda bil.
Allura issa, aħna jilħqu dan filwaqt li 1 loop.
Avviż li jfisser li huwa loop infinita.
>> Avviż hemm ebda stqarrija break ġewwa ta 'dan loop infinita.
Hemm biss ritorn dikjarazzjonijiet.
Allura aħna qatt attwalment jistennew għall-ħruġ tal loop.
Aħna biss nistennew għall-ħruġ tal-programm.
Stajt miżjud din l-istqarrija għall-istampar Barra minn dan loop għal ftit jistampa
dak raden attwali tagħna fil dak li l-password huwa.
>> Issa, dak li huwa dan loop tagħmel?
Huwa looping fuq kordi kollha possibbli li jista 'jkun passwords validi.
L-ewwel ħaġa aħna qed tmur biex tagħmel hu tieħu raden attwali tagħna għal dak il-
password.
Aħna ser nieħdu l-melħ li aħna grabbed minn -sekwenza encrypted, u aħna
jmorru għall-kriptaġġ l-raden.
Dan se tagħtina raden encrypted, li aħna qed tmur biex iqabblu kontra
-sekwenza encrypted li l-utent daħal fil-linja tal-kmand.
>> Jekk huma l-istess, f'liema każ string komparabbli se terġa 'lura zero, jekk
dawn qed l-istess, allura raden kien il- password li ġġenerat l encrypted
spag, f'liema każ nistgħu jistampaw li bħala password tagħna u r-ritorn.
Iżda jekk dawn ma kinux l-istess, li ifisser raden tagħna kienet żbaljata.
>> U rridu li jtenni li l-raden validu li jmiss.
Allura dak hu li dan waqt li loop qed tipprova tagħmel.
Huwa ser jtenni raden tagħna għall-raden validu li jmiss.
Avviż li meta ngħidu li karattru partikolari fil raden tagħna
laħaq is-simbolu max, li up here huwa hash definit bħala tilde, peress
li l-akbar karattru valur ASCII li utent jista 'jidħol fil-
keyboard, meta l-karattru jilħaq il- max simbolu, allura aħna trid tibgħat
lura lill-simbolu minimu, li huwa spazju, għal darb'oħra l-ASCII aktar baxx
simbolu valur li utent jista ' jidħol fil-keyboard.
>> Allura aħna qed tmur biex ikun stabbilit li is-simbolu minimu.
U allura aħna qed tmur biex jmorru fuq il-karattru li jmiss.
Allura kif huma guesses tagħna se jtenni?
Ukoll, jekk il-karattri huma validi a, b, u c, allura jekk aħna beda,
dan ser jtenni li b, dan ser jtenni li ċ.
c hija simbolu max tagħna, hekk aħna ser jistabbilixxu c lura għal, is-simbolu minimu.
U allura aħna ser jtenni indiċi għall-karattru li jmiss.
>> Allura jekk il-raden oriġinali kienet c, li jmiss karattru se tkun l null
terminatur.
Down hawn, avviż li jekk il-karattru li aħna issa jridu
inkrement kien il-terminatur null, allura aħna qed tmur biex tistabbilixxi li l-
simbolu minimu.
Allura jekk il-raden kien c, allura tagħna raden ġdida se tkun aa.
U jekk raden oriġinali tagħna kienet cccc, allura raden ġdida tagħna
se tkun aaaaa.
>> Allura kull meta aħna jilħqu l-string massimu ta 'tul partikolari, allura aħna qed
ser timplimenta l-sekwenza minimu tat-tul li jmiss, li se
biss tkun karattri kollha ta ' is-simbolu minimu.
Issa, dak li huwa dan il-kontroll tagħmel hawn?
Ukoll, jekk indiċi mċaqlaq mill-tmien karattru għall-karattru disa -
hekk aħna żid tmien c bħala preċedenti tagħna raden -
allura indiċi huwa ser tiffoka fuq il- aħħar null terminatur tas raden tagħna
array, li mhix maħsuba li attwalment jintużaw password tagħna.
>> Allura jekk aħna huma ffokati fuq li l-aħħar null terminatur, allura aħna ma sabu
password thats validu bl-użu biss tmienja karattri, li jfisser m'hemm l-ebda
password valida li encrypts għall-sekwenza mogħtija.
U aħna għandna biex jistampaw li, qal aħna ma setgħetx issib valida
password, u r-ritorn.
Allura dan loop filwaqt li se jtenni fuq kordi kollha possibbli.
>> Jekk issib xi li encrypts l- string encrypted mistenni, dan ser
ritorn li password.
U ma jsibu xejn, allura huwa ser jerġa, l-istampar li
ma kienx kapaċi li jsibu xejn.
Issa, avviż li iterazzjoni fuq kollha kordi possibbli hija probabbilment se
jieħu waqt.
Ejja naraw kif fil-fatt twil li jieħu.
>> Ejja jagħmlu xquq.
Well, oops - jgħid undefined referenza għal kripta.
Mela ftakar, għall-p settijiet spec u wkoll il-paġna bniedem għal kripta li aħna
bżonn ir-rabta kripta.
Issa, l-inadempjenza tagħmel kmand ma taf li inti
tixtieq li tuża dik il-funzjoni.
>> Mela ejja Kopja ta 'din il-kmand klijent u żid ftit fuq l-aħħar
ta 'dan, jgħaqqdu crypt.
Issa, hija tiġbor.
Mela ejja jimxu xquq fuq mogħti string encrypted -
hekk Caesar.
Allura li kien pretty fast.
>> Avviż li din ntemm fit-13.
Ukoll, password encrypted Caesar jiġri li jkun 13.
Mela ejja jippruvaw password ieħor.
Ejja tieħu encrypted Hirschhorn tal password u jippruvaw qsim dan.
>> Allura avviż konna diġà laħqu tliet karattri.
U aħna qed iterazzjoni fuq kollha possibbli kordi tliet karattru.
Dan ifisser li għandna stajt diġà finitura iterazzjoni fuq waħda kollha possibbli u
żewġ Sekwenzi ta 'karattri.
Issa, jidher qisu dan se tieħu filwaqt li qabel nilħqu l-
kordi erba 'karattru.
Huwa jista 'jieħu ftit minuti.
>> Hija ma tieħu ftit minuti.
Aħna fuq il-kordi ta 'erba' karattru.
Imma issa, għandna bżonn li jtenni fuq kollha kordi erba 'karattru possibbli, li
li jista 'jieħu forsi 10 minuti.
U allura meta aħna jilħqu ħames karattru kordi, għandna bżonn li jtenni fuq kollha
ta 'dawk, li jistgħu jieħu ftit sigħat.
U għandna bżonn li jtenni fuq kollha possibbli sitt karattri kordi, li
jista 'jieħu ftit jiem u l-bqija.
>> Għalhekk tista 'tieħu potenzjalment twil ħafna żmien tirrepeti l fuq kollha possibbli
tmien karattru u inqas kordi.
Allura avviż li dan mhux neċessarjament algoritmu effiċjenti ħafna għall-konstatazzjoni
password.
Għandek mnejn taħseb li hemm modi aħjar.
Per eżempju, il ZYX password! 32ab probabbilment mhix password komuni ħafna,
billi l-password 12345 hija probabbilment ħafna aktar komuni.
>> Allura mod wieħed ta 'tipprova ssib password aktar malajr huwa li tfittex biss
fil passwords li huma aktar komuni.
Hekk per eżempju, nistgħu nippruvaw biex taqra kliem minn dizzjunarju u jippruvaw kollha ta '
dawn il-kliem bħala guesses password tagħna.
Issa, forsi password ma tkunx dik sempliċi.
Forsi l-utent kien kemmxejn għaqlija u jippruvaw jpoġġu numru li
l-aħħar ta 'kelma.
>> Allura forsi password tagħhom kien password1.
Allura inti tista 'tipprova iterazzjoni fuq kliem kollha fid-dizzjunarju ma 'wieħed
mehmuż mat-tmiem ta 'dan.
U allura forsi wara li tagħmel dan, inti ser tehmeż tnejn sa l-aħħar ta 'dan.
>> Jew forsi l-utent qed tipprova tkun saħansitra aktar għaqlija, u huma jridu tagħhom
password li tkun "Hacker," iżda dawn qed ser tissostitwixxi każijiet kollha ta 'e tal
ma threes.
Allura inti tista 'tagħmel dan ukoll.
Jtenni fuq kollha kliem fid-dizzjunarju iżda tissostitwixxi karattri li
look like numri ma 'dawk in-numri.
>> Allura dan il-mod, inti tista 'qabda aktar passwords li huma pjuttost komuni.
Iżda fl-aħħar, l-uniku mod inti tista ' jaqbdu passwords kollha huwa li brute
seħħ jtenni fuq kollha kordi possibbli.
Għalhekk fl-aħħar, għandek bżonn tagħmel biex jtenni fuq kordi kollha minn karattru wieħed għal
tmien karattri, li jistgħu jieħdu żmien twil ħafna, iżda inti għandek bżonn tagħmel dan.
>> Jisimni Rob Bowden.
U dan huwa jixxaqqaq.