>> ROB BOWDEN: Olen Rob ja Mennään halkeilua.
Joten muistan PSET spec että aiomme olla tarvitsematta käyttää
kryptassa toiminto.
Miehelle sivu, meillä on kaksi hash määritellä _xopensource.
Älä ole huolissasi, miksi meidän täytyy tehdä.
Ja myös hash ovat unistd.h.
>> Joten kun se on pois tieltä, katsotaanpa päästä varsinaisen ohjelman.
Ensimmäinen asia, meidän täytyy tehdä, on varmistaa käyttäjä kirjoittaa voimassa salattu
salasana komentoriviltä.
Muista, että ohjelma on tarkoitus voidaan ajaa kuin piste slash crack, ja
sitten salattu merkkijono.
>> Joten tässä me Varmistamme että argc kaksi, jos haluamme
jatkaa ohjelmaa.
Jos argc ei ole kaksi, se tarkoittaa, että joko käyttäjä ei anna salattu
salasana komentoriviltä, ​​tai ne tuli enemmän kuin vain salattuja
salasanan komentoriviltä, ​​jossa Jos emme tiedä mitä tehdä
komentoriviargumentteja.
>> Joten jos argc oli kaksi, voimme jatkaa.
Ja tässä, me aiomme julistaa muuttuja salattu.
Se on juuri menossa alias alkuperäisen argv1 niin, että koko tämän
ohjelma, meillä ei ole kutsua sitä argv1, jotka sinun täytyy ajatella
mitä se oikeastaan ​​tarkoitti.
>> Joten lopuksi, haluamme vahvistaa, että salattu salasana käyttäjälle
tuli olisi ylipäänsä ollut salattu salasana.
Per mies sivu krypta, salattu salasana on oltava 13
merkkiä pitkä.
Täällä huomaa, että me hash määritelty salata pitkä kuin 13.
Joten me vain varmistaa, että merkkijonon pituus salattu
salasana on 13..
>> Ja jos se ei ole, haluamme Lopeta ohjelma.
Joten kun se on pois tieltä, voimme nyt todella yrittää selvittää, mikä
salasana, joka antoi salattu salasana oli.
Täällä haluamme napata suolaa alkaen salattu salasana.
Muista, per man-sivulta, että kaksi ensimmäistä merkkiä salattu
merkkijono, kuten tässä -
50ZPJ ja niin edelleen -
kaksi ensimmäistä merkkiä antaa meille suola, jota on käytetty
vuonna kryptassa toiminto.
>> Ja tässä näemme, että suola oli ha.
Joten haluamme kopioida kaksi ensimmäistä merkkiä, suola pituus on hash
määritelty kaksi.
Meidän täytyy kopioida kaksi ensimmäistä merkkiä tähän array, suola.
Huomaa, että tarvitsemme suolaa pituus plus yksi, sillä tarvitsemme vielä null
terminaattori lopussa suolasta.
>> Sitten aiomme julistaa tämän array, vieras, kooltaan max pituus plus
yksi, jossa maksimipituus on hash määritelty kahdeksan, koska suurin salasanan
on kahdeksan merkkiä pitkä.
Ja aiomme käyttää tätä kerrata kaikkiin mahdollisiin jouset, jotka voisivat
voimassa salasanoja.
Joten jos voimassa merkkiä salasanan olivat vain a, b ja c,
me toistaa yli, b, c, aa, ba, CA, ja niin edelleen, kunnes
saamme nähdä cccccccc -
kahdeksan C: n.
>> Ja jos meillä ei alas voimassa salasanan, meidän täytyy sanoa, että
salattu merkkijono ei ollut voimassa aluksi.
Joten nyt pääsemme tämän ajan 1 silmukka.
Huomaa, että tarkoittaa se päättymättömään silmukkaan.
>> Huomaa ei ole break-lause sisällä tämän päättymättömään silmukkaan.
On vain palata lausuntoja.
Joten emme koskaan oikeastaan ​​odottaa Poistu silmukka.
Me vain odottaa poistua ohjelmasta.
Olen lisännyt tätä tulosta lausuma Tämän päälle silmukan vain tulostaa
mitä nykyinen arvaus mikä salasana on.
>> Nyt, mitä tämä silmukka tekee?
Se looping kaikkiin mahdollisiin jouset jotka voivat olla voimassa salasanoja.
Ensimmäinen asia, aiomme tehdä, on pidä nykyistä arvata, mitä
salasana on.
Otamme suola että me tarttui salattu merkkijono, ja olemme
menossa salaa arvata.
Tämä antaa meille salattu arvaus, jonka aiomme verrataan
salattu merkkijono, joka käyttäjän tuli komentoriviltä.
>> Jos ne ovat samat, jolloin string verrattavissa palaa nolla, jos
Ne ovat samoja, sitten kai oli salasana, joka syntyy salattu
merkkijono, jolloin voimme tulostaa että meidän salasanan ja palaa.
Mutta jos ne eivät ole samoja, että tarkoittaa meidän arvaus oli virheellinen.
>> Ja haluamme kerrata sen Seuraava voimassa arvaus.
Niin, että mitä tämä taas silmukka yrittää tehdä.
Se tulee toistaa meidän arvaus seuraavaan voimassa arvaus.
Huomaa, että kun sanomme, että erityisluonnetta meidän arvaus on
saavutti max symboli, joka täällä on hash määritellään tilde, koska
se suurin ASCII-arvon merkki että käyttäjä voi syöttää at
näppäimistö, kun merkki saavuttaa max symboli, niin haluamme lähettää
takaisin vähintään symboli, joka on tila, jälleen pienin ASCII
arvon symboli, joka käyttäjä voi kirjoita näppäimistöllä.
>> Joten aiomme asettaa, että välttämättömään symboli.
Ja sitten me aiomme mennä seuraavaan luonnetta.
Joten miten on meidän arvauksia menossa kerrata?
No, jos voimassa merkit ovat a, b, ja c, jos aloitimme,
se tulee kerrata ja b, se tulee kerrata-c.
c on meidän max symboli, niin me asetetaan c takaisin, vähintään symboli.
Ja sitten me kerrata indeksi seuraavaan merkkiin.
>> Joten jos alkuperäinen arvaus oli c, seuraava merkki tulee olemaan null
terminaattori.
Täällä, huomaa, että jos merkki että haluamme nyt
lisäys oli null terminaattori, Sitten aiomme asettaa sen
vähintään symboli.
Joten jos arvaus oli c, niin meidän Uusi arvaus tulee olemaan aa.
Ja jos meidän alkuperäinen arvaus oli cccc, sitten uusi arvaus
tulee olemaan aaaaa.
>> Joten aina kun pääsemme suurin merkkijono tietyn pituuden, niin me olemme
aikoo toteuttaa mahdollisimman pieneksi merkkijono Seuraavan pituus, joka tulee
vain olla kaikkien merkkien vähintään symboli.
Nyt, mitä tämä tarkistus tekee täällä?
No, jos indeksi siirtyi kahdeksas merkin yhdeksän merkin -
joten lisäämme kahdeksan c luvulla Meidän edellinen arvata -
sitten indeksi on menossa keskittyä viime null terminaattori meidän arvaus
array, joka ei ole tarkoitettu itse käyttää meidän salasanaa.
>> Joten jos olemme keskittyneet että viime null terminaattori, niin emme ole löytäneet
salasanan, joka on voimassa käyttämällä vain kahdeksan merkkiä, mikä tarkoittaa, ettei
kelvollinen salasana, joka salaa on annettu merkkijono.
Ja meidän täytyy tulostaa, että sanonta emme löytäneet voimassa
salasanan, ja palata.
Joten tämä kun silmukka on menossa kerrata kaikkiin mahdollisiin jouset.
>> Jos se löytää joka salaa sen odotetaan salattu merkkijono, se tulee
palata, että salasanan.
Ja se ei löydä mitään, niin se palaa, tulostaa se
ei löytänyt mitään.
Nyt, huomaa, että iteroimalla kaikkien mahdollista jouset on todennäköisesti menossa
kestää jonkin aikaa.
Katsotaanpa itse nähdä, miten pitkään, että kestää.
>> Tehdään halki.
No, hups - se sanoo määrittelemätön viittaus kryptassa.
Muista siis, että p asettaa spec ja myös man-sivulta kryptassa, että me
täytyy yhdistettäisiin kryptassa.
Nyt oletuksena tehdä komennolla ei tiedä, että olet
halua käyttää tätä toimintoa.
>> Joten kopioida tämän asiakkaan komento ja vain lisätä loppuun
se, joka yhdistää krypta.
Nyt se kokoaa.
Joten ajaa halki tietyllä salattu merkkijono -
niin Caesarin.
Joten se oli melko nopeasti.
>> Huomaa, että tämä päättyi 13.
No, keisarin salattu salasana sattuu olemaan 13.
Joten yritä muuta salasanaa.
Otetaanpa Hirschhorn n salattu salasana ja yritä halkeilua että.
>> Joten huomaat olemme jo saavuttaneet kolme merkkiä.
Ja me iteroimalla kaikkiin mahdollisiin kolmen merkkijonot.
Se tarkoittaa, että jo valmiiksi iteroimalla kaikkiin mahdollisiin yksi ja
kaksi merkkijonoa.
Nyt näyttää siltä, ​​että tämä tulee kestää jonkin aikaa ennen kuin pääsemme
neljä-merkkijonojen.
Se saattaa kestää pari minuuttia.
>> Se ei ota pari minuuttia.
Olemme neljän merkkijonojen.
Mutta nyt meidän täytyy kerrata kaikkia mahdollista, neljä-merkkijonojen, joka
että saattaa kestää ehkä 10 minuuttia.
Ja sitten kun pääsemme viiden merkin jouset, meidän täytyy kerrata kaikkia
niistä, jotka voivat kestää pari tuntia.
Ja meidän täytyy kerrata kaikkia mahdollisia kuuden merkkijonot, jotka
saattaa kestää pari päivää ja niin edelleen.
>> Joten se voisi olla erittäin pitkä aika kerrata kaikkiin mahdollisiin
kahdeksan merkin ja vähemmän jousille.
Niin huomaa, että tämä ei välttämättä erittäin tehokas algoritmi löytää
salasanan.
Voisi ajatella, että siellä olemassa parempia tapoja.
Esimerkiksi salasana zyx! 32ab luultavasti ei ole kovin yleinen salasanan,
taas salasanan 12345 luultavasti paljon yleisempää.
>> Joten yksi tapa yrittää löytää salasanan nopeammin on vain katsoa
klo salasanoja, jotka ovat yleisempiä.
Niinpä esimerkiksi, voimme yrittää lukea sanoja alkaen sanakirja ja kokeilla kaikkia
nämä sanat meidän salasanan arvauksia.
Nyt, ehkä salasanan ei ole näin yksinkertainen.
Ehkä käyttäjä oli jonkin verran fiksu ja kokeile lisätä numeron
sanan lopussa.
>> Joten ehkä niiden salasana oli password1.
Joten voit kokeilla iteroimalla kaikkia sanoja in sanakirja yhden
liitteenä lopussa.
Ja sitten ehkä kun tekee, että sinun liittää kaksi lopussa.
>> Tai ehkä käyttäjä yrittää olla jopa viisaampi, ja he haluavat
salasana on "hakkeri", mutta ne ovat aikoo korvata kaikki E: n
kanssa kolmosta.
Joten voi tehdä tämän myös.
Toistaa kaikkia sanoja, mutta vaihda merkkejä
näyttää numerot ne numerot.
>> Joten tällä tavalla, saatat saalis vieläkin salasanoja, jotka ovat melko yleisiä.
Mutta loppujen lopuksi, ainoa tapa tallentaa kaikki salasanat on raakaa
pakottaa kerrata kaikkia mahdollista jouset.
Joten lopulta, sinun täytyy kerrata kaikkia merkkijonoja yhden merkin
kahdeksan merkkiä, joka voi kestää hyvin pitkään, mutta sinun täytyy tehdä se.
>> Nimeni on Rob Bowden.
Ja tämä on Crack.