[Musika nagpe-play] David J. MALAN: Lahat ng karapatan. Ito ay CS50, at ito ay ang pagtatapos ng Linggo Four. At ang isa sa mga paksa ngayong araw ay na ng digital forensics, ang sining ng Pagbawi impormasyon. At sa katunayan, kahit na ikaw ay nasa kalagitnaan ngayon ng Kapayapaan sa Tatlong at Breakout, sa susunod na linggo, ang focus ay magiging sa tiyak domain na ito. Kaya isa sa mga pinakaastig na trabaho kailanman ko Nagkaroon noon ay bumalik sa nagtapos ng paaralan, kapag ako ay nagtatrabaho para sa mga lokal na Middlesex County District Attorney ni opisina, ang paggawa forensics gumagana. Kaya mahalagang, ang Massachusetts Estado Police, sa okasyon, kapag nagtatrabaho sa mga kaso ng gagawin magdala ng mga bagay tulad ng matapang na drive at floppy disk at memory card at ang tulad ng. At ang mga ito ay ipasa ang mga ito sa akin at sa aking Mentor, at ang aming layunin ay upang mahanap ang katibayan, kung nagkaroon man, sa mga media. Ngayon, maaari na nakita mo glimpses sa mundong ito ng forensics sa media, TV at pelikula. Ngunit ang trabaho ko ay nagkaroon, at daresay mundo na, ay hindi masyadong tulad ng gusto mong makita ito. Tingnan natin ang isang pagtingin sa kung ano malamang na nakita mo. [VIDEO pag-playback] -OK. Ngayon, sabihin makakuha ng isang mahusay na pagtingin sa iyo. [Musika nagpe-play] -Hold Ito. Patakbuhin ang na bumalik. -Wait Ng isang minuto. Pumunta sa kanan. -There. I-freeze na iyon. -buong-Screen. -OK. I-freeze na iyon. -Tighten Up sa na, ikaw? -Vector In sa na tao sa pamamagitan ng likod wheel. -Zoom In dito mismo sa lugar na ito. -With Ang karapatan kagamitan, ang imahe ay maaaring pinalaki at sharpened. -What Iyan? -It Ang isang programa ng pagpapabuti. -Can Mo malinaw na up anumang? Hindi -I kilala. Paghusayin ni ito Hayaan. -Enhance Seksyon A6. Pinahusay ko ang detalye, and-- Sa tingin -I mayroong sapat na upang mapahusay. Palabasin ito sa aking screen. -I Pinahusay na ang pagmuni-muni sa kanyang mga mata. -Let Ay tumakbo na ito sa pamamagitan ng Pagpapabuti ng video. -Edgar, Maaari mong pagandahin ito? -Hang Sa. -I've Nagtatrabaho sa pagmuni-muni. Panganganinag ng isang tao -There ni. -Reflection. -There Ay isang salamin ng mukha ng tao. -Ang Salamin! -There Ay isang pagsasalamin. -Zoom In sa mirror. Maaari mong makita ang isang pagsasalamin. -Can Mong mapahusay ang mga imahe mula dito? -Can Mong mapahusay ito? -Can Mong mapahusay ito? -Can Namin mapahusay ito? -Can Mong mapahusay ito? -Hold Sa isang segundo. Kukunin ko paghusayin. -Zoom In sa pinto. -Times 10. -Zoom. -Move In. -More. -Wait, Itigil. -Stop. -Pause Ito. -Rotate Sa amin 75 degrees sa paligid ng vertical, mangyaring. -Stop. Bumalik sa bahagi tungkol sa pinto muli. -Got Isang Enhancer larawang maaaring bitmap? -Maybe Na maaari naming gamitin ang Pradeep Singh pamamaraan upang makita sa bintana. -Ang Software ay estado ng art. -Ang Eigenvalue Naka-off. -With Ang karapatan kumbinasyon ng algorithms-- Kinuha pag-iilaw -He ni algorithm sa susunod na antas, at maaari ko bang gamitin ang mga ito sa mapapahusay ang larawan. -Lock Sa at palakihin ang z-axis. -Enhance. Pagandahin. -Enhance. -Freeze At paghusayin. [END VIDEO pag-playback] David J. MALAN: Kaya mga ay lahat ng mga salita, ngunit sila ay hindi ginamit sa mga pangungusap nang tama. At sa katunayan sa hinaharap, anumang oras, mangyaring, maririnig mo ang isang tao ang sinasabi ng mga salita, "Paghusayin," chuckle lang nang kaunti. Dahil kapag sinusubukan mong paghusayin, halimbawa, ito ay kung ano ang mangyayari. Kaya narito ang isang gorgeous larawan. Ito ay sariling Daven CS50 ni. At ipagpalagay na gusto naming tumuon in sa twinkle sa kanyang mga mata, o ang salamin ng masamang tao na noon ay malinaw na nakunan ng seguridad camera. Ito ay kung ano ang mangyayari kapag mag-zoom in ka sa isang imahe na mayroon lamang isang tiyak na numero ng mga bit na nauugnay dito. Iyon ay kung ano ang iyong makukuha. At sa katunayan, sa Daven ng mata ay ngunit apat, siguro anim na mga pixel na bumuo ng kung ano mismo ang ay glimmering doon. Kaya Problema Set Four ay sa huli ay may mong galugarin ang mundo na ito, lalo na sa pamamagitan ng likas na katangian ng isang bagay tinatawag naming file i / o, kung saan i / o lamang magarbong paraan ng sinasabi ng input at output. Kaya kaya sa ngayon, ang lahat ng mga pakikipag-ugnayan nagkaroon kami sa isang computer na naging sa kalakhan sa iyong keyboard at ang screen, ngunit hindi kaya magkano na may mga hard disk, o pagse-save ng mga file na higit pa sa iyong mga nai isulat ang iyong sarili. Ang iyong mga programa sa gayon ay malayo mayroon Hindi pa paglikha, at pagse-save, at pag-update ng kanilang sariling mga file. Well, kung ano ang isang file? Well, isang bagay tulad ng isang JPEG. Ito ay isang imahe na maaari mong mayroon o i-upload sa Facebook, o makita kahit saan sa web. Sa katunayan, na larawan namin lamang nakita ng Daven ay isang JPEG. At kung ano ang kawili-wiling tungkol sa mga file tulad ng mga JPEG ay na sila ay nakilala, karaniwan, sa pamamagitan ng ilang mga pattern ng bits. Sa ibang salita, ano ito na Tinutukoy ang isang JPEG mula sa isang GIF mula sa isang ping mula sa isang Word dokumento mula sa isang Excel file? Well, iba ito lamang pattern ng bits. At ang mga iba't ibang mga pattern ay karaniwan ay sa simula ng mga file na iyon. Kaya na kapag binubuksan ng Salita ng iyong computer doc, o kapag nagbukas ng isang JPEG isang computer, ito mukhang karaniwang sa unang ilang mga piraso sa file. At kung kinikilala nito ang isang pattern, sinasabi nito, oh, ito ay isang larawan. Hayaan akong ipakita ito sa ang gumagamit na ito bilang isang graphic. O kaya naman, oh, ito mukhang isang Word doc. Hayaan akong ipakita ito sa mga gumagamit na ito bilang isang sanaysay. Kaya halimbawa, mga JPEG, ito ay lumiliko out, ay medyo sopistikadong sa ilalim ng hood. Subalit ang unang tatlong bytes sa karamihan ng mga araw- JPEG magsimula sa mga tatlong numero. Kaya byte zero, isa, at dalawang mga, sa karamihan sa bawat JPEG, 255, at pagkatapos ay ang numero 216, pagkatapos ay ang numero 255. At kung ano ang magagawa mong upang simulan ang paggawa sa susunod na linggo ay talagang poking sa ilalim ng hood ng mga file tulad ng mga JPEG at tulad ng bitmap na file, at nakakakita kung ano ang palagi nang naging doon para sa hangga't bilang ka pa gamit ang isang computer. Ngunit kung ano ang doon ay hindi karaniwan nakasulat na tulad ng mga numero ng decimal tulad nito. Mga siyentipiko computer na hindi ay may posibilidad na makipag-usap sa decimal. Hindi nila talaga makipag-usap sa binary. Karaniwan, kapag gusto naming upang ipahayag ang mga numero, talaga naming gamitin hexadecimal, saan ay maaari mong isipin mula sa, sabihin nating, Problema Set Ang isa, na hinamon mong isipin ang tungkol sa ibang system. Kami, siyempre, ang pamilyar may decimal, zero sa pamamagitan ng siyam. Usapan natin ang tungkol sa binary. At hindi kami talaga mayroon gamitin ang ganoong karaming dito sa labas, dahil computer ay gagamit na iyon. Ngunit programmer ay napaka madalas, ngunit hindi laging, gumamit ng hexadecimal, na kung saan ay nangangahulugan lamang mayroon kang 16 na titik sa iyong alpabeto, bilang kabaligtaran sa dalawa o 10. Kaya paano mo bilangin sa mas mataas na kaysa sa siyam sa hexadecimal? Pumunta kang 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, sa pamamagitan lamang ng convention. Ngunit kung ano ang key ay na ang bawat ng mga ay isang solong simbolo. Walang 10. Walang 11, per se, dahil bawat ng iyong mga digit, gusto lamang sa decimal at tulad lamang ng sa binary, dapat lamang maging isang solong character, sa pamamagitan ng convention. Kaya na pagkatapos ay ang alpabeto mayroon kami sa aming pagtatapon para sa hexadecimal. Kaya kung ano ang hitsura ng isang JPEG tulad ng kung ay upang isulat ang mga unang tatlong Bytes hindi bilang decimal ngunit, halimbawa, bilang hexadecimal? At kung bakit ay hex kahit lahat na kapaki-pakinabang? Well, isang mabilis na pagtingin sa isang halimbawa. Kaya kung isulat ko ang mga bit na kumakatawan sa mga decimal numbers-- maaaring ito ay isang maliit na kalawangin ngayon mula sa ilang linggo likod, ngunit sa kaliwa ng isa at ang karapatan isa ay medyo madali. 255 ay ang pinakamalaking bilang namin maaaring kumatawan sa walong bits. Iyon ay ang lahat ng mga bago. Kaya ang isa lamang na mildly kawili-wiling ay ang isa gitna. At kung uri ng mong gawin ang matematika, ikaw deduce na, sa katunayan, na pattern ng isa at mga zero ay kumakatawan sa 216. Kaya ipaalam stipulate lamang para sa ngayon na ang mga ito ay tama. Ngunit bakit kagiliw-giliw na ito? Well, isang byte, siyempre, ay walong bits. At ito ay lumiliko out na kung sa tingin mo ng isang byte bilang dalawang chunks ng apat na piraso, tulad nito. Hayaan akong magdagdag lang ng ilang espasyo. Kaya bago, pagkatapos. Lamang ako nagdagdag ng ilang mga puting espasyo alang-alang sa visualization dito. Paano maaari naming kumakatawan na ngayon sa, sabihin nating, hexadecimal bawat Quad ng mga piraso, bawat hanay ng mga apat na piraso? Kaya halimbawa, sa kaliwa ngayon, mayroon kaming 1111 sa binary. Ano ang na numero sa decimal, kung gagawin mo ang matematika? Kayo ay may lugar sa buhay, ang lugar twos, ang lugar fours, at ang lugar eights. Madla: 15. David J. MALAN: Ito ay 15. Kaya kung ang ginagawa namin walong plus apat plus dalawang plus isa, makakakuha tayo ng 15. Kaya maaari kong isulat 15 sa ibaba 1111, ngunit ang buong punto dito ay hexadecimal, hindi decimal. Kaya sa halip na pagsusulat down na 15, 1-5, Pupunta ako sa isulat iyon sa hex, na kung sa tingin mo pabalik, kung mayroon kang zero sa pamamagitan ng f, kung ano ang 15 ng pagpunta sa maging? Madla: f. David J. MALAN: Kaya ito ay lumiliko out ito ni f. At maaari kang magtrabaho na sumali sa pamamagitan ng sinasabi, na rin, kung ang isang 10, pagkatapos ay OK, f ay 15. Kaya nga, maaari naming muling isulat ang ang parehong hanay ng mga numero bilang f f. At pagkatapos ay kung gumawa kami ng kaunting matematika, ipapakita namin deduce na iyon d. Eight ay medyo madali, dahil kami magkaroon ng isa sa lugar eights. At pagkatapos, mayroon kaming higit pang f f ng ilang. Kaya kung ano ang mga tao ay may posibilidad na gawin sa pamamagitan ng convention kapag gumamit sila ng hexadecimal ay lang nila isulat ito ng kaunti pa succinctly, mapupuksa ang karamihan sa mga na white space. At upang maging napaka malinaw sa makatarungan mga mambabasa na ito ay hexadecimal, ang simpleng convention sa mga tao ay isulat mo zero x, na walang kahulugan ng iba pang mga kaysa sa isang visual na tagatukoy ng, dito ay isang hex numero. At pagkatapos, ilagay mo ang dalawang mga digit, f f sa kasong ito, pagkatapos ay d isang, pagkatapos ay i-f f. Kaya mahaba kuwento maikli, hexadecimal lamang ay may gawi upang maging kapaki-pakinabang dahil sa bawat isa sa kanyang digit, zero sa pamamagitan ng f, perpektong linya up sa isang pattern ng apat na piraso. Kaya kung mayroon kang dalawang digit hexadecimal, zero sa pamamagitan ng F, muli at muli, na nagbibigay sa iyo ng perpektong walong piraso o isa byte. Kaya na ang dahilan kung bakit ito ay may gawi na maging conventionally kapaki-pakinabang. Walang intelektwal na pagmamay- nilalaman talagang lampas na, bukod sa aktwal na utility nito. Ngayon ang mga JPEG ay hindi lamang ang mag-file format para sa graphics. Maaari mong isipin ang na may mga mga file na tulad nito sa mundo, hindi bababa sa mula sa isang ilang taon likod. Kaya ito ay talagang na naka-install sa Windows XP sa milyun-milyong mga PC sa buong mundo. At ito ay isang bitmap na file, BMP. At isang bitmap file, na makikita mo sa tabi linggo, nangangahulugan lamang sa isang pattern ng mga tuldok, pixels habang ang mga ito ay tinatawag na, isang map sa bits, talaga. Kaya kung ano ang kawili-wiling, bagaman, tungkol sa format ng file, BMP, ay na sa ilalim ng hood, ito ay may higit sa bytes tatlo lamang na sumulat ng header nito, kaya upang makipag-usap, ang unang ilang mga kagat. Ito talaga ang itsura ng kaunti kumplikado sa unang tingin. At makikita mo ito sa P set. At ang pagkakaroon ng isang bagay partikular na sa labas ng ito ngayon Hindi kaya mahalaga, tulad ng sa katotohanang na sa simula ng bawat bitmap file, isang graphical na format, mayroong isang buong bungkos ng mga numero. Ngayon Microsoft, ang may-akda ng format na ito, ay may gawi na tumawag sa mga bagay na hindi ints at char at sa kamay ngunit salita at d mga salita at longs at bytes. Kaya ang mga ito ay lamang iba't ibang mga uri ng data. Ang mga ito ay iba't ibang mga pangalan para sa parehong bagay. Ngunit makikita mo na sa P Magtakda ng Four. Ngunit ito ay lamang na sabihin na kung ang isang tao double-click ang ilang mga .BMP file sa kanyang o ang kanyang hard drive, at isang window ay magbubukas up na nagpapakita sa kanya na imahe, na nangyari dahil sa operating baka napansin system ay hindi lamang ang extension .BMP file sa pangalan ng file, kundi pati na rin ang katotohanan na mayroong ilan convention sa pattern ng mga piraso sa pinakadulo simula ng bitmap na file. Ngunit ipaalam tumuon sa ngayon tulad ng isang kumplikadong mga file, ngunit sa halip sa isang bagay na katulad nito. Ipagpalagay dito sa GEdit, ako Mayroon lamang ang Beginnings ng isang programa na medyo simple. Nakakuha ako ng ilang Kabilang up tuktok. Ngayon ay na-Nakakuha ako #include "structs.h" ngunit Kukunin ko bumalik sa na sa ilang sandali. Ngunit ito ay kapaki-pakinabang para sa ngayon. Kaya ito ay isang programa na pupuntahan ipatupad tulad ng database ng mga registrar ng. Kaya ng database ng mga mag-aaral, at bawat mag-aaral sa mundo May pangalan at isang bahay at marahil ilang iba pang mga bagay-bagay, ngunit itinatago namin itong simple. Ang bawat mag-aaral ay may isang pangalan at isang bahay. Kaya kung Nais kong magsulat ng isang programa na kung saan ang layunin sa buhay ay upang umulit lamang mula sa ZERO sa hanggang sa tatlong, kung mayroong tatlong mga mag-aaral sa Harvard University. At gusto ko lang upang makakuha ng, gamit GetString, pangalan ng bawat mag-aaral at bahay, at pagkatapos ay i-print lamang ang mga out. Ito ay uri ng tulad ng Linggo Ang isa, Linggo Dalawang bagay-bagay ngayon, kung saan ko gusto lamang para sa loop o isang bagay tulad na. At gusto kong tumawag sa GetString ng ilang beses, at pagkatapos ay i-print f nang ilang beses. Kaya kung paano maaaring kong gawin ito, bagaman, kapag ang parehong pangalan at isang bahay kasangkot para sa bawat mag-aaral? Kaya ang aking unang instinct maaari maging upang gawin ang isang bagay na katulad nito. Maaaring ko muna sabihin, mahusay, ninyo ako, sabihin, isang array ng mga string na tinatawag na mga pangalan. At hindi ko nais ang isang hardcode tatlong dito. Ano ang gagawin ko nais upang ilagay doon? Kaya ESTUDYANTE, dahil ito lamang isang pare-pareho ang ipinahayag sa itaas, kaya lang hindi ko kailangang mag-hardcode tatlong sa maraming mga lugar. Sa ganitong paraan, maaari ko ba itong baguhin sa isang lugar, at ito ay nakakaapekto sa isang pagbabago sa lahat ng dako. At pagkatapos ay, maaari kong gawin Naglalaman string ESTUDYANTE. At ngayon, maaari kong gawin ang isang bagay tulad para sa (int i = 0; i