[Muziciranja] DAVID J. Malan: U redu. To je CS50, i to je kraj četiri tjedna. A jedna od tema danas je da digitalne forenzike, umjetnost oporavlja podatke. I doista, iako ti si u sredini upravo sada mira na tri i bijeg, sljedeći tjedan, Fokus će biti na upravo to područje. Tako je jedan od najboljih poslova koje sam ikada imao je još u srednjoj školi, kad sam radio za lokalno Middlesex County okružnog tužitelja ured, rade forenzika raditi. Dakle, u suštini, Massachusetts Državna policija, na prigodu, kada se radi o slučajevima bi dovesti u stvarima kao što tvrde diskove i diskete i memorijske kartice i slično. I oni će ih predati meni i mojim mentorom, a naš je cilj bio pronaći dokaze, ako je bilo, na tim medijima. Sada, možda ste vidjeli bljeskovi ovoga svijeta forenzike u medijima, serije i filmove. No, posao koji sam imao, i pretpostavljam da je svijet, nije baš kao što bi ga vidjeti. Uzmimo pogled na ono što vjerojatno ste vidjeli. [Video reprodukciju] -OK. Sada, neka je dobiti dobar pogled na vas. [Muziciranja] -Stanite. Trčanje to natrag. Čekaj malo. Idi u pravu. -Tamo. Zaustavite. Full-screen. -OK. Zaustavite. -Tighten Se na to, hoćeš li? -Vector In na koji momak po stražnjem kotaču. -Zoom U upravo ovdje na ovom mjestu. -S Pravom opremom, slike se mogu uvećati i izoštriti. Što je to? -To Poboljšanja programa. Možeš li jasno da se bilo? Ne znam. Idemo ga poboljšati. -Enhance Odjeljak A6. Ja poboljšane detalje, i-- -Mislim Ima dovoljno kako bi se poboljšala. Pustite ga da se moj zaslon. -Ja Pojačan odraz u njezinim očima. -Učinimo Pokrenuti to kroz Video pojašnjenje. -Edgar, Možete poboljšati to? -Hang Dalje. -Ja Radili na tom promišljanju. Tamo je nečiji odraz. -Reflection. Tamo je odraz čovjekovog lica. -The Odraz! Tamo je odraz. -Zoom U na ogledalu. Možete vidjeti svoj odraz. Možeš li poboljšati sliku odavde? Možeš li ga poboljšati? Možeš li ga poboljšati? Mogu se poboljšala ovo? Možeš li ga poboljšati? -Drži Na sekundu. Ja ću se poboljšala. -Zoom U na vrata. -Times 10. -Zoom. Pokret u. -Više. Čekaj, stani. Prestani. -Pause Ga. -Rotate Nam 75 stupnjeva oko vertikalne, molim te. Prestani. Vratite se u dijelu oko vrata opet. -Razumijem Sliku pojačivač koji može bitmapa? Možda možemo koristiti Pradeep Singh Metoda vidjeti u prozore. -The Softver je stanje u umjetnosti. -The Svojstvena je isključen. -S Prava Kombinacija algorithms-- Krenuo je uzeti osvjetljenje algoritama na sljedeću razinu, i mogu ih koristiti za unaprijediti ovu fotografiju. -Lock Na i povećanje z-osi. -Enhance. Poboljšajte. -Enhance. -Freeze I unaprijediti. [END video reprodukciju] DAVID J. Malan: Dakle, to su sve riječi, ali oni nisu bili koristi u rečenicama ispravno. I doista u budućnosti, u bilo koje vrijeme, molim vas, ne čujete da netko kaže riječ, "Poboljšati", cerekanje samo malo. Jer kada bi pokušati povećati, Na primjer, to je ono što se događa. Dakle, ovdje je prekrasna slika. Ovo je CS50 vlastiti Daven. I pretpostavimo da smo htjeli usredotočiti se na tren u svom oku, ili odraz negativac koji je očito zarobljeni od strane sigurnosnih kamera. To je ono što se događa kada zumirate sliku koja ima samo ograničen broj bitova povezane s njom. To je ono što će doći. I doista, u Daven oku je, ali četiri, možda šest piksela kako sastaviti točno što je svjetlucave postoji. Dakle, problem je postavio četiri će u konačnici imati što istraživati ​​ovaj svijet, osobito po prirodi nečega zovemo file I / O, gdje I / O je samo fancy način rekavši ulaz i izlaz. Dakle, do sada, sve interakcije smo imali s računalom bili su velikim dijelom sa svojim tipkovnica i zaslon, ali ne toliko s tvrdog diska, ili spremanja datoteka pored onih koje sami napisati. Vaši programi do sada imaju ne stvaraju, i štedi, i ažuriranje vlastite datoteke. Pa, što je datoteka? Pa, nešto poput JPEG. To je slika koju bi mogao imate ili uploadati na Facebook, ili vidjeti bilo gdje na webu. Doista, da smo samo fotografiju Pila od Daven je JPEG. I što je zanimljivo O datoteka kao što su JPEG da se mogu identificirati, obično, po određenim obrascima bitova. Drugim riječima, što je to što razlikuje od JPEG GIF iz PING iz Riječi Dokument iz Excel datoteke? Pa, to je samo drugačiji obrasci bitova. I oni su različiti obrasci obično na početku tih datoteka. Tako da kada vaše računalo otvara Word doc, ili kada računalo otvara JPEG, izgleda obično na Prvih nekoliko bitova u datoteci. A ako se prepoznaje uzorak, ona kaže, oh, ovo je slika. Dopustite mi da ga prikazati na korisnik kao grafičkim. Ili, oh, ovo izgleda kao Word doc. Dopustite mi da to pokazati na korisnika kao esej. Tako, primjerice, JPEG, ispada, su prilično sofisticiran ispod haube. No, prva tri bajta u većini drugih JPEG početi s ova tri broja. Dakle bajt nula, jedan, a dva su, u najviše svaki JPEG, 255, zatim broj 216, a zatim broj 255. A što ćete biti u mogućnosti početi raditi idući tjedan je zapravo viri ispod napa datoteka kao što su JPEG i kao bitmap datoteke, i gledajući ono što je uvijek bio tamo dokle kao što ste bili pomoću računala. Ali što je tu je nije tipično pisani kao decimalnih brojeva kao što je ovaj. Računalni znanstvenici ne imaju tendenciju da se govori u decimale. Oni zapravo ne govori u binarnom. Obično, kada želimo izraziti brojevima, mi zapravo koristiti heksadecimalni, koje mogu sjetiti od, recimo, Problem Set Jedan, koji je izazvao što da mislim o drugom sustavu. Mi, naravno, upoznati s decimale, nula do devet. Razgovarali smo o binarnom. A mi zapravo nemamo koristiti toliko ovdje na van, jer računala će koristiti. No, programeri će vrlo često, ali ne uvijek, koristiti heksadecimalni, što samo znači imate 16 slova u svom pismu, za razliku od dva ili 10. Pa kako se računati na veći od devet u heksadecimalnom? Polaska 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , B, C, D, E, F, samo po konvenciji. No, ono što je ključno je da svaki od tih je jedan simbol. Nema 10. Nema 11, sam po sebi, jer svaki vaših brojki, baš kao u decimale i baš kao u binarnom, samo treba biti jedan znak, po konvenciji. Pa da onda je abeceda imamo na raspolaganju za heksadecimalni. Dakle, što to JPEG izgledati ako vas bilo bi napisati tih prvih tri Ne bajtova kao decimale, ali, Na primjer, kao što je heksadecimalnom? A zašto je hex čak sve to korisno? Pa, brzi pogled na primjer. Dakle, ako sam napisati bitove koji predstavljaju ove decimale numbers-- to bi moglo biti malo zahrđao Sada od nekoliko tjedana vratio, ali lijeva i pravi su prilično lako. 255 bio je najveći broj smo moglo predstavljati s osam bitova. To je sve one. Dakle, jedina koja je blago Zanimljivo je srednji. A ako ste vrsta napraviti iz matematike, što će zaključiti da je, štoviše, da je uzorak od jednog i nule predstavlja 216. Pa neka je samo propisuje za Sada da su točne. Ali zašto je to zanimljivo? Pa, bajt, naravno, je osam bitova. I ispada da ako mislite od bajt kao dva komada četiri bita, kao što je ovaj. Dopustite mi samo dodati neki prostor. Dakle, prije, poslije. Upravo sam dodao malo bijelog prostora Radi vizualizacije je ovdje. Kako bismo mogli sada predstavlja u, recimo, heksadecimalni svaki quad bitova, Svaki set od četiri bita? Tako, primjerice, na lijevoj Sada imamo 1111 u binarnom. Što je taj broj u decimale, ako to učinite iz matematike? Imate one mjesto, dvojke mjesto, četveronoške mjesto, a osmice mjesto. PUBLIKA: 15. DAVID J. Malan: To je 15. Dakle, ako nam je činiti osam plus četiri plus dva plus jedan, dobivamo 15. Tako sam mogao zapisati 15 u nastavku 1111, ali cijela stvar ovdje je heksadecimalni, ne decimala. Dakle, umjesto zapisivao 15, 1-5, Ja ću napisati da je u hex, što ako mislite vratiti, ako imate nula kroz F, što je 15 će biti? PUBLIKA: f. DAVID J. Malan: Tako ispada da je f. A možete raditi da se govoreći: Pa, ako je 10, onda u redu, f 15. Dakle, doista, možemo prepisati taj isti skup brojeva kao f f. A onda, ako ćemo napraviti malo matematike, ćemo zaključiti da je to d. Osam je prilično jednostavan, jer mi ima jedan u Mau mjestu. A onda, imamo par više F F-a. Dakle, ono što ljudi imaju tendenciju da se dogovorno kada koriste heksadecimalni je oni samo pisati ovo malo više jezgrovito, riješiti većinu tog bijelog prostora. I samo da se super jasno čitatelji da je ovo heksadecimalni, jednostavna konvencija među ljudi je li pisati nulu x, koja nema drugo značenje nego vizualni identifikator, Ovdje dolazi hex broj. A onda, stavite dvije znamenke, f F je u ovom slučaju, tada D, zatim F F. Dakle, ne duljimo, heksadecimalni baš sklon da su korisni, jer je svaki od njegovog znamenki, nula do f, savršeno linije s uzorkom od četiri bita. Dakle, ako imate dva heksadecimalni znamenke, nula kroz F, opet i opet, koji vam daje savršeno osam bitova ili jedan bajt. Dakle, to je razlog zašto je sklon biti konvencionalno korisna. Nema intelektualnog Sadržaj stvarno iza toga, osim njegove stvarne korisnosti. Sada JPEG nisu samo datoteku formata za grafiku. Možda ćete se sjetiti da postoje datoteka kao što su to u svijetu, barem od nekoliko godina unatrag. Dakle, ovo je zapravo instaliran u sustavu Windows XP na milijune računala diljem svijeta. A to je bitmap datoteka, BMP. I bitmap datoteka, kao što ćete vidjeti sljedeći tjedan, samo znači uzorak točaka, piksela što oni nazivaju, preslikati na komadiće, stvarno. Dakle, ono što je zanimljivo, iako, o ovom formatu, BMP, je da je ispod haube, to ima više od samo tri bajta da sastavite svoje zaglavlje, tako govoriti, prvih nekoliko ugriza. To zapravo izgleda malo komplicirano na prvi pogled. A to ćete vidjeti u P setu. I sve nešto Posebno se to sada nije toliko važno, jer samo činjenice da na početku svakog bitmapi datoteka, grafičkom obliku, postoji cijela hrpa brojeva. Sada Microsoft, Autor ovog formata, sklon nazvati onima Stvari nisu ori- i znakova i pluta, ali riječi i D riječi i čezne i bajtova. Dakle, to su samo različite vrste podataka. Oni su različita imena za istu stvar. No, vidjet ćete da je u P postavio četiri. Ali to je samo reći da ako čovjeka dvaput klikne neki bmp na njegov ili njezin hard disk, a prozor do njega ili nju da se slika pokazuje, što se dogodilo, jer je operativni Sustav vjerojatno primijetili, ne samo Proširenje .BMP datoteke u nazivu datoteke, ali i činjenica da postoji neki Konvencija za uzorak bitova na samom početku tog bitmap datoteku. Ali neka se sada usredotočiti na kao komplicirana datoteke, ali umjesto na takvo nešto. Recimo ovdje u gedit, ja samo početak programa koji je prilično jednostavna. Imam ih i uključuje do vrha. Sada imam # include "structs.h", ali Vratit ću se na to u trenutku. No, to je korisno za sada. Dakle, ovo je program koje će provoditi Poput matičara baze podataka. Dakle, baza podataka o studentima, a svaki student na svijetu ima ime i kuću, a vjerojatno i neki druge stvari, ali ćemo ga zadržati jednostavan. Svaki student ima ime i kuću. Dakle, ako sam htio napisati Program čiji je cilj u životu Upravo se ponoviti od usredotočiti na do tri, ako ima tri učenika na Sveučilištu Harvard. A ja samo želim da se, koristeći GetString, ime i kuća svakog studenta, i onda samo ispisati one out. To je nešto poput tjedna Jedan, dva tjedna stvari sada, gdje sam samo želim za petlje ili nešto slično. I želim pozvati GetString malo puta, a zatim ispisati f nekoliko puta. Pa kako bih mogao to učiniti, ipak, kada su i ime i kuću uključeni su za svakog studenta? Tako je moj prvi instinkt možda biti nešto poput ovoga. Sam prvi put moglo bi se reći, dobro, daj mi, kažu, niz žice pod nazivom imena. A ja ne želim hardcode trojica ovdje. Što želim staviti tamo? Dakle STUDENTI, jer to je samo konstantna proglasio na vrhu, Upravo tako ja ne moram hardcode tri na više mjesta. Na taj način, mogu ga promijeniti jedno mjesto, i to utječe na promjenu posvuda. A onda, ja mogu učiniti Niz kuće studentima. A sada, ja mogu učiniti nešto slično za (int i = 0; i