1 00:00:00,000 --> 00:00:13,000 2 00:00:13,000 --> 00:00:15,890 >> ROB BOWDEN: Rwy'n Rob, a gadewch i ni gael cracio. 3 00:00:15,890 --> 00:00:19,390 Felly cofiwch o'r fanyleb pset y rydym yn mynd i gael ei angen i ddefnyddio'r 4 00:00:19,390 --> 00:00:20,890 swyddogaeth crypt. 5 00:00:20,890 --> 00:00:26,330 Ar gyfer y dudalen dyn, mae gennym ddau hash diffinio _xopensource. 6 00:00:26,330 --> 00:00:28,290 Peidiwch â phoeni am pam mae angen i ni wneud hynny. 7 00:00:28,290 --> 00:00:31,550 A hefyd hash cynnwys unistd.h. 8 00:00:31,550 --> 00:00:35,920 >> Felly, unwaith dyna allan o'r ffordd, gadewch i ni cyrraedd y rhaglen ei hun. 9 00:00:35,920 --> 00:00:39,570 Y peth cyntaf mae angen i ni ei wneud yw gwneud yn siwr y defnyddiwr mynd i mewn i amgryptio dilys 10 00:00:39,570 --> 00:00:41,520 cyfrinair ar y llinell orchymyn. 11 00:00:41,520 --> 00:00:46,050 Cofiwch bod y rhaglen i fod cael ei redeg fel dot slaes crac, ac 12 00:00:46,050 --> 00:00:48,120 Yna llinyn hamgryptio. 13 00:00:48,120 --> 00:00:52,990 >> Felly dyma rydym yn gwirio i wneud yn siŵr bod argc i ddau os ydym am 14 00:00:52,990 --> 00:00:54,380 parhau â'r rhaglen. 15 00:00:54,380 --> 00:00:58,830 Os nad argc yw dau, mae hynny'n golygu naill ai nad yw'r defnyddiwr yn mynd i mewn i amgryptio 16 00:00:58,830 --> 00:01:02,560 cyfrinair ar y llinell orchymyn, neu eu bod yn ymgeisio mwy na dim ond y amgryptio 17 00:01:02,560 --> 00:01:05,379 cyfrinair ar y llinell orchymyn, lle rhag ofn nad ydym yn gwybod beth i'w wneud gyda'r 18 00:01:05,379 --> 00:01:07,660 dadleuon llinell orchymyn. 19 00:01:07,660 --> 00:01:11,390 >> Felly, os oedd argc dau, gallwn barhau. 20 00:01:11,390 --> 00:01:14,160 Ac yma, rydym yn mynd i ddatgan a amgryptio amrywiol. 21 00:01:14,160 --> 00:01:17,650 Dyna dim ond yn mynd i alias y gwreiddiol argv1 fel bod drwy gydol y 22 00:01:17,650 --> 00:01:20,690 rhaglen, nid oes rhaid i ni alw argv1, sydd wedyn yn rhaid i chi feddwl 23 00:01:20,690 --> 00:01:22,950 am yr hyn a oedd yn golygu mewn gwirionedd. 24 00:01:22,950 --> 00:01:27,180 >> Felly, yn olaf, rydym am i ddilysu bod y cyfrinair amgryptio y defnyddiwr 25 00:01:27,180 --> 00:01:30,840 Gallai cofnodi wedi bod mewn gwirionedd yn cyfrinair amgryptio. 26 00:01:30,840 --> 00:01:35,120 Fesul y dudalen dyn crypt, y Rhaid cyfrinair amgryptio fod yn 13 27 00:01:35,120 --> 00:01:36,440 nod o hyd. 28 00:01:36,440 --> 00:01:41,500 Hyd yma, sylwch ein bod hash ddiffinnir amgryptio hyd yn 13. 29 00:01:41,500 --> 00:01:46,140 Felly, rydym yn unig yn gwneud yn siŵr bod y hyd llinyn y amgryptio 30 00:01:46,140 --> 00:01:49,090 cyfrinair yw 13. 31 00:01:49,090 --> 00:01:52,280 >> Ac os nad yw'n, rydym am i adael y rhaglen. 32 00:01:52,280 --> 00:01:56,470 Felly, unwaith dyna allan o'r ffordd, gallwn yn awr mewn gwirionedd yn ceisio dod o hyd yr hyn y mae'r 33 00:01:56,470 --> 00:02:00,410 cyfrinair a roddodd y amgryptio cyfrinair oedd. 34 00:02:00,410 --> 00:02:04,870 Yma, rydym yn awyddus i chrafangia 'r halen o y cyfrinair amgryptio. 35 00:02:04,870 --> 00:02:08,930 Cofiwch, fesul y dudalen dyn, fod y ddau gyntaf cymeriadau o amgryptio 36 00:02:08,930 --> 00:02:10,590 llinyn, fel sydd yma - 37 00:02:10,590 --> 00:02:12,770 50ZPJ ac yn y blaen - 38 00:02:12,770 --> 00:02:16,170 y ddau gymeriad gyntaf yn rhoi ni halen a ddefnyddiwyd 39 00:02:16,170 --> 00:02:18,080 yn y swyddogaeth crypt. 40 00:02:18,080 --> 00:02:21,740 >> Ac yma, gwelwn fod yr halen yn ha. 41 00:02:21,740 --> 00:02:27,610 Felly, rydym am i gopïo y ddau gyntaf cymeriadau, hyd halen yn hash 42 00:02:27,610 --> 00:02:30,230 ddiffinio fel dau. 43 00:02:30,230 --> 00:02:35,970 Mae'n rhaid i ni gopïo'r ddau gymeriad gyntaf i'r amrywiaeth hwn, halen. 44 00:02:35,970 --> 00:02:39,340 Sylwch fod angen hyd halen a un, gan ein bod dal i fod angen null 45 00:02:39,340 --> 00:02:42,440 terminator ar ddiwedd ein halen. 46 00:02:42,440 --> 00:02:46,940 >> Yna, rydym yn mynd i ddatgan amrywiaeth hwn, gwadd, hyd max maint a 47 00:02:46,940 --> 00:02:51,930 un, lle mae hyd max yn hash a ddiffinnir ag wyth, gan fod uchafswm y cyfrinair 48 00:02:51,930 --> 00:02:55,090 yw wyth nod o hyd. 49 00:02:55,090 --> 00:02:59,860 Ac rydym yn mynd i ddefnyddio hyn i ailadrodd dros yr holl dannau posibl a allai 50 00:02:59,860 --> 00:03:01,430 fod cyfrineiriau dilys. 51 00:03:01,430 --> 00:03:07,720 Felly, os yw'r cymeriadau dilys mewn cyfrinair yn unig a, b, ac c, yna 52 00:03:07,720 --> 00:03:14,970 byddem yn ailadrodd dros a, b, c, aa, ba, ca, ac yn y blaen, hyd nes y 53 00:03:14,970 --> 00:03:16,690 rydym yn cael gweld cccccccc - 54 00:03:16,690 --> 00:03:19,600 wyth c yn. 55 00:03:19,600 --> 00:03:23,620 >> Ac os nad ydym wedi i lawr dilys chyfrinair, yna mae angen inni ddweud bod y 56 00:03:23,620 --> 00:03:26,590 Nid yw'r llinyn wedi ei amgryptio oedd ddilys i ddechrau. 57 00:03:26,590 --> 00:03:29,970 Felly nawr, rydym yn cyrraedd hyn tra'n 1 ddolen. 58 00:03:29,970 --> 00:03:33,100 Sylwch fod yn golygu ei fod yn dolen ddiddiwedd. 59 00:03:33,100 --> 00:03:36,430 >> Hysbysiad nad oes unrhyw ddatganiad egwyl tu mewn y dolen ddiddiwedd. 60 00:03:36,430 --> 00:03:38,570 Dim ond yn cael eu dychwelyd datganiadau. 61 00:03:38,570 --> 00:03:41,210 Felly, ni fyddwn byth yn ei ddisgwyl mewn gwirionedd i adael y ddolen. 62 00:03:41,210 --> 00:03:44,750 Rydym ond yn disgwyl i adael y rhaglen. 63 00:03:44,750 --> 00:03:48,220 Rydw i wedi rhoi datganiad hwn print i'r ben y ddolen hon i ychydig argraffu 64 00:03:48,220 --> 00:03:51,790 beth yw ein dyfalu ar hyn o bryd yn beth yw'r cyfrinair. 65 00:03:51,790 --> 00:03:53,630 >> Yn awr, yr hyn sy'n ddolen hon yn ei wneud? 66 00:03:53,630 --> 00:03:58,330 Mae'n dolennu dros yr holl dannau posibl a allai fod yn cyfrineiriau dilys. 67 00:03:58,330 --> 00:04:02,700 Y peth cyntaf i ni yn mynd i wneud yw cymryd ein dyfalu presennol ar gyfer yr hyn y mae'r 68 00:04:02,700 --> 00:04:03,920 cyfrinair. 69 00:04:03,920 --> 00:04:07,230 Byddwn yn cymryd y halen yr ydym yn gafael o y llinyn amgryptio, ac rydym yn 70 00:04:07,230 --> 00:04:09,850 mynd i amgryptio y dyfalu. 71 00:04:09,850 --> 00:04:14,760 Bydd hyn yn rhoi dyfalu amgryptio ni, yr ydym yn mynd i gymharu yn erbyn 72 00:04:14,760 --> 00:04:18,810 y llinyn amgryptio bod y defnyddiwr safodd o 'r archa bannod. 73 00:04:18,810 --> 00:04:23,030 >> Os ydynt yn yr un fath, ac os felly Bydd llinyn tebyg dychwelyd sero, os 74 00:04:23,030 --> 00:04:28,050 eu bod yr un fath, yna ddyfalu oedd y cyfrinair a gynhyrchodd y amgryptio 75 00:04:28,050 --> 00:04:33,520 llinyn, ac os felly gallwn argraffu hynny fel ein chyfrinair a dychwelyd. 76 00:04:33,520 --> 00:04:37,520 Ond os nad ydynt yr un fath, bod golygu bod ein dyfalu yn anghywir. 77 00:04:37,520 --> 00:04:43,250 >> Ac rydym am i ailadrodd i y dyfalu dilys nesaf. 78 00:04:43,250 --> 00:04:46,410 Felly, dyna beth mae hyn yn tra dolen yn ceisio ei wneud. 79 00:04:46,410 --> 00:04:51,760 Mae'n mynd i ailadrodd ein ddyfalu i'r dyfalu dilys nesaf. 80 00:04:51,760 --> 00:04:56,080 Sylwch fod pan fyddwn yn dweud bod cymeriad arbennig yn ein ddyfalu wedi 81 00:04:56,080 --> 00:05:01,770 cyrraedd y symbol max, mae hyd yma yn hash ddiffinio fel tilde, gan 82 00:05:01,770 --> 00:05:05,710 dyna'r cymeriad gwerth ASCII mwyaf y gall defnyddiwr fynd i mewn yn y 83 00:05:05,710 --> 00:05:11,210 bysellfwrdd, pan fydd y cymeriad yn cyrraedd y max symbol, yna rydym am anfon 84 00:05:11,210 --> 00:05:17,150 yn ôl i'r lleiaf symbol, sy'n yn lle, unwaith eto y ASCII isaf 85 00:05:17,150 --> 00:05:20,800 gwerth symbol y gall defnyddiwr fynd i mewn ar y bysellfwrdd. 86 00:05:20,800 --> 00:05:22,940 >> Felly, rydym yn mynd i osod y i'r isafswm symbol. 87 00:05:22,940 --> 00:05:25,720 Ac yna rydym yn mynd i fynd ar i gymeriad nesaf. 88 00:05:25,720 --> 00:05:28,730 Felly sut mae ein dyfaliadau mynd i ailadrodd? 89 00:05:28,730 --> 00:05:33,685 Wel, os bydd y cymeriadau dilys a, b, ac c, yna os ydym yn dechrau gyda, 90 00:05:33,685 --> 00:05:36,630 bydd yn ailadrodd i b, mae'n chi helpu ailadrodd i c. 91 00:05:36,630 --> 00:05:44,360 c yw ein symbol max, felly byddwn yn gosod c ôl i, yr isafswm symbol. 92 00:05:44,360 --> 00:05:48,100 Ac yna byddwn yn ailadrodd mynegai i gymeriad nesaf. 93 00:05:48,100 --> 00:05:53,920 >> Felly, os yw'r dyfalu gwreiddiol yn c, y nesaf cymeriad yn mynd i fod yn null 94 00:05:53,920 --> 00:05:55,560 terminator. 95 00:05:55,560 --> 00:06:00,670 I lawr yma, sylwi bod os bydd y cymeriad ein bod yn awr am 96 00:06:00,670 --> 00:06:04,690 cynyddiad yn y null terminator, Yna, rydym yn mynd i osod i'r 97 00:06:04,690 --> 00:06:06,260 symbol lleiaf. 98 00:06:06,260 --> 00:06:11,431 Felly, os yw'r dyfalu oedd c, yna mae ein dyfalu newydd yn mynd i fod yn aa. 99 00:06:11,431 --> 00:06:16,050 Ac os yw ein ddyfalu gwreiddiol yn CCCC, yna mae ein dyfalu newydd 100 00:06:16,050 --> 00:06:18,380 yn mynd i fod aaaaa. 101 00:06:18,380 --> 00:06:24,430 >> Felly, pryd bynnag y byddwn yn cyrraedd y llinyn uchaf o hyd penodol, yna rydym yn 102 00:06:24,430 --> 00:06:29,090 yn mynd i weithredu i'r isafswm llinyn y darn nesaf, a fydd yn 103 00:06:29,090 --> 00:06:34,420 dim ond yn yr holl gymeriadau o y symbol lleiaf. 104 00:06:34,420 --> 00:06:36,970 Yn awr, yr hyn a gwiriad hwn ei wneud yma? 105 00:06:36,970 --> 00:06:42,780 Wel, symud os oes mynegai o'r wythfed cymeriad i'r naw gymeriad - 106 00:06:42,780 --> 00:06:46,460 felly rydym yn ychwanegu wyth c fel ein blaenorol dyfalu - 107 00:06:46,460 --> 00:06:51,270 Yna mynegai yn mynd i ganolbwyntio ar y olaf null terminator o'n ddyfalu 108 00:06:51,270 --> 00:06:57,990 array, nad yw'n cael ei olygu mewn gwirionedd yn cael ei ddefnyddio yn ein cyfrinair. 109 00:06:57,990 --> 00:07:03,530 >> Felly, os ydym yn canolbwyntio ar y null diwethaf terminator, yna nid ydym wedi dod o hyd i 110 00:07:03,530 --> 00:07:07,750 cyfrinair sydd wedi ddilys ddefnyddio dim ond wyth cymeriadau, sy'n golygu nad oes 111 00:07:07,750 --> 00:07:10,550 cyfrinair dilys sy'n encrypts i'r llinyn a roddir. 112 00:07:10,550 --> 00:07:13,520 Ac mae'n rhaid i ni argraffu hynny, gan ddweud ni allem ddod o hyd i dilys 113 00:07:13,520 --> 00:07:16,100 cyfrinair, a dychwelyd. 114 00:07:16,100 --> 00:07:20,280 Felly, tra bod y ddolen yn mynd i ailadrodd dros yr holl dannau posibl. 115 00:07:20,280 --> 00:07:24,640 >> Os yw'n canfod unrhyw rai sy'n encrypts i'r llinyn amgryptio disgwyl, mae'n chi helpu 116 00:07:24,640 --> 00:07:26,190 dychwelyd y cyfrinair. 117 00:07:26,190 --> 00:07:29,610 Ac mae'n nid yw'n dod o hyd i unrhyw beth, yna bydd yn dychwelyd, argraffu ei fod yn 118 00:07:29,610 --> 00:07:31,910 nid oedd yn gallu dod o hyd i unrhyw beth. 119 00:07:31,910 --> 00:07:39,220 Yn awr, sylwi bod ailadrodd dros yr holl llinynnau posibl yn fwy na thebyg yn mynd i 120 00:07:39,220 --> 00:07:40,420 gymryd amser. 121 00:07:40,420 --> 00:07:43,590 Gadewch i ni weld mewn gwirionedd sut y hir sy'n cymryd. 122 00:07:43,590 --> 00:07:47,230 >> Gadewch i ni wneud crac. 123 00:07:47,230 --> 00:07:51,050 Wel, Wps - mae'n dweud amhenodol gyfeirio at crypt. 124 00:07:51,050 --> 00:07:55,330 Felly cofiwch, ar gyfer y p yn spec a hefyd y dudalen dyn am crypt yr ydym yn 125 00:07:55,330 --> 00:07:58,130 angen i gysylltu crypt. 126 00:07:58,130 --> 00:08:01,130 Yn awr, 'r ball yn gwneud gorchymyn nid yw'n gwybod eich bod yn 127 00:08:01,130 --> 00:08:03,010 am ddefnyddio swyddogaeth honno. 128 00:08:03,010 --> 00:08:09,680 >> Felly, gadewch i ni copi hon archa cleient a dim ond yn ychwanegu at ddiwedd 129 00:08:09,680 --> 00:08:13,300 ohono, gan gysylltu crypt. 130 00:08:13,300 --> 00:08:14,820 Yn awr, mae'n llunio. 131 00:08:14,820 --> 00:08:23,880 Felly, gadewch i ni redeg crac ar a roddwyd llinyn amgryptio - 132 00:08:23,880 --> 00:08:25,130 felly Cesar. 133 00:08:25,130 --> 00:08:28,690 134 00:08:28,690 --> 00:08:30,790 Felly dyna oedd yn eithaf cyflym. 135 00:08:30,790 --> 00:08:33,230 >> Sylwch fod hyn yn dod i ben ar 13. 136 00:08:33,230 --> 00:08:38,240 Wel, cyfrinair amgryptio Cesar yn digwydd i fod yn 13. 137 00:08:38,240 --> 00:08:41,650 Felly, gadewch i ni geisio cyfrinair arall. 138 00:08:41,650 --> 00:08:45,830 Gadewch i ni gymryd amgryptio Hirschhorn yn cyfrinair a rhoi cynnig ar cracio hynny. 139 00:08:45,830 --> 00:08:51,750 140 00:08:51,750 --> 00:08:55,110 >> Felly sylwi rydym eisoes wedi cyrraedd tri chymeriad. 141 00:08:55,110 --> 00:08:58,660 Ac rydym yn ailadrodd dros yr holl posibl llinynnau tri chymeriad. 142 00:08:58,660 --> 00:09:01,420 Mae hynny'n golygu ein bod eisoes wedi gorffen ailadrodd dros yr holl un posibl a 143 00:09:01,420 --> 00:09:04,660 dau llinynnau cymeriad. 144 00:09:04,660 --> 00:09:09,180 Yn awr, mae'n edrych fel hyn yn mynd i gymryd ychydig o amser cyn i ni gyrraedd y 145 00:09:09,180 --> 00:09:10,580 llinynnau pedwar-cymeriad. 146 00:09:10,580 --> 00:09:14,680 Efallai y bydd yn cymryd ychydig o funudau. 147 00:09:14,680 --> 00:09:16,055 >> Nid oedd yn cymryd ychydig o funudau. 148 00:09:16,055 --> 00:09:18,450 Rydym ar y tannau pedwar-cymeriad. 149 00:09:18,450 --> 00:09:22,800 Ond yn awr, mae angen i ni ailadrodd dros yr holl bosibl llinynnau pedwar-cymeriad, sy'n 150 00:09:22,800 --> 00:09:26,000 a allai gymryd 10 munud efallai. 151 00:09:26,000 --> 00:09:28,720 Ac yna pan fyddwn yn cyrraedd pum cymeriad llinynnau, mae angen i ni ailadrodd dros yr holl 152 00:09:28,720 --> 00:09:31,450 o'r rheini, a allai cymryd cwpl o oriau. 153 00:09:31,450 --> 00:09:34,080 Ac mae angen i ailadrodd dros yr holl posibl chwe gymeriad llinynnau, sy'n 154 00:09:34,080 --> 00:09:36,560 Gallai cymryd cwpl o ddyddiau ac yn y blaen. 155 00:09:36,560 --> 00:09:41,380 >> Felly, gallai gymryd allai fod yn hir iawn amser i ailadrodd dros yr holl posibl 156 00:09:41,380 --> 00:09:44,850 wyth-gymeriad a llai llinynnau. 157 00:09:44,850 --> 00:09:50,600 Felly sylwi nad yw hyn o reidrwydd yn algorithm effeithlon iawn ar gyfer dod o hyd i 158 00:09:50,600 --> 00:09:51,860 cyfrinair. 159 00:09:51,860 --> 00:09:54,540 Efallai y byddwch yn meddwl bod ffyrdd gwell. 160 00:09:54,540 --> 00:10:02,230 Er enghraifft, mae'r zyx cyfrinair! 32AB Mae'n debyg nad yw cyfrinair gyffredin iawn, 161 00:10:02,230 --> 00:10:06,440 tra bod y cyfrinair yw 12345 yn ôl pob tebyg yn llawer mwy cyffredin. 162 00:10:06,440 --> 00:10:13,570 >> Felly, un ffordd o geisio dod o hyd i cyfrinair yn gyflymach yw dim ond yn edrych 163 00:10:13,570 --> 00:10:15,560 ar cyfrineiriau sy'n fwy cyffredin. 164 00:10:15,560 --> 00:10:20,480 Felly, er enghraifft, gallwn geisio i ddarllen geiriau o eiriadur a rhoi cynnig ar yr holl 165 00:10:20,480 --> 00:10:24,860 geiriau hynny fel ein dyfalu gyfrinair. 166 00:10:24,860 --> 00:10:29,210 Yn awr, efallai cyfrinair Nid yw mor syml â hynny. 167 00:10:29,210 --> 00:10:32,600 Efallai y defnyddiwr braidd yn glyfar a cheisio atodi nifer i 168 00:10:32,600 --> 00:10:34,220 ddiwedd y gair. 169 00:10:34,220 --> 00:10:37,000 >> Felly efallai eu cyfrinair yn password1. 170 00:10:37,000 --> 00:10:41,520 Felly, gallwch roi cynnig ar ailadrodd dros yr holl eiriau yn y geiriadur am un 171 00:10:41,520 --> 00:10:43,210 ynghlwm wrth y diwedd. 172 00:10:43,210 --> 00:10:47,360 Ac yna efallai ar ôl gwneud hynny, byddwch yn atodi dwy i ei ddiwedd. 173 00:10:47,360 --> 00:10:50,240 >> Neu efallai y defnyddiwr yn ceisio i fod hyd yn oed yn fwy clyfar, ac maent am eu 174 00:10:50,240 --> 00:10:54,980 cyfrinair i fod yn "haciwr," ond maen nhw'n yn mynd i gymryd lle yr holl achosion o e yn 175 00:10:54,980 --> 00:10:56,600 gyda trioedd. 176 00:10:56,600 --> 00:10:58,440 Felly, gallech wneud hyn hefyd. 177 00:10:58,440 --> 00:11:02,100 Ailadrodd dros yr holl eiriau yn y geiriadur ond disodli'r cymeriadau 178 00:11:02,100 --> 00:11:04,790 edrych fel rhifau gyda rhifau hynny. 179 00:11:04,790 --> 00:11:09,670 >> Felly, y ffordd hon, efallai y byddwch yn dal hyd yn oed mwy cyfrineiriau sy'n eithaf cyffredin. 180 00:11:09,670 --> 00:11:14,690 Ond yn y diwedd, yr unig ffordd y gallwch nodi'r holl cyfrineiriau yw 'n Ysgrublaidd 181 00:11:14,690 --> 00:11:17,340 gorfodi ailadrodd dros yr holl llinynnau posibl. 182 00:11:17,340 --> 00:11:22,100 Felly, yn y pen draw, mae angen i chi ailadrodd dros yr holl dannau o un cymeriad i'r 183 00:11:22,100 --> 00:11:28,110 wyth cymeriadau, a allai gymryd amser hir iawn, ond mae angen i chi wneud hynny. 184 00:11:28,110 --> 00:11:30,024 >> Fy enw i yw Rob Bowden. 185 00:11:30,024 --> 00:11:31,425 Ac mae hyn yn Crac. 186 00:11:31,425 --> 00:11:36,533