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.