[REPRODUCCIÓ DE MÚSICA] DAVID J. Malan: Molt bé. Això és CS50, i això és el cap de setmana quatre. I un dels temes avui és el de la ciència forense digital, l'art de la recuperació de la informació. I, en efecte, tot i que vostè està en el medi en aquests moments de la Pau a Tres i Breakout, la setmana que ve, l'atenció se centrarà en precisament aquest domini. Així que un dels treballs més meravellosos que mai tenia estava de tornada a l'escola de postgrau, quan treballava per al local de Middlesex County District Attorney de oficina, fent els forenses treballen. Així que, essencialment, el Massachusetts Policia de l'Estat, en ocasions, quan es treballa en els casos faria portar coses com discs durs i disquets i targetes de memòria i similars. I se'ls lliurés per a mi i el meu mentor, i el nostre objectiu era trobar proves, si hi havia alguna, en aquests mitjans. Indicis Ara, és possible que hagi vist d'aquest món de la ciència forense en els mitjans de comunicació, la televisió i les pel · lícules. Però el treball que tenia, i m'atreviria a dir que aquest món, no és prou com vostè veurà. Fem una ullada al que el que has vist. [REPRODUCCIÓ DE VÍDEO] -ok. Ara, anem a obtenir un bon cop d'ull. [REPRODUCCIÓ DE MÚSICA] -Mantenir Ella. Corre de tornar. Espera un minut. Anar a la dreta. Hi ha. Congeli això. De pantalla Full. -ok. Congeli això. Endurirà fins en això, oi? -vector En el qual noi per la roda del darrere. -Zoom En aquí en aquest lloc. -Amb L'equip adequat, la imatge es pot ampliar i afilada. Què és això? És un programa de millora. -Pots Clar que qualsevol? No Sé. Anem a millorar-lo. Millorar Secció A6. Vaig augmentar el detall, y-- Crec Hi ha prou per millorar. Deixeu anar a la meva pantalla. -I Va millorar la reflexió en el seu ull. -Anem Executar això a través de millora de vídeo. -Edgar, Pots millorar això? -hang Successivament. -Fa Treballant en aquesta reflexió. Reflexió d'algú -Hi. Reflexió. Hi ha un reflex de la cara de l'home. Reflexió -El! Hi ha una reflexió. -Zoom En el mirall. Es pot veure un reflex. -CAN A millorar la imatge d'aquí? -CAN A potenciar? -CAN A potenciar? -Podem Millorem això? -CAN A potenciar? -Mantenir En un segon. Vaig a Millorar. -Zoom A la porta. -veces 10. -Zoom. -Moure En. -Més. Espera, atura't. -STOP. -PAUSE Ella. Ens -Girar 75 graus al voltant de la vertical, si us plau. -STOP. Tornar a la part sobre la porta de nou. -va Una millora d'imatge de mapa de bits que poden? -Potser Podem utilitzar el Pradeep Singh mètode per veure per les finestres. -El Software és estat de la tècnica. -El Valor propi està apagat. -Amb La dreta combinació de algorithms-- Il · luminació portat de -Ell algoritmes per al següent nivell, i puc utilitzar-los per millorar aquesta fotografia. -lock En engrandir i l'eix z. Millorar. Millorar. Millorar. -Freeze I millorar. [FI REPRODUCCIÓ DE VÍDEO] DAVID J. Malan: Així que aquests són totes les paraules, però no eren usat en oracions correctament. I de fet, en el futur, en qualsevol moment, si us plau, escolti algú dir la paraula, "Millorar" riure una mica. Perquè quan es tracta de millorar, per exemple, això és el que passa. Així que aquí està una foto magnífica. Això és propi de Daven CS50. I suposem que volíem centrar-se en la brillantor en els seus ulls, o el reflex de la dolent que era clarament capturat per la càmera de seguretat. Això és el que passa quan fer zoom en una imatge que té només un nombre finit de bits associats. Això és el que pots aconseguir. I, en efecte, a l'ull de Daven no és més que 4, potser sis píxels que componen exactament el estava brillant allà. Així de problemes Quatre tindrà en última instància explorar aquest món, en particular per la naturalesa d'alguna cosa que anomenem arxiu i / o, si I / O és només una forma elegant de dient d'entrada i sortida. Així fins al moment, totes les interaccions que hem tingut amb un ordinador han estat en gran part amb el seu teclat i la pantalla, però no tant amb el disc dur, o l'estalvi dels arxius més enllà dels quals mateix escriu. Els seus programes fins ara tenen no estat creant, i l'estalvi, i l'actualització dels seus propis arxius. Bé, què és un arxiu? Bé, alguna cosa així com un arxiu JPEG. Aquesta és una imatge que et poden tenir o pujar a Facebook, o veure qualsevol part del web. De fet, aquesta foto que acabem de serra de Daven era un JPEG. I el que és interessant sobre els arxius, com els arxius JPEG és que poden ser identificades, típicament, mitjançant certs patrons de bits. En altres paraules, ¿què és el que distingeix un JPEG des d'un GIF des d'un PING des d'una Paraula document d'un arxiu d'Excel? Bé, és simplement diferent patrons de bits. I aquests patrons són diferents en general en l'inici d'aquests arxius. Així que quan l'equip obre una Paraula doc, o quan un equip s'obre un arxiu JPEG, es veu normalment en la primer diversos bits a l'arxiu. I si es reconeix un patró, que diu, oh, això és una imatge. Permetin-me exhibeixo a l'usuari com un gràfic. O, oh, això s'assembla a un document de Word. Déjame mostrar a l'usuari com un assaig. Així, per exemple, arxius JPEG, Resulta que són bastant sofisticat sota de la caputxa. Però els tres primers bytes en la majoria de cada JPEG començar amb aquests tres nombres. Així byte zero, un, i dos són, en la majoria de cada JPEG, 255, llavors el nombre 216, llavors el nombre 255. I el que podràs per començar a fer la setmana vinent en realitat està ficant sota el capó d'arxius com fitxers JPEG i igual que els arxius de mapa de bits, i veure El que sempre ha estat aquí tot el temps com vostè ha estat utilitzant un ordinador. Però el que hi ha allà no és típicament escrita com nombres decimals com aquest. Els informàtics no fan tendeixen a parlar en decimal. En realitat, no parlen en binari. Normalment, quan volem per expressar nombres, realment fem servir hexadecimal, que vostè pot recordar de, per exemple, de problemes Un, que va desafiar a pensar en un sistema diferent. Nosaltres, per descomptat, estem familiaritzats amb decimals, del zero al nou. Parlem d'binari. I nosaltres realment no tenim d'usar que molt aquí des d'ara, perquè els ordinadors que utilitzaran. Però els programadors ho farà molt sovint, però no sempre, utilitzar hexadecimal, que només significa vostè té 16 lletres en el seu alfabet, en lloc de dos o 10. Llavors, ¿com explicar a un major de nou de cada hexadecimal? Vas 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, només per convenció. Però el que és fonamental és que cada d'ells és un sol símbol. No hi ha 10. No hi ha 11, per se, ja que cada de les seves xifres, igual que en decimal i igual que en el sistema binari, només ha ser un sol caràcter, per convenció. Així que a continuació és l'alfabet que tenim a la nostra disposició per hexadecimal. Així que el que té un aspecte una JPEG com si eren per escriure els tres primers No bytes com decimal, però, per exemple, com hexadecimal? I per què és hexagonal fins i tot tan útil? Bé, una ràpida ullada a un exemple. Així que si jo escric els bits que representar aquests numbers-- decimal això pot resultar una mica rovellat ara des de fa unes setmanes, però el de l'esquerra i la dret són bastant fàcil. 255 era el nombre més gran que podria representar amb vuit bits. Va ser tot uns. Així que l'únic que està lleugerament interessant és el del mig. I si ho fas tipus de la matemàtiques, es dedueix que, de fet, que el patró d'una i zeros representa 216. Així que anem a estipular ara que aquests són correctes. Però per què és interessant? Bé, un byte, per descomptat, és de vuit bits. I resulta que si vostè pensa d'un byte com dos trossos de quatre bits, com aquest. Voldria afegir una mica d'espai. Així que abans, després. Acabo d'afegir una mica d'espai en blanc per l'amor de la visualització aquí. Com podem ara representar a, diguem, hexadecimal cada quad de bits, cada conjunt de quatre bits? Així, per exemple, a l'esquerra ara, tenim 1111 en binari. Quin és aquest nombre en decimal, si ho fa fora de les matemàtiques? Vostè té el lloc de les unitats, el lloc de dos en dos, el lloc de quatre grapes, i el lloc vuits. AUDIÈNCIA: 15. DAVID J. Malan: És 15. Així que si ho fem huit més 4 més dos més un, obtenim 15. Així que podria anotar 15 infra 1111, però el punt aquí és hexadecimal, no decimal. Així que en lloc d'escriure 15, 1-5, Vaig a escriure que en hexadecimal, que si pensa tornar, si vostè té zero a través de f, que 15 serà? AUDIÈNCIA: f. DAVID J. Malan: Així que resulta que de l'f. I vostè pot treballar en això, dient: així, si a és 10, llavors bé, f és de 15. Així que de fet, podríem reescriure Aquest mateix conjunt de nombres com f f. I després, si fem una mica de matemàtiques, anem a deduir que això és d. Vuit és bastant fàcil, ja que tenir un un al lloc vuits. I després, tenim un parell més de f f. Així que el que els humans tendeixen a fer per convenció quan utilitzen hexadecimal és simplement escriure això una mica més succinta, desfer-se de la major part d'aquest espai en blanc. I només per ser súper clar per lectors que aquesta és hexadecimal, simple convenció entre els éssers humans li escriuen zero x, que no té un altre significat d'un identificador visual de, aquí ve un nombre hexadecimal. I llavors, de posar els dos dígits, f f en aquest cas, a continuació, d a, llavors f f. Així que conte llarg, hexadecimal només tendeix per a ser útil perquè cadascun dels seus dígits, del zero al f, perfectament línies amb un patró de quatre bits. Així que si vostè té dos dígits hexadecimals, zero a la F, i una altra, que li dóna a la perfecció vuit bits o un byte. Així que per això es tendeix a ser útil convencionalment. No hi ha intel · lectual contingut realment més enllà d'això, a part de la seva utilitat real. Ara els fitxers JPEG no són l'única formats d'arxius de gràfics. Vostè pot recordar que hi ha arxius d'aquest tipus al món, almenys des de fa uns anys. Així que això era en realitat instal · lat en Windows XP en milions d'ordinadors de tot el món. I aquest era un arxiu de mapa de bits, BMP. I un arxiu de mapa de bits, com es veurà el proper setmana, només significa un patró de punts, píxels com se'ls anomena, un mapa a partir dels bits, de veritat. Així que el que és interessant, però, sobre aquest format d'arxiu, BMP, és que sota la capella, que compta amb més de només tres bytes que componen la seva capçalera, de manera parlar, els primers mossos. En realitat es veu una mica complicat a primera vista. I veurà això en el conjunt P. I aconseguir alguna cosa en particular d'aquesta empresa que no és tan important, ja que només el fet de que al començament de cada mapa de bits arxiu, un format gràfic, hi ha tot un munt de nombres. Ara Microsoft, el autor d'aquest format, tendeix a cridar als Les coses no sencers i caràcters i flotadors però les paraules i d paraules i llargs i bytes. Així que són només diferents tipus de dades. Són diferents noms per a la mateixa cosa. Però veuràs que a P setembre Four. Però això és només per dir que si un ésser humà doble clics algun arxiu BMP en el seu o el seu disc dur, i una finestra s'obre fins a ell o ella que la imatge que mostra, això va succeir perquè l'operatiu sistema presumiblement va notar no només l'extensió d'arxiu BMP en el nom del fitxer, sinó també el fet que hi ha una mica de convenció per al patró de bits en el començament d'aquest arxiu de mapa de bits. Però ara ens centrarem en un arxiu complicada tal, sinó en alguna cosa com això. Suposem que aquí a gedit, I només tenen els inicis d'un programa que és bastant simple. Tinc una mica inclou fins a dalt. Ara tinc "structs.h" # include però Vaig a tornar a això en un moment. Però això és útil per ara. Així que aquest és un programa això va a aplicar com la base de dades del registrador. Així que una base de dades dels estudiants, i tots els estudiants en el món té un nom i una casa i probablement alguns altres coses, però anem a mantenir les coses simples. Cada estudiant té un nom i una casa. Així que si jo volia escriure una programa el propòsit a la vida va ser simplement per recórrer des zero en un màxim de tres, si hi ha tres estudiants a la Universitat de Harvard. I jo només vull arribar, mitjançant GetString, el nom de cada estudiant i de la casa, i després simplement imprimir aquells terme. Això és una mena de Setmana Un, Setmana Dues coses ara, on jo només vull una per bucle o alguna cosa per l'estil. I vull cridar GetString alguns vegades i, a continuació, s'imprimeixen f diverses vegades. Llavors, ¿com podria jo fer això, però, quan un nom i una casa estan involucrats per a cada estudiant? Així que el meu primer instint podria la de fer alguna cosa com això. Jo podria dir primer, bé, dóna'm, dir, una matriu de cadenes anomenats noms. I jo no vull un hardcode tres aquí. Què vull posar-hi? Perquè els estudiants, perquè això és només una constant declarada a la part superior, només perquè jo no he de codificar tres a múltiples llocs. D'aquesta manera, puc canviar un sol lloc, i que afecta un canvi a tot arreu. I llavors, jo podria fer cadena alberga ESTUDIANTS. I ara, jo podria fer alguna cosa com for (int i = 0; i