>> ROB BOWDEN: Én Rob, és menjünk repedés.
Úgy emlékszem a Pset spec hogy mi lesz szüksége, hogy használja a
kripta funkciót.
A man oldal, van két hash meg _xopensource.
Ne aggódj, miért meg kell csinálni.
És azt is hash tartalmaz unistd.h.
>> Tehát, ha ez az útból, nézzük kap az aktuális program.
Az első dolog, amit meg kell tennie, hogy megbizonyosodjon arról, a felhasználó által megadott érvényes titkosított
jelszót a parancssorba.
Ne feledje, hogy a program kellene kell futtatni, mint a dot slash crack, és
majd titkosított szöveg.
>> Tehát itt vagyunk Ellenőrizzük, hogy hogy argc két, ha azt akarjuk, hogy
folytassa a programot.
Ha argc nem két, az azt jelenti, vagy a felhasználó nem adja meg a titkosított
jelszót a parancssorba, vagy be több, mint a titkosított
jelszót a parancssorba, amelyben az esetben nem tudom, mi köze van a
parancssori paramétereket.
>> Tehát, ha már két argc, folytatni tudjuk.
És itt fogunk nyilatkozni változó titkosított.
Ez csak megy, alias az eredeti argv1 így ez alatt a
programot, akkor nem kell nevezni argv1, amely akkor meg kell gondolni
arról, hogy ez mit jelent valójában.
>> Így végül, szeretnénk ellenőrizni, hogy a a titkosított jelszó a felhasználó
be lehetett ténylegesen titkosított jelszót.
Per a man oldalt a kripta, a titkosított jelszó kell 13
karakter hosszú lehet.
Itt fenn, észre, hogy hash meghatározott titkosítani hosszúságú 13.
Szóval most ügyelve arra, hogy a húr hossza a titkosított
jelszó 13.
>> És ha ez nem, akkor szeretnénk A kilépéshez.
Tehát, ha ez az útból, akkor most már valóban meg kell találnia, mi a
jelszót adta a titkosított jelszó volt.
Itt szeretnénk megragadni a só A titkosított jelszó.
Ne feledje, egy a man oldalt, hogy a első két karakter a titkosított
string, mint itt -
50ZPJ és így tovább -
Az első két karakter küld nekünk a só, hogy használták
a kriptában funkciót.
>> És itt, azt látjuk, hogy a só ha.
Tehát szeretnénk másolni az első két karakterekből só hossza pedig hash
meghatározni, mint kettő.
Meg kell másolni az első két karakter ebbe a tömb, só.
Figyeljük meg, hogy szükségünk van só hossza plusz egy, mert még mindig szükség van a null
terminátor végén mi sót.
>> Ezután fogjuk bejelenteni tömb, vendég, a méret max hossza plusz
egy, ahol a maximális hossza hash meghatározott nyolc, mivel a maximális jelszó
nyolc karakter hosszú.
És fogjuk használni ezt hajtogat az összes lehetséges karakterek, amelyek
érvényes jelszavakat.
Tehát, ha az érvényes karakterek a jelszót voltak csak a, b, és c, akkor
mi lenne iterálása a, b, c, AA, BA, CA, és így tovább, mindaddig, amíg
megkapjuk, hogy cccccccc -
nyolc c években.
>> És ha még nem le érvényes jelszót, akkor meg kell mondani, hogy a
titkosított szöveg nem volt érvényes kezdeni.
Tehát most, hogy elérjük ezt a közben 1 hurok.
Figyeljük meg, hogy azt jelenti, hogy végtelen ciklusba.
>> Figyeljük nincs break utasítással belül ez a végtelen ciklus.
Csak vissza nyilatkozatok.
Tehát soha nem számítunk hogy kilépjen a ciklusból.
Csak várják, hogy kilép a programból.
Adtam ezt print nyilatkozatot a Ráadásul a hurok, hogy csak ki kell nyomtatni
amit a jelenlegi kitalálni mi a jelszó.
>> Nos, mi ez a loop csinálsz?
Ez az összes hurok lehetséges karakterek amely érvényes jelszavakat.
Az első dolog, amit csinálunk az hogy a jelenlegi kitalálni, amit a
jelszó.
Elvisszük a só, hogy megragadta a titkosított szöveg, és mi
majd, hogy titkosítja a találgatás.
Ez ad nekünk egy titkosított hiszem, amely fogunk összehasonlítani
A titkosított szöveg, hogy a felhasználó lépett be a parancssorba.
>> Amennyiben azok azonosak, amely esetben sztring hasonló nullát fog visszaadni, ha
ők ugyanaz, akkor gondolom az volt a jelszót generált a titkosított
string, ebben az esetben tudunk nyomtatni hogy mivel a jelszavát, majd vissza.
De ha nem volt azonos, hogy a azt hiszem mi helytelen.
>> És szeretnénk megismételni a a következő érvényes hiszem.
Szóval, ez az, amit ez a közben hurok akar csinálni.
Ez lesz megismételni a kitalálni a következő érvényes hiszem.
Figyeljük meg, hogy amikor azt mondjuk, hogy a adott karakter a mi hiszem van
elérte a max szimbólum, ami itt a hash definíció szerint a tilde, hiszen
ez a legnagyobb érték ASCII karakter hogy a felhasználó megadhatja a
billentyűzet, ha a karakter eléri a max szimbólum, akkor szeretnénk küldeni
vissza a minimum szimbólum, amely egy tér, ismét a legalacsonyabb ASCII
érték szimbólum, a felhasználó adjon meg a billentyűzetet.
>> Így fogjuk beállítani, hogy az A minimum szimbólum.
És akkor fogunk menni hogy a következő karakter.
Hogy vannak a találgatások fog hajtogat?
Nos, ha az érvényes karakterek a, b, és c, majd ha kezdődött,
akkor az hajtogat, hogy b, akkor az hajtogat a c.
c mi max szimbólum, úgyhogy majd meg c vissza, a minimum szimbólum.
És aztán hajtogat index a következő karakterre.
>> Tehát, ha az eredeti becslés volt c, a következő karakter lesz a null
terminátor.
Itt lent, észre, hogy ha a karakter hogy most szeretnénk
növekmény a null terminátor, akkor fogjuk beállítani, hogy a
minimum szimbólum.
Tehát, ha a becslés volt c, akkor a új hiszem lesz aa.
És, ha az eredeti becslés volt cccc, akkor az új becslés
lesz aaaaa.
>> Tehát, ha elérjük a maximális string- egy adott hosszúságú, akkor vagyunk
fog végrehajtani a legkisebb húr A következő hosszú, amely
csak minden karakter a A minimum szimbólum.
Nos, mi ezt az ellenőrzést csinál itt?
Nos, ha index költözött a nyolcadik karaktert kilenc karakter -
így hozzá nyolc c-as korábbi hiszem -
akkor index fog összpontosítani utolsó null terminátor a mi kitalálni
tömb, ami nem azt jelenti, hogy ténylegesen használható a jelszót.
>> Tehát, ha arra törekszünk, hogy az utolsó null terminátor, akkor nem találtak
jelszó, ami érvényes a mindössze nyolc karakter, ami azt jelenti, nincs
érvényes jelszót, amely titkosítja az adott string.
És meg kell nyomtatni, hogy a mondás nem találtunk érvényes
jelszót, és vissza.
Tehát ez a while ciklus fog hajtogat az összes lehetséges szálakat.
>> Ha talál ilyet, amely titkosítja a várható titkosított string, akkor az
vissza a jelszót.
És ez nem talál semmit, akkor vissza fog térni, hogy a nyomtatás
nem találnak semmit.
Most veszi észre, hogy az iterációt minden lehetséges karakterek valószínűleg fog
eltarthat egy ideig.
Nézzük valójában hogyan hosszú, hogy tart.
>> Legyen crack.
Nos, hoppá - azt mondja, meghatározatlan hivatkozás a kriptába.
Úgy emlékszem, hogy a p állítja spec és is a man oldalt a kriptát, hogy
kell kapcsolni a kriptában.
Most, az alapértelmezett make parancsot nem tudja, hogy
szeretné használni ezt a funkciót.
>> Szóval másolni a kliens parancs és add hozzá az, hogy a végén
azt, amely összeköti kripta.
Most, hogy lefordítja.
Úgyhogy fut repedés egy adott titkosított szöveg -
így császáré.
Szóval ez elég gyors.
>> Figyeljük meg, hogy ez a vége 13.
Nos, Caesar titkosított jelszó történetesen 13.
Szóval próbálkozhat másik jelszó megadásával.
Vessünk Hirschhorn titkosított jelszót, majd próbálja csinos ezt.
>> Így észre mi már el három karakter.
És mi az iterációt minden lehetséges három karakterláncok.
Ez azt jelenti, hogy már befejezte iterációt minden lehetséges egy-
két karakterláncok.
Most úgy néz ki, ez lesz a egy ideig, amíg el nem érjük a
négy karakterláncok.
Ez eltarthat egy pár percig.
>> Nem fog egy pár percig.
Mi vagyunk a négy karakterláncokat.
De most, azt kell megismételni az összes lehetséges négy karaktersorozatok, amely
ez eltarthat talán 10 percig.
És amikor elérjük az öt karakter vonósok, meg kell halad-hatunk az összes
azoknak, amelyek egy pár órát.
És meg kell halad-hatunk az összes lehetséges hat karakterláncok, amely
Lehet, hogy egy pár nap, és így tovább.
>> Így lehet, hogy egy potenciálisan nagyon hosszú ideje, hogy az összes lehetséges hajtogat
nyolc karakteres és kevesebb szálakat.
Tehát észre, hogy ez nem feltétlenül a nagyon hatékony algoritmust találni
egy jelszót.
Azt gondolhatnánk, hogy ott jobb módon.
Például a jelszó ZYX! 32ab valószínűleg nem túl gyakori jelszót,
míg a jelszó 12345 valószínűleg sokkal gyakoribb.
>> Tehát az egyik módja, hogy megpróbáljuk megtalálni a jelszót gyorsabban, hogy csak nézni
A jelszavak gyakrabban.
Így például, próbáljuk olvasni szavakat egy szótárt, és próbálja meg az összes
ezek a szavak, mint a mi jelszó találgatások.
Most talán egy jelszó nem ilyen egyszerű.
Lehet, hogy a felhasználó kissé okos és próbálja mellékelik a szám
a végén egy szó.
>> Így talán a jelszó volt password1.
Így próbálja az iterációt a szavakat A szótár egy
végéhez is.
És akkor talán elvégzése után, hogy akkor fűzése két végére is.
>> Vagy lehet, hogy a felhasználó megpróbálja még okosabb, és azt akarják, hogy
jelszó, hogy "hacker", de ők majd cserélje le az összes e a
a hármas.
Így meg tudná csinálni ezt is.
Iterációkhoz minden szót a szótárban de cserélni karakterek
néz ki, mint számok azok a számok.
>> Tehát ilyen módon, akkor lehet elkapni még jelszavakat, hogy elég gyakori.
De a végén, csak úgy lehet elfog az összes jelszót, hogy brute
kényszeríteni hajtogat az összes lehetséges karakterek.
Így a végén, akkor nem kell megismételni az összes húrok egy karakterrel
nyolc karakter, ami egy nagyon hosszú idő, de meg kell csinálni.
>> A nevem Rob Bowden.
És ez Crack.