[Přehrávání hudby] David J. Malan: Dobře. To je CS50, a to je na konci týdne čtyři. A jedním z témat dnešní je, že digitální forenzní, umění obnovovat informace. A skutečně, i když jste ve středu teď míru na třech a Breakout, příští týden, Důraz bude kladen na Právě tato doména. Takže jeden z nejlepších míst, co jsem kdy měl, byl zpátky v postgraduálním studiu, když jsem pracoval pro místní Middlesex County okresní prokurátor je kancelář, dělá forenzní práce. Takže v podstatě, Massachusetts Státní policie, příležitostně, Při práci na případech by přinést věci, jako jsou pevné disky a diskety a paměťové karty a podobně. A oni by jim ruce mně a mým učitelem, a naším cílem bylo najít důkazy, v případě, že se některý, na těchto médiích. Nyní, možná jste viděli záblesky z tohoto světa forenzní v médiích, TV a filmy. Ale práce, kterou jsem měl, a Troufám si tvrdit, že svět, není tak docela, jako byste ho vidět. Pojďme se podívat na to, co pravděpodobně jste viděli. [PŘEHRÁVÁNÍ] -OK. Nyní pojďme dobré podívat se na vás. [Přehrávání hudby] Vydrž to. Spustit to zpátky. -Počkejte Minutu. Jděte vpravo. -Tady. Freeze to. -Full Obrazovkou. -OK. Freeze to. Utáhnout se na to, že jo? -vector V na to člověk od zadního kola. -zvětšení Tady na tomto místě. -s Pravé zařízení, Obraz lze zvětšit a brousit. Co je to? -To Vylepšení programu. Umíš jasné, že se nějaké? Já nevím. Pojďme zvýšení. -Enhance § A6. Zvýšila jsem detail, a-- Já myslím, že je dost zlepšit. Uvolněte jej na mé obrazovce. Já lepší odraz v očích. Nech to běžet tak prostřednictvím Vylepšení videa. -Edgar, Můžete zlepšit to? -Hang Na. -Byl Jsem pracoval na této úvahy. -Je Něčí odraz. -Reflection. -Je Odraz obličeje. -The Reflexe! -Je Odraz. -zvětšení Na zrcadlo. Můžete vidět odraz. Umíš zlepšit obraz odsud? Umíš to zlepšit? Umíš to zlepšit? -Můžeme Zlepšit to? Umíš to zlepšit? Vydrž chvilku. Budu zvýšit. -zvětšení Na dveře. -krát 10. -zoom. -Move V. Víc. Počkat, zastavit. Přestaň. -Pause To. -Rotate Nás 75 stupňů kolem vertikální, prosím. Přestaň. Vraťte se do části o dveřím. Rozumím obrazový zesilovač, který může rastrový obrázek? -Možná Můžeme použít Pradeep Singh způsob, jak vidět do oken. -The Software je nejmodernější. -The Vlastní číslo je vypnutý. -S Doprava Kombinace algorithms-- -Je Přijatá na osvětlení algoritmy na další úroveň, a mohu je použít k zvýšit tuto fotografii. -Lock Dál a rozšířit osy z. -Enhance. Vylepšit. -Enhance. -Freeze A vylepšit. [END VIDEOPŘEHRÁVÁNÍ] David J. Malan: Tak to jsou všechna slova, ale nebyly používá ve větách správně. A skutečně v budoucnu, kdykoliv, prosím, uslyšíte někoho říkat slovo, "Posílit," zasmál jen trochu. Vzhledem k tomu, když se pokusíte zvýšit, Například, to je to, co se stane. Tak tady je nádherná fotka. To je CS50 vlastní Daven. A předpokládám, že bychom chtěli zaměřit na jiskrou v oku, nebo odraz špatný chlap, který byl jasně zachycen bezpečnostní kamerou. To je to, co se stane, když můžete přiblížit na obrazu, který má pouze konečný počet bitů, s ním spojené. To je to, co byste si. A skutečně, v Daven oka je ale čtyři, možná šest bodů že skládat přesně to, co tam mihotají. Takže problém Set Four bude mít v konečném důsledku prozkoumat tento svět, a to zejména podle povahy něco nazýváme soubor I / O, kde I / O je jen ozdobný způsob, jak říká, vstup a výstup. Takže dosud, všechny interakce jsme měli s počítačem byly do značné míry s vaším klávesnice a displej, ale ne tolik, s pevným diskem, nebo ukládání souborů mimo ty, které sami napsat. Vaše programy tak daleko mají není vytváření a ukládání, a aktualizovat své vlastní soubory. No, co je to soubor? No, něco jako JPEG. To je obrázek, který by mohl mají nebo nahrát na Facebook, nebo vidět nikde na webu. Ve skutečnosti, že fotografie jsme právě pila Daven byl JPEG. A co je zajímavé, o souborů, jako je JPEG je, že mohou být identifikovány, typicky, určitými vzory bitů. Jinými slovy, to, co je možné, že rozlišuje JPEG z GIF od PING z Wordu Dokument ze souboru aplikace Excel? No, je to prostě jiný vzory bitů. A ty různé vzory obvykle na začátku těchto souborů. Takže když váš počítač otevře Word doc, nebo pokud počítač otevře JPEG, to vypadá typicky Prvních několik bitů v souboru. A pokud to uzná vzor, říká, oh, to je obraz. Dovolte mi, abych ji pro uživatel jako grafiku. Nebo, oh, tohle vypadá jako Word doc. Dovolte mi ukázat uživateli jako esej. Tak například, JPEG, Ukazuje se, že jsou poměrně sofistikované pod kapotou. Ale první tři bajty nejvíce každý Kdo JPEG s těmito třemi čísly. Tak bajt nula, jedna, a dvě, v Nejvíce každý JPEG, 255, pak číslo 216, pak číslo 255. A to, co budete moci začít dělat příští týden je vlastně strkat pod kapuce souborů jako JPEG a jako bitmapové soubory, a viděl Co je tam vždycky tak dlouho, jak jste byli pomocí počítače. Ale to, co tam není obvykle psaný jako desetinná čísla, jako je tento. Počítačoví odborníci ne mají tendenci mluvit v desítkové soustavě. Oni opravdu mluví v binárním formátu. Typicky, když chceme vyjádřit čísla, jsme vlastně používat hexadecimální, které mohou vyvolat z, řekněme, Problem Set Jeden, který napadal můžete přemýšlet o jiném systému. My, samozřejmě, jsou obeznámeni s desetinné číslo, nula až devět. Mluvili jsme o binární. A my opravdu nemáme používat, že mnoho zde ven, protože počítače se použít. Ale programátoři budou velmi často, ale ne vždy, používat hexadecimální, což prostě znamená, budete mít 16 znaků do abecedy, na rozdíl od dvou nebo 10. Tak jak se vám počítat do vyšší než devět v hexadecimální soustavě? Ty jít 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, jen konvencí. Ale co je klíčové je, že každý z nich je jeden symbol. Neexistuje žádná 10. Neexistuje žádná 11, sama o sobě, protože každý vaše číslic, stejně jako v desítkové soustavě a stejně jako v binární, by jen být jediný znak, konvencí. Tak to je tedy abeceda máme které máme k dispozici na šestnáctkové. Takže co JPEG vypadat, pokud vás měl vypsat ty první tři bajty ne jako desetinné ale například jako hexadecimální? A proč je hex i všechno to užitečné? No, rychlý pohled na příklad. Takže když jsem se vypsat bity, které představují tyto desetinné numbers-- to by mohlo být trochu rezavý nyní od několika týdnů zpět ale levý a pravá jsou docela jednoduché. 255 byl největší počet jsme může představovat s osmi bitů. Bylo to všechny ty. Takže jediný, který je mírně Zajímavé je prostřední. A pokud jste trochu mimo to matematika, budete vyvodit, že skutečně že vzorek z jednoho a nuly představuje 216. Takže řekněme, stanoví pro teď, že to je správné. Ale proč je to zajímavé? No, byte, samozřejmě, je osm bitů. A ukázalo se, že pokud si myslíte, z bytu jako dva kusy čtyř bitů, takhle. Dovolte mi přidat trochu prostoru. Tak před, po. Právě jsem přidal nějaké bílé místo Z důvodu zde vizualizaci je. Jak můžeme nyní představují v, řekněme, hexadecimální každý quad bitů, každá sada čtyř bitů? Tak například, v levé Nyní máme 1111 v binární. Co je to číslo v desítkové soustavě, pokud si z matematiky? Máte ones místo, dvojky místo, místo čtyřky a osmičky místo. Diváků: 15. David J. Malan: Je to 15. Takže pokud budeme dělat osm plus čtyři plus dva plus jedna, dostaneme 15. Takže jsem se mohl zapsat 15 pod 1111, ale celý vtip zde je hexadecimální, ne desítkové. Takže místo psaní o 15, 1-5, Chystám se napsat, že v hexadecimálním tvaru, která, pokud si myslíte, že zpět, pokud máte nula až f, co se 15 bude? DIVÁKŮ: f. David J. Malan: Tak to dopadá, že je to f. A můžete na to přišel tím, že říká, No, jestli je 10, pak OK, f je 15. Takže ve skutečnosti, můžeme přepsat tento stejný soubor čísel je f. A pak když to uděláme trochu matematiky, budeme odvodit, že to je d. Osm je docela snadné, protože jsme mít jeden v místě osmičky. A pak máme ještě pár f f je. Takže to, co lidé mají tendenci dělat podle konvence při použití v šestnáctkové soustavě je prostě napsat to trochu stručněji, zbavit většiny z toho prázdného místa. A jen být super jasné čtenáři, že je v šestnáctkové soustavě, jednoduché konvence mezi lidé se píšete nula x, který nemá žádný jiný význam než vizuální identifikátor, tady je hexadecimální číslo. A pak si dal dvě číslice, f f v tomto případě, pak d, pak f f. Tak dlouhý příběh krátký, hexadecimální jen inklinuje , že jsou užitečné, protože každý z jeho číslice, nula až f dokonale linky až se vzorem čtyř bitů. Takže pokud máte dvě hexadecimální číslice, nula až F, znovu a znovu, které vám umožní dokonale Osm bitů nebo jeden bajt. Takže to je důvod, proč má tendenci být konvenčně užitečná. Není k duševnímu Obsah opravdu za to, jiný než jeho skutečné užitečnosti. Nyní JPEG nejsou jedinou formáty souborů pro grafiku. Můžete si připomenout, že existují soubory, jako je to ve světě, alespoň z pár let zpět. Takže to bylo vlastně nainstalován v systému Windows XP na milionech počítačů po celém světě. A to byl soubor bitmapy BMP. A rastrový soubor, jak uvidíte další týden, jen se rozumí vzorek teček, pixelů, jak se jim říká, Mapa na kousky, opravdu. Takže to, co je zajímavé, i když, o tomto formátu, BMP, je že pod kapotou, to má více než jen tři byty které tvoří jeho záhlaví, takže mluvit, prvních pár soust. Ve skutečnosti to vypadá trochu složité na první pohled. A uvidíte to v sadě P. A jak se něco zejména z toho teď není tak důležité, jak jen to, že na začátku každé bitmapy soubor, grafický formát, je tu celá banda čísel. Nyní Microsoft, Autorem tohoto formátu, tendenci volat těm, Věci, které ints a znaky , plave na hladině, ale slova a d slova a touží a byty. Takže jsou to jen různé datové typy. Jsou různé názvy pro stejnou věc. Ale uvidíte, že v P stanovila čtyři. To je ale pouze říci, že pokud je člověk poklepe nějaký soubor BMP na jeho nebo její pevný disk, a otevře se okno se ukazuje mu, že obraz, co se stalo, protože operační Systém pravděpodobně všimli nejen rozšíření .BMP v názvu souboru, ale také skutečnost, že tam je nějaký konvence vzoru bitů na samém počátku tohoto bitmapového souboru. Ale pojďme se zaměřit na takové složité souboru, ale na něco takového. Předpokládám, že tady v gedit, I prostě začátky programu, který je velmi jednoduchý. Mám nějaké zahrnuje až nahoru. Teď mám # include "structs.h", ale Vrátím se k tomu za chvíli. Ale to je užitečné pro teď. Tak tohle je program že se to realizovat jako databáze registrátora. Takže databáze studentů, a každý student ve světě má své jméno a dům a pravděpodobně některé další věci, ale budeme držet to jednoduchý. Každý student má své jméno a domu. Takže když jsem chtěl napsat program, jehož smyslem života právě iterovat od nulu až na tři, v případě, že je tři studenty na Harvardově univerzitě. A chci, aby si pomocí getString, jméno a house každého studenta, a pak už jen vytisknout ty ven. To je něco jako týdne Jeden, týden Dvě věci teď, kde chci jen pro smyčka nebo něco takového. A chci volat getString několik krát, a potom vytiskněte f několikrát. Tak jak bych mohl udělat, i když, když oba jméno a dům jsou zapojeny pro každého studenta? Takže můj první instinkt by mohly být něco takového. Mohl bych nejprve říci, dobře, dej mi, říci, pole řetězců s názvem jména. A nechci zde napevno tři. Co chci, aby tam dal? Takže studenti, protože to je právě konstanta deklarována v horní části, jen tak nemám natvrdo tři na více místech. Tímto způsobem, může se mi to změnit na jednom místě, a to má dopad na změnu všude. A pak, já bych mohl dělat string domy studentů. A teď, mohl bych něco takového for (int i = 0; i