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