1 00:00:00,000 --> 00:00:13,000 2 00:00:13,000 --> 00:00:15,890 >> РОБ БОВДЕН: Ја сам Роб, и Кренимо. 3 00:00:15,890 --> 00:00:19,390 Дакле, запамтите из псет спецификације које ћемо бити потребе да користите 4 00:00:19,390 --> 00:00:20,890 крипта функција. 5 00:00:20,890 --> 00:00:26,330 За човека страни, имамо два хасх дефинисати _копенсоурце. 6 00:00:26,330 --> 00:00:28,290 Не брините о томе зашто морамо да урадимо. 7 00:00:28,290 --> 00:00:31,550 И хасх укључују унистд.х. 8 00:00:31,550 --> 00:00:35,920 >> Дакле, кад је то ван начин, хајде да пређемо на програм. 9 00:00:35,920 --> 00:00:39,570 Прва ствар коју треба да урадите је да проверите корисник унео важећи кодиран 10 00:00:39,570 --> 00:00:41,520 лозинку у командној линији. 11 00:00:41,520 --> 00:00:46,050 Имајте на уму да програм треба да се покрене као дот сласх црацк, и 12 00:00:46,050 --> 00:00:48,120 онда кодиран стринг. 13 00:00:48,120 --> 00:00:52,990 >> Дакле, овде смо проверу да се уверите да аргц на два, ако желимо да 14 00:00:52,990 --> 00:00:54,380 наставите са програмом. 15 00:00:54,380 --> 00:00:58,830 Ако аргц не два, то значи или корисник није унио шифровани 16 00:00:58,830 --> 00:01:02,560 лозинку у командној линији, или они ушао више него само кодиран 17 00:01:02,560 --> 00:01:05,379 лозинку у командној линији, у којој ми онда не знам шта да радим са 18 00:01:05,379 --> 00:01:07,660 аргументи командне линије. 19 00:01:07,660 --> 00:01:11,390 >> Дакле, ако је било два аргц, можемо да наставимо. 20 00:01:11,390 --> 00:01:14,160 И ево, ми ћемо да се изјасне променљива кодиран. 21 00:01:14,160 --> 00:01:17,650 То само иде у алиас оригиналних аргв1 тако да кроз овај 22 00:01:17,650 --> 00:01:20,690 програма, ми не треба да зову аргв1, што онда морате да мислите 23 00:01:20,690 --> 00:01:22,950 шта то заправо значи. 24 00:01:22,950 --> 00:01:27,180 >> Коначно, желимо да потврдимо да шифрована лозинка корисник 25 00:01:27,180 --> 00:01:30,840 ушао је могао заправо бити шифровану лозинку. 26 00:01:30,840 --> 00:01:35,120 По ман странице, у крипти шифрована лозинка мора да буде 13 27 00:01:35,120 --> 00:01:36,440 знакова. 28 00:01:36,440 --> 00:01:41,500 Овде, примећујемо да хасх дефинисано шифровање дужину као 13.. 29 00:01:41,500 --> 00:01:46,140 Дакле, само смо се уверите да Дужина низа од шифрована 30 00:01:46,140 --> 00:01:49,090 лозинка је 13. 31 00:01:49,090 --> 00:01:52,280 >> А ако није, ми желимо да изађете из програма. 32 00:01:52,280 --> 00:01:56,470 Дакле, кад је то ван начин, можемо Сада заправо покушати да пронађе оно што 33 00:01:56,470 --> 00:02:00,410 лозинка коју је шифрована лозинка је. 34 00:02:00,410 --> 00:02:04,870 Овде желимо да зграбите соли из шифрованог лозинку. 35 00:02:04,870 --> 00:02:08,930 Запамтите, за ман странице, да Прва два карактера шифровани 36 00:02:08,930 --> 00:02:10,590 ниска, као овде - 37 00:02:10,590 --> 00:02:12,770 50ЗПЈ и тако даље - 38 00:02:12,770 --> 00:02:16,170 прва два знака дају нам соли који је коришћен 39 00:02:16,170 --> 00:02:18,080 у крипти функцији. 40 00:02:18,080 --> 00:02:21,740 >> И овде, видимо да је со била хектара. 41 00:02:21,740 --> 00:02:27,610 Дакле, желимо да копирате прва два карактера, соли дужине као хасх 42 00:02:27,610 --> 00:02:30,230 дефинише као два. 43 00:02:30,230 --> 00:02:35,970 Морамо да копирате прва два карактера у овом низу, соли. 44 00:02:35,970 --> 00:02:39,340 Обратите пажњу да је потребно соли дужину плус један, јер ми и даље треба нулл 45 00:02:39,340 --> 00:02:42,440 терминатор на крају нашег соли. 46 00:02:42,440 --> 00:02:46,940 >> Онда ћемо да прогласи овај низ, гост, дужине величине мак плус 47 00:02:46,940 --> 00:02:51,930 један, где је максимална дужина је дефинисана хасх као и осам, јер максимална лозинку 48 00:02:51,930 --> 00:02:55,090 је осам знакова. 49 00:02:55,090 --> 00:02:59,860 И ми ћемо користити ово да бисте прелазили по свим могућим жице која би могла 50 00:02:59,860 --> 00:03:01,430 важеће лозинке. 51 00:03:01,430 --> 00:03:07,720 Дакле, ако су важећи знакови у лозинку били су само, Б, и Ц, затим 52 00:03:07,720 --> 00:03:14,970 бисмо прелазили преко, б, ц, А, БА, ЦА, и тако даље, све до 53 00:03:14,970 --> 00:03:16,690 ћемо видети цццццццц - 54 00:03:16,690 --> 00:03:19,600 Ц је осам. 55 00:03:19,600 --> 00:03:23,620 >> А ако немамо важећи доле лозинку, онда морамо да кажемо да је 56 00:03:23,620 --> 00:03:26,590 кодирани стринг није био важи за почетак. 57 00:03:26,590 --> 00:03:29,970 Дакле, сада, док смо до тог 1 петља. 58 00:03:29,970 --> 00:03:33,100 Обратите пажњу на то значи да је бесконачна петља. 59 00:03:33,100 --> 00:03:36,430 >> Обавештење нема паузе изјава унутар ове бесконачне петље. 60 00:03:36,430 --> 00:03:38,570 Постоје само вратити изјаве. 61 00:03:38,570 --> 00:03:41,210 Тако да можемо очекивати никад за излазак из петље. 62 00:03:41,210 --> 00:03:44,750 Ми само очекујемо да изадјете из програма. 63 00:03:44,750 --> 00:03:48,220 Додао сам ову изјаву за штампу врх ове петље само одштампате 64 00:03:48,220 --> 00:03:51,790 шта је наш тренутни погодак на шта је лозинка. 65 00:03:51,790 --> 00:03:53,630 >> Сада, шта је ово петља ради? 66 00:03:53,630 --> 00:03:58,330 То је све могуће преко петље низове да важеће лозинке. 67 00:03:58,330 --> 00:04:02,700 Прво што ћемо да урадимо је да узети наш тренутни погодите за шта 68 00:04:02,700 --> 00:04:03,920 лозинка је. 69 00:04:03,920 --> 00:04:07,230 Узећемо соли које смо зграбио из кодирани стринг, и ми смо 70 00:04:07,230 --> 00:04:09,850 ће за шифровање претпоставку. 71 00:04:09,850 --> 00:04:14,760 То ће нам дати шифровану погодите, што ћемо упоредити против 72 00:04:14,760 --> 00:04:18,810 кодиран стринг који је корисник ушао у командној линији. 73 00:04:18,810 --> 00:04:23,030 >> Ако су исти, у ком случају стринг упоредити ће се вратити нула, ако 74 00:04:23,030 --> 00:04:28,050 они су исти, онда је ваљда лозинка коју генерише шифрован 75 00:04:28,050 --> 00:04:33,520 стринг, у том случају можемо да штампамо да као наш лозинком и повратак. 76 00:04:33,520 --> 00:04:37,520 Али, ако они нису били исти, да значи да је наша претпоставка је била погрешна. 77 00:04:37,520 --> 00:04:43,250 >> И ми желимо да се итерацију Следећи важи претпоставка. 78 00:04:43,250 --> 00:04:46,410 Дакле, то је оно што овај док петља покушава да уради. 79 00:04:46,410 --> 00:04:51,760 То ће итерацију нашу претпоставку на следећи важећем гуесс. 80 00:04:51,760 --> 00:04:56,080 Обратите пажњу да када кажемо да Посебно лик у нашој нагађања има 81 00:04:56,080 --> 00:05:01,770 достигла максималну симбол, који се овде хасх се дефинише као тилдом, јер 82 00:05:01,770 --> 00:05:05,710 То је највећи АСЦИИ вредност карактера да корисник може да уђе у 83 00:05:05,710 --> 00:05:11,210 тастатура, када лик достигне Мак симбол, онда желите да пошаљете 84 00:05:11,210 --> 00:05:17,150 назад у минималном симбола, који је простор, поново најнижи АСЦИИ 85 00:05:17,150 --> 00:05:20,800 вредност симбол да корисник може да унесите на тастатури. 86 00:05:20,800 --> 00:05:22,940 >> Дакле, ми ћемо да подесите да на минималну симбол. 87 00:05:22,940 --> 00:05:25,720 А онда ћемо да идемо на следећи карактер. 88 00:05:25,720 --> 00:05:28,730 Дакле, како су наши нагађања ће да вршите итерацију? 89 00:05:28,730 --> 00:05:33,685 Па, ако су важећи знакови су а, б, и Ц, па ако смо почели са, 90 00:05:33,685 --> 00:05:36,630 то ће прелазили на Б, она ће итерате у ц. 91 00:05:36,630 --> 00:05:44,360 Ц је наша највећа симбол, па ћемо поставити Ц назад на, минимална симбол. 92 00:05:44,360 --> 00:05:48,100 А онда ћемо итерацију индекса на следећи знак. 93 00:05:48,100 --> 00:05:53,920 >> Дакле, ако је оригинални претпоставка Ц, следећи карактер ће бити нула 94 00:05:53,920 --> 00:05:55,560 терминатор. 95 00:05:55,560 --> 00:06:00,670 Овде доле, ако приметите да карактер да ми сада желимо да 96 00:06:00,670 --> 00:06:04,690 прираст је нулл терминатор, онда ћемо га поставити на 97 00:06:04,690 --> 00:06:06,260 Минимум симбол. 98 00:06:06,260 --> 00:06:11,431 Дакле, ако је претпоставка Ц, онда наши Нова претпоставка ће бити АА. 99 00:06:11,431 --> 00:06:16,050 И ако је наша претпоставка је била оригинална ЦЦЦЦ, затим наш нови погодак 100 00:06:16,050 --> 00:06:18,380 ће бити ааааа. 101 00:06:18,380 --> 00:06:24,430 >> Дакле, кад год стигнемо на максималну стринг датог дужине, онда смо 102 00:06:24,430 --> 00:06:29,090 ће се спровести на минималну стринг наредне дужине, који ће 103 00:06:29,090 --> 00:06:34,420 Само се сви карактери минимална симбол. 104 00:06:34,420 --> 00:06:36,970 Сада, шта је ово провера ради овде? 105 00:06:36,970 --> 00:06:42,780 Па, ако је индекс прешао је из осмог карактер на девет карактера - 106 00:06:42,780 --> 00:06:46,460 па додамо осам Ц-их као Наш претходни Ваљда - 107 00:06:46,460 --> 00:06:51,270 онда индекс ће се фокусирати на Последња нула терминатор нашег нагађања 108 00:06:51,270 --> 00:06:57,990 низ, који није предвиђен да стварно да се користи у нашем лозинку. 109 00:06:57,990 --> 00:07:03,530 >> Дакле, ако смо фокусирани на том последњем нулл терминатор, онда нисмо нашли 110 00:07:03,530 --> 00:07:07,750 лозинка која је важећа користи само осам карактера, што значи да не постоји 111 00:07:07,750 --> 00:07:10,550 важећа лозинка који шифрује у датом низу. 112 00:07:10,550 --> 00:07:13,520 И морамо да одштампате, рекавши нисмо могли наћи важећи 113 00:07:13,520 --> 00:07:16,100 лозинку, и повратак. 114 00:07:16,100 --> 00:07:20,280 Дакле, ова петља док ће итерацију по свим могућим жице. 115 00:07:20,280 --> 00:07:24,640 >> Уколико се утврди да је било који шифрује да Очекује кодиран ниска, она ће 116 00:07:24,640 --> 00:07:26,190 врати ту лозинку. 117 00:07:26,190 --> 00:07:29,610 И то не пронађе ништа, а затим она ће се вратити, да је штампа 118 00:07:29,610 --> 00:07:31,910 није био у стању да пронађе било шта. 119 00:07:31,910 --> 00:07:39,220 Дакле, обратите пажњу да итератинг над свим могући жице је вероватно ће 120 00:07:39,220 --> 00:07:40,420 потрајати. 121 00:07:40,420 --> 00:07:43,590 Хајде да видимо како ствари дуго да траје. 122 00:07:43,590 --> 00:07:47,230 >> Хајде да правимо пукотину. 123 00:07:47,230 --> 00:07:51,050 Па, упс - каже недефинисан референце у гробницу. 124 00:07:51,050 --> 00:07:55,330 Запамтите, за П поставља спец и Такође човек страница за крипти које 125 00:07:55,330 --> 00:07:58,130 потребно је да повежете у крипту. 126 00:07:58,130 --> 00:08:01,130 Сада, подразумевано извршити команду не зна да ли 127 00:08:01,130 --> 00:08:03,010 желите да користите ову функцију. 128 00:08:03,010 --> 00:08:09,680 >> Па хајде да копирате овај клијентом командне и само додати на крају 129 00:08:09,680 --> 00:08:13,300 тога, повезивање крипта. 130 00:08:13,300 --> 00:08:14,820 Сада, она саставља. 131 00:08:14,820 --> 00:08:23,880 Па хајде да покренете пукотину на дато кодиран стринг - 132 00:08:23,880 --> 00:08:25,130 тако Цезаровог. 133 00:08:25,130 --> 00:08:28,690 134 00:08:28,690 --> 00:08:30,790 Дакле, то је било брзо. 135 00:08:30,790 --> 00:08:33,230 >> Обратите пажњу да је овај завршио на 13.. 136 00:08:33,230 --> 00:08:38,240 Па, Цезаров шифрована лозинка се дешава да се 13. 137 00:08:38,240 --> 00:08:41,650 Па хајде да пробамо другу лозинку. 138 00:08:41,650 --> 00:08:45,830 Узмимо Хирсцххорн је шифрована лозинку и покушајте да пуца. 139 00:08:45,830 --> 00:08:51,750 140 00:08:51,750 --> 00:08:55,110 >> Дакле, приметите да смо већ стигли три карактера. 141 00:08:55,110 --> 00:08:58,660 И ми итератинг по свим могућим три карактера жице. 142 00:08:58,660 --> 00:09:01,420 То значи да смо већ завршили итератинг по свим могућим и један 143 00:09:01,420 --> 00:09:04,660 два карактера жице. 144 00:09:04,660 --> 00:09:09,180 Сада, изгледа да ће ово потрајати пре него што стигнемо 145 00:09:09,180 --> 00:09:10,580 четири карактера жице. 146 00:09:10,580 --> 00:09:14,680 То би могло да потраје неколико минута. 147 00:09:14,680 --> 00:09:16,055 >> Није требало неколико минута. 148 00:09:16,055 --> 00:09:18,450 Ми смо на четири карактера жице. 149 00:09:18,450 --> 00:09:22,800 Али сада, морамо да бисте прелазили преко свега могуће четири карактера ниске, што 150 00:09:22,800 --> 00:09:26,000 да би можда око 10 минута. 151 00:09:26,000 --> 00:09:28,720 И онда кад стигнемо пет карактер жице, морамо да бисте прелазили преко свега 152 00:09:28,720 --> 00:09:31,450 од оних, који би могао узети пар сати. 153 00:09:31,450 --> 00:09:34,080 И ми треба да вршите итерацију кроз све могуће Шест знакова жице, која 154 00:09:34,080 --> 00:09:36,560 може да траје неколико дана и тако даље. 155 00:09:36,560 --> 00:09:41,380 >> Дакле, то може да потраје веома дуго потенцијално Време је да вршите итерацију кроз све могуће 156 00:09:41,380 --> 00:09:44,850 осам карактера и мање жице. 157 00:09:44,850 --> 00:09:50,600 Дакле, приметите да то није нужно веома ефикасан алгоритам за проналажење 158 00:09:50,600 --> 00:09:51,860 лозинку. 159 00:09:51,860 --> 00:09:54,540 Можда мислите да је бољи начини. 160 00:09:54,540 --> 00:10:02,230 На пример, лозинка зик 32аб! вероватно није веома честа лозинку, 161 00:10:02,230 --> 00:10:06,440 а лозинка је 12345 Вероватно много више заједничког. 162 00:10:06,440 --> 00:10:13,570 >> Дакле, један начин да покушава да пронађе лозинку брже је да погледа 163 00:10:13,570 --> 00:10:15,560 у лозинкама које су чешћи. 164 00:10:15,560 --> 00:10:20,480 Тако, на пример, можемо покушати да чита речи из речника и покушати све 165 00:10:20,480 --> 00:10:24,860 те речи, као наши лозинке нагађања. 166 00:10:24,860 --> 00:10:29,210 Сада, можда лозинку није тако једноставно. 167 00:10:29,210 --> 00:10:32,600 Можда је корисник био нешто паметно и покушајте додавање броја за 168 00:10:32,600 --> 00:10:34,220 крају речи. 169 00:10:34,220 --> 00:10:37,000 >> Можда им је лозинка пассворд1. 170 00:10:37,000 --> 00:10:41,520 Дакле, можете да покушате итератинг преко свих речи у речнику са једним 171 00:10:41,520 --> 00:10:43,210 додат на крај њега. 172 00:10:43,210 --> 00:10:47,360 А онда можда После тога, ви ћете додајте две до њеног краја. 173 00:10:47,360 --> 00:10:50,240 >> Или можда корисник покушава да буде чак и паметнији, а они желе да њихови 174 00:10:50,240 --> 00:10:54,980 лозинку да буде "хакер", али су ће заменити све инстанце е'С 175 00:10:54,980 --> 00:10:56,600 са тројкама. 176 00:10:56,600 --> 00:10:58,440 Да би могао да уради исто. 177 00:10:58,440 --> 00:11:02,100 Прелазили преко свих речи у речнику али замени карактера који 178 00:11:02,100 --> 00:11:04,790 изгледају као бројеве са тих бројева. 179 00:11:04,790 --> 00:11:09,670 >> Дакле овај начин, можете ухватити још више лозинке које су прилично уобичајено. 180 00:11:09,670 --> 00:11:14,690 Али на крају, једини начин да освоји све лозинке је звер 181 00:11:14,690 --> 00:11:17,340 силу прелазили преко свега могуће жице. 182 00:11:17,340 --> 00:11:22,100 Дакле, на крају, ви морате да вршите итерацију преко свих жица од једног знака 183 00:11:22,100 --> 00:11:28,110 осам знакова, што може да потраје дуго времена, али је потребно да то урадите. 184 00:11:28,110 --> 00:11:30,024 >> Моје име је Роб Боуден. 185 00:11:30,024 --> 00:11:31,425 А ово је црацк. 186 00:11:31,425 --> 00:11:36,533