ROB BOWDEN: Rwy'n Rob, a gadewch i ni gael cracio. Felly cofiwch o'r fanyleb pset y rydym yn mynd i gael ei angen i ddefnyddio'r swyddogaeth crypt. Ar gyfer y dudalen dyn, mae gennym ddau hash diffinio _xopensource. Peidiwch â phoeni am pam mae angen i ni wneud hynny. A hefyd hash cynnwys unistd.h. Felly, unwaith dyna allan o'r ffordd, gadewch i ni cyrraedd y rhaglen ei hun. Y peth cyntaf mae angen i ni ei wneud yw gwneud yn siwr y defnyddiwr mynd i mewn i amgryptio dilys cyfrinair ar y llinell orchymyn. Cofiwch bod y rhaglen i fod cael ei redeg fel dot slaes crac, ac Yna llinyn hamgryptio. Felly dyma rydym yn gwirio i wneud yn siŵr bod argc i ddau os ydym am parhau â'r rhaglen. Os nad argc yw dau, mae hynny'n golygu naill ai nad yw'r defnyddiwr yn mynd i mewn i amgryptio cyfrinair ar y llinell orchymyn, neu eu bod yn ymgeisio mwy na dim ond y amgryptio cyfrinair ar y llinell orchymyn, lle rhag ofn nad ydym yn gwybod beth i'w wneud gyda'r dadleuon llinell orchymyn. Felly, os oedd argc dau, gallwn barhau. Ac yma, rydym yn mynd i ddatgan a amgryptio amrywiol. Dyna dim ond yn mynd i alias y gwreiddiol argv1 fel bod drwy gydol y rhaglen, nid oes rhaid i ni alw argv1, sydd wedyn yn rhaid i chi feddwl am yr hyn a oedd yn golygu mewn gwirionedd. Felly, yn olaf, rydym am i ddilysu bod y cyfrinair amgryptio y defnyddiwr Gallai cofnodi wedi bod mewn gwirionedd yn cyfrinair amgryptio. Fesul y dudalen dyn crypt, y Rhaid cyfrinair amgryptio fod yn 13 nod o hyd. Hyd yma, sylwch ein bod hash ddiffinnir amgryptio hyd yn 13. Felly, rydym yn unig yn gwneud yn siŵr bod y hyd llinyn y amgryptio cyfrinair yw 13. Ac os nad yw'n, rydym am i adael y rhaglen. Felly, unwaith dyna allan o'r ffordd, gallwn yn awr mewn gwirionedd yn ceisio dod o hyd yr hyn y mae'r cyfrinair a roddodd y amgryptio cyfrinair oedd. Yma, rydym yn awyddus i chrafangia 'r halen o y cyfrinair amgryptio. Cofiwch, fesul y dudalen dyn, fod y ddau gyntaf cymeriadau o amgryptio llinyn, fel sydd yma - 50ZPJ ac yn y blaen - y ddau gymeriad gyntaf yn rhoi ni halen a ddefnyddiwyd yn y swyddogaeth crypt. Ac yma, gwelwn fod yr halen yn ha. Felly, rydym am i gopïo y ddau gyntaf cymeriadau, hyd halen yn hash ddiffinio fel dau. Mae'n rhaid i ni gopïo'r ddau gymeriad gyntaf i'r amrywiaeth hwn, halen. Sylwch fod angen hyd halen a un, gan ein bod dal i fod angen null terminator ar ddiwedd ein halen. Yna, rydym yn mynd i ddatgan amrywiaeth hwn, gwadd, hyd max maint a un, lle mae hyd max yn hash a ddiffinnir ag wyth, gan fod uchafswm y cyfrinair yw wyth nod o hyd. Ac rydym yn mynd i ddefnyddio hyn i ailadrodd dros yr holl dannau posibl a allai fod cyfrineiriau dilys. Felly, os yw'r cymeriadau dilys mewn cyfrinair yn unig a, b, ac c, yna byddem yn ailadrodd dros a, b, c, aa, ba, ca, ac yn y blaen, hyd nes y rydym yn cael gweld cccccccc - wyth c yn. Ac os nad ydym wedi i lawr dilys chyfrinair, yna mae angen inni ddweud bod y Nid yw'r llinyn wedi ei amgryptio oedd ddilys i ddechrau. Felly nawr, rydym yn cyrraedd hyn tra'n 1 ddolen. Sylwch fod yn golygu ei fod yn dolen ddiddiwedd. Hysbysiad nad oes unrhyw ddatganiad egwyl tu mewn y dolen ddiddiwedd. Dim ond yn cael eu dychwelyd datganiadau. Felly, ni fyddwn byth yn ei ddisgwyl mewn gwirionedd i adael y ddolen. Rydym ond yn disgwyl i adael y rhaglen. Rydw i wedi rhoi datganiad hwn print i'r ben y ddolen hon i ychydig argraffu beth yw ein dyfalu ar hyn o bryd yn beth yw'r cyfrinair. Yn awr, yr hyn sy'n ddolen hon yn ei wneud? Mae'n dolennu dros yr holl dannau posibl a allai fod yn cyfrineiriau dilys. Y peth cyntaf i ni yn mynd i wneud yw cymryd ein dyfalu presennol ar gyfer yr hyn y mae'r cyfrinair. Byddwn yn cymryd y halen yr ydym yn gafael o y llinyn amgryptio, ac rydym yn mynd i amgryptio y dyfalu. Bydd hyn yn rhoi dyfalu amgryptio ni, yr ydym yn mynd i gymharu yn erbyn y llinyn amgryptio bod y defnyddiwr safodd o 'r archa bannod. Os ydynt yn yr un fath, ac os felly Bydd llinyn tebyg dychwelyd sero, os eu bod yr un fath, yna ddyfalu oedd y cyfrinair a gynhyrchodd y amgryptio llinyn, ac os felly gallwn argraffu hynny fel ein chyfrinair a dychwelyd. Ond os nad ydynt yr un fath, bod golygu bod ein dyfalu yn anghywir. Ac rydym am i ailadrodd i y dyfalu dilys nesaf. Felly, dyna beth mae hyn yn tra dolen yn ceisio ei wneud. Mae'n mynd i ailadrodd ein ddyfalu i'r dyfalu dilys nesaf. Sylwch fod pan fyddwn yn dweud bod cymeriad arbennig yn ein ddyfalu wedi cyrraedd y symbol max, mae hyd yma yn hash ddiffinio fel tilde, gan dyna'r cymeriad gwerth ASCII mwyaf y gall defnyddiwr fynd i mewn yn y bysellfwrdd, pan fydd y cymeriad yn cyrraedd y max symbol, yna rydym am anfon yn ôl i'r lleiaf symbol, sy'n yn lle, unwaith eto y ASCII isaf gwerth symbol y gall defnyddiwr fynd i mewn ar y bysellfwrdd. Felly, rydym yn mynd i osod y i'r isafswm symbol. Ac yna rydym yn mynd i fynd ar i gymeriad nesaf. Felly sut mae ein dyfaliadau mynd i ailadrodd? Wel, os bydd y cymeriadau dilys a, b, ac c, yna os ydym yn dechrau gyda, bydd yn ailadrodd i b, mae'n chi helpu ailadrodd i c. c yw ein symbol max, felly byddwn yn gosod c ôl i, yr isafswm symbol. Ac yna byddwn yn ailadrodd mynegai i gymeriad nesaf. Felly, os yw'r dyfalu gwreiddiol yn c, y nesaf cymeriad yn mynd i fod yn null terminator. I lawr yma, sylwi bod os bydd y cymeriad ein bod yn awr am cynyddiad yn y null terminator, Yna, rydym yn mynd i osod i'r symbol lleiaf. Felly, os yw'r dyfalu oedd c, yna mae ein dyfalu newydd yn mynd i fod yn aa. Ac os yw ein ddyfalu gwreiddiol yn CCCC, yna mae ein dyfalu newydd yn mynd i fod aaaaa. Felly, pryd bynnag y byddwn yn cyrraedd y llinyn uchaf o hyd penodol, yna rydym yn yn mynd i weithredu i'r isafswm llinyn y darn nesaf, a fydd yn dim ond yn yr holl gymeriadau o y symbol lleiaf. Yn awr, yr hyn a gwiriad hwn ei wneud yma? Wel, symud os oes mynegai o'r wythfed cymeriad i'r naw gymeriad - felly rydym yn ychwanegu wyth c fel ein blaenorol dyfalu - Yna mynegai yn mynd i ganolbwyntio ar y olaf null terminator o'n ddyfalu array, nad yw'n cael ei olygu mewn gwirionedd yn cael ei ddefnyddio yn ein cyfrinair. Felly, os ydym yn canolbwyntio ar y null diwethaf terminator, yna nid ydym wedi dod o hyd i cyfrinair sydd wedi ddilys ddefnyddio dim ond wyth cymeriadau, sy'n golygu nad oes cyfrinair dilys sy'n encrypts i'r llinyn a roddir. Ac mae'n rhaid i ni argraffu hynny, gan ddweud ni allem ddod o hyd i dilys cyfrinair, a dychwelyd. Felly, tra bod y ddolen yn mynd i ailadrodd dros yr holl dannau posibl. Os yw'n canfod unrhyw rai sy'n encrypts i'r llinyn amgryptio disgwyl, mae'n chi helpu dychwelyd y cyfrinair. Ac mae'n nid yw'n dod o hyd i unrhyw beth, yna bydd yn dychwelyd, argraffu ei fod yn nid oedd yn gallu dod o hyd i unrhyw beth. Yn awr, sylwi bod ailadrodd dros yr holl llinynnau posibl yn fwy na thebyg yn mynd i gymryd amser. Gadewch i ni weld mewn gwirionedd sut y hir sy'n cymryd. Gadewch i ni wneud crac. Wel, Wps - mae'n dweud amhenodol gyfeirio at crypt. Felly cofiwch, ar gyfer y p yn spec a hefyd y dudalen dyn am crypt yr ydym yn angen i gysylltu crypt. Yn awr, 'r ball yn gwneud gorchymyn nid yw'n gwybod eich bod yn am ddefnyddio swyddogaeth honno. Felly, gadewch i ni copi hon archa cleient a dim ond yn ychwanegu at ddiwedd ohono, gan gysylltu crypt. Yn awr, mae'n llunio. Felly, gadewch i ni redeg crac ar a roddwyd llinyn amgryptio - felly Cesar. Felly dyna oedd yn eithaf cyflym. Sylwch fod hyn yn dod i ben ar 13. Wel, cyfrinair amgryptio Cesar yn digwydd i fod yn 13. Felly, gadewch i ni geisio cyfrinair arall. Gadewch i ni gymryd amgryptio Hirschhorn yn cyfrinair a rhoi cynnig ar cracio hynny. Felly sylwi rydym eisoes wedi cyrraedd tri chymeriad. Ac rydym yn ailadrodd dros yr holl posibl llinynnau tri chymeriad. Mae hynny'n golygu ein bod eisoes wedi gorffen ailadrodd dros yr holl un posibl a dau llinynnau cymeriad. Yn awr, mae'n edrych fel hyn yn mynd i gymryd ychydig o amser cyn i ni gyrraedd y llinynnau pedwar-cymeriad. Efallai y bydd yn cymryd ychydig o funudau. Nid oedd yn cymryd ychydig o funudau. Rydym ar y tannau pedwar-cymeriad. Ond yn awr, mae angen i ni ailadrodd dros yr holl bosibl llinynnau pedwar-cymeriad, sy'n a allai gymryd 10 munud efallai. Ac yna pan fyddwn yn cyrraedd pum cymeriad llinynnau, mae angen i ni ailadrodd dros yr holl o'r rheini, a allai cymryd cwpl o oriau. Ac mae angen i ailadrodd dros yr holl posibl chwe gymeriad llinynnau, sy'n Gallai cymryd cwpl o ddyddiau ac yn y blaen. Felly, gallai gymryd allai fod yn hir iawn amser i ailadrodd dros yr holl posibl wyth-gymeriad a llai llinynnau. Felly sylwi nad yw hyn o reidrwydd yn algorithm effeithlon iawn ar gyfer dod o hyd i cyfrinair. Efallai y byddwch yn meddwl bod ffyrdd gwell. Er enghraifft, mae'r zyx cyfrinair! 32AB Mae'n debyg nad yw cyfrinair gyffredin iawn, tra bod y cyfrinair yw 12345 yn ôl pob tebyg yn llawer mwy cyffredin. Felly, un ffordd o geisio dod o hyd i cyfrinair yn gyflymach yw dim ond yn edrych ar cyfrineiriau sy'n fwy cyffredin. Felly, er enghraifft, gallwn geisio i ddarllen geiriau o eiriadur a rhoi cynnig ar yr holl geiriau hynny fel ein dyfalu gyfrinair. Yn awr, efallai cyfrinair Nid yw mor syml â hynny. Efallai y defnyddiwr braidd yn glyfar a cheisio atodi nifer i ddiwedd y gair. Felly efallai eu cyfrinair yn password1. Felly, gallwch roi cynnig ar ailadrodd dros yr holl eiriau yn y geiriadur am un ynghlwm wrth y diwedd. Ac yna efallai ar ôl gwneud hynny, byddwch yn atodi dwy i ei ddiwedd. Neu efallai y defnyddiwr yn ceisio i fod hyd yn oed yn fwy clyfar, ac maent am eu cyfrinair i fod yn "haciwr," ond maen nhw'n yn mynd i gymryd lle yr holl achosion o e yn gyda trioedd. Felly, gallech wneud hyn hefyd. Ailadrodd dros yr holl eiriau yn y geiriadur ond disodli'r cymeriadau edrych fel rhifau gyda rhifau hynny. Felly, y ffordd hon, efallai y byddwch yn dal hyd yn oed mwy cyfrineiriau sy'n eithaf cyffredin. Ond yn y diwedd, yr unig ffordd y gallwch nodi'r holl cyfrineiriau yw 'n Ysgrublaidd gorfodi ailadrodd dros yr holl llinynnau posibl. Felly, yn y pen draw, mae angen i chi ailadrodd dros yr holl dannau o un cymeriad i'r wyth cymeriadau, a allai gymryd amser hir iawn, ond mae angen i chi wneud hynny. Fy enw i yw Rob Bowden. Ac mae hyn yn Crac.