РОБ БОВДЕН: Ја сам Роб, и Кренимо. Дакле, запамтите из псет спецификације које ћемо бити потребе да користите крипта функција. За човека страни, имамо два хасх дефинисати _копенсоурце. Не брините о томе зашто морамо да урадимо. И хасх укључују унистд.х. Дакле, кад је то ван начин, хајде да пређемо на програм. Прва ствар коју треба да урадите је да проверите корисник унео важећи кодиран лозинку у командној линији. Имајте на уму да програм треба да се покрене као дот сласх црацк, и онда кодиран стринг. Дакле, овде смо проверу да се уверите да аргц на два, ако желимо да наставите са програмом. Ако аргц не два, то значи или корисник није унио шифровани лозинку у командној линији, или они ушао више него само кодиран лозинку у командној линији, у којој ми онда не знам шта да радим са аргументи командне линије. Дакле, ако је било два аргц, можемо да наставимо. И ево, ми ћемо да се изјасне променљива кодиран. То само иде у алиас оригиналних аргв1 тако да кроз овај програма, ми не треба да зову аргв1, што онда морате да мислите шта то заправо значи. Коначно, желимо да потврдимо да шифрована лозинка корисник ушао је могао заправо бити шифровану лозинку. По ман странице, у крипти шифрована лозинка мора да буде 13 знакова. Овде, примећујемо да хасх дефинисано шифровање дужину као 13.. Дакле, само смо се уверите да Дужина низа од шифрована лозинка је 13. А ако није, ми желимо да изађете из програма. Дакле, кад је то ван начин, можемо Сада заправо покушати да пронађе оно што лозинка коју је шифрована лозинка је. Овде желимо да зграбите соли из шифрованог лозинку. Запамтите, за ман странице, да Прва два карактера шифровани ниска, као овде - 50ЗПЈ и тако даље - прва два знака дају нам соли који је коришћен у крипти функцији. И овде, видимо да је со била хектара. Дакле, желимо да копирате прва два карактера, соли дужине као хасх дефинише као два. Морамо да копирате прва два карактера у овом низу, соли. Обратите пажњу да је потребно соли дужину плус један, јер ми и даље треба нулл терминатор на крају нашег соли. Онда ћемо да прогласи овај низ, гост, дужине величине мак плус један, где је максимална дужина је дефинисана хасх као и осам, јер максимална лозинку је осам знакова. И ми ћемо користити ово да бисте прелазили по свим могућим жице која би могла важеће лозинке. Дакле, ако су важећи знакови у лозинку били су само, Б, и Ц, затим бисмо прелазили преко, б, ц, А, БА, ЦА, и тако даље, све до ћемо видети цццццццц - Ц је осам. А ако немамо важећи доле лозинку, онда морамо да кажемо да је кодирани стринг није био важи за почетак. Дакле, сада, док смо до тог 1 петља. Обратите пажњу на то значи да је бесконачна петља. Обавештење нема паузе изјава унутар ове бесконачне петље. Постоје само вратити изјаве. Тако да можемо очекивати никад за излазак из петље. Ми само очекујемо да изадјете из програма. Додао сам ову изјаву за штампу врх ове петље само одштампате шта је наш тренутни погодак на шта је лозинка. Сада, шта је ово петља ради? То је све могуће преко петље низове да важеће лозинке. Прво што ћемо да урадимо је да узети наш тренутни погодите за шта лозинка је. Узећемо соли које смо зграбио из кодирани стринг, и ми смо ће за шифровање претпоставку. То ће нам дати шифровану погодите, што ћемо упоредити против кодиран стринг који је корисник ушао у командној линији. Ако су исти, у ком случају стринг упоредити ће се вратити нула, ако они су исти, онда је ваљда лозинка коју генерише шифрован стринг, у том случају можемо да штампамо да као наш лозинком и повратак. Али, ако они нису били исти, да значи да је наша претпоставка је била погрешна. И ми желимо да се итерацију Следећи важи претпоставка. Дакле, то је оно што овај док петља покушава да уради. То ће итерацију нашу претпоставку на следећи важећем гуесс. Обратите пажњу да када кажемо да Посебно лик у нашој нагађања има достигла максималну симбол, који се овде хасх се дефинише као тилдом, јер То је највећи АСЦИИ вредност карактера да корисник може да уђе у тастатура, када лик достигне Мак симбол, онда желите да пошаљете назад у минималном симбола, који је простор, поново најнижи АСЦИИ вредност симбол да корисник може да унесите на тастатури. Дакле, ми ћемо да подесите да на минималну симбол. А онда ћемо да идемо на следећи карактер. Дакле, како су наши нагађања ће да вршите итерацију? Па, ако су важећи знакови су а, б, и Ц, па ако смо почели са, то ће прелазили на Б, она ће итерате у ц. Ц је наша највећа симбол, па ћемо поставити Ц назад на, минимална симбол. А онда ћемо итерацију индекса на следећи знак. Дакле, ако је оригинални претпоставка Ц, следећи карактер ће бити нула терминатор. Овде доле, ако приметите да карактер да ми сада желимо да прираст је нулл терминатор, онда ћемо га поставити на Минимум симбол. Дакле, ако је претпоставка Ц, онда наши Нова претпоставка ће бити АА. И ако је наша претпоставка је била оригинална ЦЦЦЦ, затим наш нови погодак ће бити ааааа. Дакле, кад год стигнемо на максималну стринг датог дужине, онда смо ће се спровести на минималну стринг наредне дужине, који ће Само се сви карактери минимална симбол. Сада, шта је ово провера ради овде? Па, ако је индекс прешао је из осмог карактер на девет карактера - па додамо осам Ц-их као Наш претходни Ваљда - онда индекс ће се фокусирати на Последња нула терминатор нашег нагађања низ, који није предвиђен да стварно да се користи у нашем лозинку. Дакле, ако смо фокусирани на том последњем нулл терминатор, онда нисмо нашли лозинка која је важећа користи само осам карактера, што значи да не постоји важећа лозинка који шифрује у датом низу. И морамо да одштампате, рекавши нисмо могли наћи важећи лозинку, и повратак. Дакле, ова петља док ће итерацију по свим могућим жице. Уколико се утврди да је било који шифрује да Очекује кодиран ниска, она ће врати ту лозинку. И то не пронађе ништа, а затим она ће се вратити, да је штампа није био у стању да пронађе било шта. Дакле, обратите пажњу да итератинг над свим могући жице је вероватно ће потрајати. Хајде да видимо како ствари дуго да траје. Хајде да правимо пукотину. Па, упс - каже недефинисан референце у гробницу. Запамтите, за П поставља спец и Такође човек страница за крипти које потребно је да повежете у крипту. Сада, подразумевано извршити команду не зна да ли желите да користите ову функцију. Па хајде да копирате овај клијентом командне и само додати на крају тога, повезивање крипта. Сада, она саставља. Па хајде да покренете пукотину на дато кодиран стринг - тако Цезаровог. Дакле, то је било брзо. Обратите пажњу да је овај завршио на 13.. Па, Цезаров шифрована лозинка се дешава да се 13. Па хајде да пробамо другу лозинку. Узмимо Хирсцххорн је шифрована лозинку и покушајте да пуца. Дакле, приметите да смо већ стигли три карактера. И ми итератинг по свим могућим три карактера жице. То значи да смо већ завршили итератинг по свим могућим и један два карактера жице. Сада, изгледа да ће ово потрајати пре него што стигнемо четири карактера жице. То би могло да потраје неколико минута. Није требало неколико минута. Ми смо на четири карактера жице. Али сада, морамо да бисте прелазили преко свега могуће четири карактера ниске, што да би можда око 10 минута. И онда кад стигнемо пет карактер жице, морамо да бисте прелазили преко свега од оних, који би могао узети пар сати. И ми треба да вршите итерацију кроз све могуће Шест знакова жице, која може да траје неколико дана и тако даље. Дакле, то може да потраје веома дуго потенцијално Време је да вршите итерацију кроз све могуће осам карактера и мање жице. Дакле, приметите да то није нужно веома ефикасан алгоритам за проналажење лозинку. Можда мислите да је бољи начини. На пример, лозинка зик 32аб! вероватно није веома честа лозинку, а лозинка је 12345 Вероватно много више заједничког. Дакле, један начин да покушава да пронађе лозинку брже је да погледа у лозинкама које су чешћи. Тако, на пример, можемо покушати да чита речи из речника и покушати све те речи, као наши лозинке нагађања. Сада, можда лозинку није тако једноставно. Можда је корисник био нешто паметно и покушајте додавање броја за крају речи. Можда им је лозинка пассворд1. Дакле, можете да покушате итератинг преко свих речи у речнику са једним додат на крај њега. А онда можда После тога, ви ћете додајте две до њеног краја. Или можда корисник покушава да буде чак и паметнији, а они желе да њихови лозинку да буде "хакер", али су ће заменити све инстанце е'С са тројкама. Да би могао да уради исто. Прелазили преко свих речи у речнику али замени карактера који изгледају као бројеве са тих бројева. Дакле овај начин, можете ухватити још више лозинке које су прилично уобичајено. Али на крају, једини начин да освоји све лозинке је звер силу прелазили преко свега могуће жице. Дакле, на крају, ви морате да вршите итерацију преко свих жица од једног знака осам знакова, што може да потраје дуго времена, али је потребно да то урадите. Моје име је Роб Боуден. А ово је црацк.