>> ROB BOWDEN: Ég er Rob og skulum fá sprunga.
Svo muna frá pset sérstakur að við erum að fara að þurfa að nota
Crypt virka.
Fyrir man síðunnar, höfum við tvær kjötkássa skilgreina _xopensource.
Ekki hafa áhyggjur af því hvers vegna við þurfum að gera það.
Og einnig kjötkássa eru unistd.h.
>> Svo þegar það er út af the vegur, við skulum fá til the raunverulegur program.
Fyrsta sem við þurfum að gera er að ganga úr skugga um notandinn slegið gild dulkóðuð
lykilorð á stjórn lína.
Mundu að forritið er ætlast að keyra eins punktur slash sprunga, og
þá dulkóðað band.
>> Svo hér erum við að stöðva til að tryggja að að argc til tveggja ef við viljum
halda áfram með the program.
Ef argc er ekki tveir, sem þýðir annað hvort notandinn ekki inn dulkóðuð
lykilorð á stjórn lína, eða þeir gert meira en bara að brengla
lykilorð á stjórn lína, sem Ef við vitum ekki hvað ég á að gera við
stjórn lína rifrildi.
>> Svo ef argc var tveggja, getum við haldið áfram.
Og hér erum við að fara að lýsa breytu dulkóðuð.
Það er bara að fara að alias Upprunalega argv1 að svo um þetta
program, höfum við ekki að kalla það argv1, sem þá verður þú að hugsa
um hvað það í raun þýddi.
>> Svo að lokum, við viljum að staðfesta að the brengla lykilorð sem notandinn
inn hefði í raun verið dulkóðuð lykilorð.
Per manninum síðu grafhvelfing, sem dulkóðað lykilorð verður að vera 13
stafir að lengd.
Upp hér, eftir því sem við kjötkássa skilgreind dulkóða lengd og 13.
Þannig að við erum bara að gera úr skugga um að band lengd dulkóðuð
lykilorð er 13..
>> Og ef það er ekki, viljum við til að loka forritinu.
Svo þegar það er út af the vegur, getum við nú í raun að reyna að finna hvað
lykilorð sem gaf dulkóðuð lykilorðið var.
Hér viljum við að grípa salt frá the brengla lykilorð.
Mundu, á man síðunnar, að Fyrstu tveir stafir dulkóðuð
band, eins og hér -
50ZPJ og svo framvegis -
Fyrstu tveir stafir gefa solu salt sem var notaður
í crypt virka.
>> Og hér, sjá að við að saltið var ha.
Þannig að við viljum að afrita fyrstu tvær stafir, salt lengd vera kjötkássa
skilgreint sem tveir.
Við verðum að afrita fyrstu tvo stafi í þessu fylki, salt.
Takið eftir að við þurfum salt lengd auk einn, þar sem við þurfum enn null
Ljúka við lok salts okkar.
>> Þá erum við að fara að lýsa þessu fylki, gestur, af stærð max lengd auk
einn, þar hámarkslengd er kjötkássa skilgreint eins og átta, þar sem hámarks aðgangsorð
er átta stafir að lengd.
Og við erum að fara að nota þetta til iterate yfir öllum mögulegum strengi sem gætu
vera gild lykilorð.
Svo ef gildar stafir í lykilorði voru bara a, b, og c, þá
við myndum iterate yfir a, b, c, AA, BA, ca, og svo framvegis, þar til
fáum við að sjá cccccccc -
átta er c.
>> Og ef við höfum ekki niður gild lykilorð, þá þurfum við að segja að
brengla strengur var ekki gildir til að byrja með.
Svo nú, ná við þetta en 1 lykkja.
Takið það þýðir að það er óendanlega lykkju.
>> Eftir því að það eru engin brot yfirlýsingu inni af þessum óendanlega lykkju.
Það eru aftur aðeins yfirlýsingar.
Þannig að við aldrei raunverulega von til að loka lykkja.
Við reiknum bara til að loka forritinu.
Ég hef bætt við þessa prenta yfirlýsingu um Efst á þessa lykkju til að bara prenta út
hvað okkar núverandi giska á hvað lykilorðið er.
>> Nú, hvað er þetta lykkja gera?
Það er lykkja á öllum mögulegum strengi sem gæti verið gildar lykilorð.
The fyrstur hlutur sem við erum að fara að gera er að taka núverandi giska okkar fyrir það sem
lykilorð er.
Við munum taka salt sem við grípa frá The brengla band, og við erum
fara að dulkóða giska.
Þetta mun gefa okkur dulkóðuð giska, sem við erum að fara að bera saman gegn
sem dulkóðuðu band sem notandinn færð á stjórn lína.
>> Ef þeir eru hinir sömu og í því tilviki band sambærileg mun skila núll, ef
þeir sömu, giska þá var lykilorð sem mynda the brengla
band, en í því tilviki að við getum prentað sem eins og lykilorð okkar og aftur.
En ef þeir voru ekki á sama, að þýðir víst okkar var rangt.
>> Og við viljum að iterate til næsta gild giska.
Svo það er það sem þetta á meðan lykkja er að reyna að gera.
Það er að fara að iterate giska okkar á næsta gild giska.
Takið eftir að þegar við segjum að sérstakur karakter í giska okkar hefur
náð hámarks tákn, sem upp hér er Hash skilgreint sem tilde, þar sem
sem er stærsta ASCII gildi eðli að notandi getur slegið inn á
lyklaborð, þegar eðli nær Max tákn, þá viljum við senda
það aftur til lágmarks tákn, sem er pláss, aftur lægsta ASCII
gildi tákn sem notandi getur inn á lyklaborðinu.
>> Þannig að við erum að fara að setja það að lágmarki tákn.
Og svo við erum að fara að fara í næstu karakter.
Svo hvernig er getspár okkar fara að iterate?
Jæja, ef gild stafir eru a, b, og c, þá ef við byrja með a,
það mun kunnugt til B, verður það iterate til c.
c er hámark tákn okkar, þannig að við munum setja C aftur til, lágmarks tákn.
Og þá munum við iterate vísitölu að næsta staf.
>> Þannig að ef upprunalega giska var c, næst eðli er að fara til vera the null
Ljúka.
Niður hér, eftir því hvort eðli að við viljum nú að
vöxtur var null Terminator, þá erum við að fara að setja það til
lágmarks tákn.
Þannig að ef giska var c, þá okkar Ný giska er að fara að vera AA.
Og ef upprunalega giska okkar var cccc, þá ný giska okkar
er að fara að vera aaaaa.
>> Svo þegar við náum hámarks band af tilteknu lengd, þá erum við
að fara að innleiða að lágmarki band í næsta lengd, sem mun
bara vera allir stafir á lágmarks tákn.
Nú, hvað er þetta athuga að gera hér?
Jæja, ef vísitalan flutt frá áttunda stafnum níu eðli -
svo við bætum átta s C sem fyrri okkar giska -
þá vísitölu er að fara að einblína á síðasta null Terminator af giska okkar
array, sem er ekki ætlað að raunverulega er hægt að nota í lykilorðinu okkar.
>> Þannig að ef við erum lögð áhersla á að síðustu null Terminator, þá höfum við ekki fundið
lykilorð sem er í gildi með því að nota bara átta stafir, sem þýðir að það er engin
gild lykilorð sem dulkóðar í uppgefið band.
Og við þurfum að prenta það, segja við gátum ekki fundið gild
lykilorð og aftur.
Þannig að þetta á meðan lykkja er að fara að iterate yfir öllum mögulegum strengi.
>> Ef það finnur einhverjar sem dulkóðar til ráð dulkóðuð band, mun það
aftur þessi lykilorð.
Og það er það ekki að finna neitt, þá það mun koma aftur, prentun það
var ekki hægt að finna neitt.
Nú, eftir að iterating yfir allt mögulegar strengir er líklega að fara að
taka nokkurn tíma.
Við skulum sjá í raun hvernig lengi tekur það.
>> Skulum gera sprunga.
Jæja, oops - það segir undefined tilvísun í Crypt.
Svo man, fyrir p setur sérstakur og einnig maðurinn síðu fyrir Crypt sem við
þarf að tengja í Crypt.
Nú gera sjálfgefið stjórn veit ekki að þú
vilt nota þessi aðgerð.
>> Þannig að við skulum afrita Þessi viðskiptavinur skipun og bara bæta við á til enda
af því, sem tengir Crypt.
Nú safnar það.
Svo skulum keyra sprunga á tilteknu dulkóðuð band -
svo Keisarans.
Svo það var ansi hratt.
>> Takið eftir að þetta endaði á 13..
Jæja, keisarans dulkóðuð lykilorð verður að vera 13.
Svo skulum reyna annað lykilorð.
Skulum taka dulkóðuð Hirschhorn er lykilorð og reyna sprunga það.
>> Svo taka við höfum þegar náð þrír stafir.
Og við erum iterating yfir allt mögulegt þriggja eðli strengir.
Það þýðir að við höfum klára þegar iterating yfir alla mögulega einn og
tvö eðli strengir.
Nú lítur það eins og þetta er að fara að taka nokkurn tíma áður en við ná
fjögurra eðli strengir.
Það gæti tekið nokkrar mínútur.
>> Það ekki taka a par af mínúta.
Við erum á fjögurra eðli strengi.
En nú þurfum við að iterate yfir alla mögulegt fjögurra karakter strengir, sem
sem gæti tekið kannski 10 mínútur.
Og svo þegar við náum fimm staf strengir, þurfum við að iterate yfir alla
af þeim, sem gætu taka nokkrar klukkustundir.
Og við þurfum að iterate yfir allt mögulegt sex-stafa strengi, sem
gæti tekið nokkra daga og svo framvegis.
>> Svo það gæti tekið hugsanlega mjög löng tími til iterate yfir allt mögulegt
átta eðli og færri strengi.
Svo eftir því að þetta er ekki endilega mjög duglegur reiknirit til að finna
lykilorð.
Þú gætir held að það eru betri leiðir.
Til dæmis, lykilorð zyx! 32ab sennilega er ekki mjög algeng lykilorð
en lykilorðið 12345 er sennilega mikið meira sameiginlegt.
>> Svo ein leið til að reyna að finna lykilorð hraðar er að bara horfa
á lykilorð sem eru algengari.
Svo til dæmis, við getum reynt að lesa orð frá orðabók og reyna alla
þessi orð sem gátur lykilorð okkar.
Nú, kannski lykilorð er ekki svo einfalt.
Kannski notandinn var nokkuð snjall og reyna að auka við fjölda til
enda orði.
>> Svo kannski Aðgangsorðið var password1.
Svo þú geta reyna iterating yfir öll orð í orðabókinni með einn
bætt við lok þess.
Og þá kannski eftir að gera það, munt þú auka tveggja til loka þess.
>> Eða kannski notandinn er að reyna að vera jafnvel meira snjall, og þeir vilja þeirra
lykilorð til að vera "tölvusnápur", en þeir eru að fara að skipta út öllum tilvikum af Tölvupóstfang
með threes.
Svo þú gætir gert þetta líka.
Iterate yfir öll orð í orðabókinni en skipta stafi sem
líta út eins og númer með þær tölur.
>> Svo Þannig gætir þú skilið enn meira lykilorð sem eru nokkuð algeng.
En að lokum, eina leiðin sem þú getur handtaka öll lykilorð er að skepna
þvinga iterate yfir allt mögulegar strengir.
Svo í lok, þú þarft að iterate yfir alla strengi frá einum staf til
átta stafir, sem gæti tekið mjög langan tíma, en þú þarft að gera það.
>> Mitt nafn er Rob Bowden.
Og þetta er sprunga.