1 00:00:00,000 --> 00:00:02,750 [Powered by Google Translate] [Minggu 10] 2 00:00:02,750 --> 00:00:04,750 [David J. Malan] [Harvard University] 3 00:00:04,750 --> 00:00:07,000 [Ini adalah CS50.] [CS50.TV] 4 00:00:08,520 --> 00:00:13,240 >> Baiklah! Ini adalah CS50 tetapi tidak untuk lebih lama lagi. 5 00:00:13,240 --> 00:00:14,740 Ini adalah awal minggu 10. 6 00:00:14,740 --> 00:00:18,780 Pada hari Rabu kami telah kami kuis, dan kemudian Senin depan kita memiliki beberapa kue perayaan 7 00:00:18,780 --> 00:00:22,030 seperti yang kita datang lingkaran penuh sepanjang perjalanan kembali dari nol minggu. 8 00:00:22,030 --> 00:00:25,200 Hari ini, kita berbicara tentang salah satu topik favorit saya, kebenaran diberitahu - 9 00:00:25,200 --> 00:00:29,000 bahwa keamanan dan privasi dan implikasi dari semua perangkat keras dan perangkat lunak 10 00:00:29,000 --> 00:00:31,000 bahwa kita semua menggunakan hari ini. 11 00:00:31,000 --> 00:00:33,300 Sejujurnya, ada banyak ancaman di luar sana 12 00:00:33,300 --> 00:00:35,430 bahwa jika Anda belum benar-benar berhenti untuk berpikir tentang mereka, 13 00:00:35,430 --> 00:00:36,920 mereka sebenarnya cukup menakutkan. 14 00:00:36,920 --> 00:00:40,070 Kasus di titik - jika salah satu dari Anda pernah download software 15 00:00:40,070 --> 00:00:42,660 off dari internet dan diinstal pada komputer Anda, 16 00:00:42,660 --> 00:00:45,220 Anda telah terlibat ke dalam tingkat yang signifikan kepercayaan, kan? 17 00:00:45,220 --> 00:00:50,220 Tidak ada yang telah dicegah Skype, atau Chrome, atau bagian dari perangkat lunak 18 00:00:50,220 --> 00:00:54,770 Anda telah diinstal ke komputer Anda, dari sekedar menghapus semua file pada hard drive Anda; 19 00:00:54,770 --> 00:00:58,260 meng-upload semua file pada hard drive Anda ke server beberapa orang yang buruk; 20 00:00:58,260 --> 00:01:01,650 dari membaca semua email Anda, dari menyadap semua pesan instan Anda. 21 00:01:01,650 --> 00:01:05,040 Karena kenyataannya adalah saat ini dengan sistem operasi paling modern 22 00:01:05,040 --> 00:01:10,040 ada benar-benar tidak banyak dinding antara program software yang kita install, 23 00:01:10,040 --> 00:01:14,220 dan Anda dan saya cukup banyak hanya semacam menyilangkan jari kami dan mengambil iman 24 00:01:14,220 --> 00:01:17,750 bahwa aplikasi kita download secara gratis, atau bahwa hal itu 99 sen, 25 00:01:17,750 --> 00:01:20,140 sebenarnya benar-benar jinak. 26 00:01:20,140 --> 00:01:23,090 Tapi seperti yang telah kita lihat melalui C, dan sekarang PHP dan JavaScript, 27 00:01:23,090 --> 00:01:25,420 dengan kemampuan untuk mengekspresikan diri secara programatik, 28 00:01:25,420 --> 00:01:30,300 Anda dapat melakukan apa saja yang paling Anda inginkan dengan program bahwa pengguna dirinya bisa melakukan. 29 00:01:30,300 --> 00:01:32,390 >> Jadi, hari ini kita fokus pada topik yang - 30 00:01:32,390 --> 00:01:35,360 tidak hanya beberapa ancaman tetapi juga pertahanan. 31 00:01:35,360 --> 00:01:37,540 Memang, dalam dunia keamanan secara umum, 32 00:01:37,540 --> 00:01:39,040 ada semacam permainan kucing dan tikus, 33 00:01:39,040 --> 00:01:41,990 dan saya berani bilang orang-orang jahat hampir selalu memiliki kaki. 34 00:01:41,990 --> 00:01:45,880 Ketika datang untuk mengambil keuntungan dari perangkat keras dan perangkat lunak pada komputer pribadi kita sendiri, 35 00:01:45,880 --> 00:01:51,250 kita harus menyadari bahwa orang jahat hanya perlu menemukan satu kesalahan sederhana - 36 00:01:51,250 --> 00:01:56,150 satu mengeksploitasi, satu bug - dalam software kami telah menulis atau menjalankan 37 00:01:56,150 --> 00:01:58,280 dalam rangka baginya untuk mengambil alih seluruh sistem kami. 38 00:01:58,280 --> 00:02:02,870 Sebaliknya, kami - orang-orang baik - perlu menambal dan memperbaiki semua itu bug 39 00:02:02,870 --> 00:02:04,900 dan menghindari semua kelemahan-kelemahan. 40 00:02:04,900 --> 00:02:07,870 Dan demikian, saya berani mengatakan secara keseluruhan, orang-orang jahat memiliki keuntungan. 41 00:02:07,870 --> 00:02:10,840 Apa kelas seperti ini dan kelas berikutnya benar-benar tentang 42 00:02:10,840 --> 00:02:14,830 tidak mengajarkan tentang cara untuk mengobarkan pertempuran bahwa orang-orang jahat melakukan, 43 00:02:14,830 --> 00:02:18,220 tetapi tentang bagaimana melindungi diri sendiri atau setidaknya bagaimana membuat keputusan yang dihitung 44 00:02:18,220 --> 00:02:22,970 bahwa ya, saya tahu ini bagian dari perangkat lunak memang bisa membaca setiap satu dari email-email saya, 45 00:02:22,970 --> 00:02:27,040 tapi aku baik-baik saja dengan itu karena nilai itu membawa saya di sisi lain. 46 00:02:27,040 --> 00:02:31,060 >> Saya sangat senang bisa bergabung dengan 2 orang terpandai saya tahu - 47 00:02:31,060 --> 00:02:33,060 Rob Bowden dan Nate Hardison. 48 00:02:33,060 --> 00:02:36,850 Rob adalah untuk membawa kita untuk tur melalui tingkat terendah tag keamanan - 49 00:02:36,850 --> 00:02:42,470 bahwa dari compiler yang, sampai sekarang, kita semua datang untuk mencintai dan percaya. Rob Bowden. 50 00:02:42,470 --> 00:02:47,790 [Tepuk tangan] 51 00:02:47,790 --> 00:02:50,280 >> [Rob] Baiklah. David telah cukup banyak diambil omongan saya seluruh 52 00:02:50,280 --> 00:02:52,320 bahwa aku akan memperkenalkan dengan, tapi - 53 00:02:52,320 --> 00:02:58,070 Beberapa minggu yang lalu, Anda melihat contoh dari serangan buffer-overflow 54 00:02:58,070 --> 00:03:01,900 yang merupakan contoh dari hacking hacker ke dalam beberapa bagian dari perangkat lunak 55 00:03:01,900 --> 00:03:06,060 bahwa mereka tidak seharusnya melakukan hacking ke dalam. 56 00:03:06,060 --> 00:03:09,690 Sisi lain dari ini 57 00:03:09,690 --> 00:03:14,470 kadang-kadang Anda memiliki perangkat lunak yang berbahaya dalam dan dari dirinya sendiri. 58 00:03:14,470 --> 00:03:17,070 Bahkan tidak perlu hack. 59 00:03:17,070 --> 00:03:20,670 Orang yang menulis perangkat lunak ingin Anda hack. 60 00:03:20,670 --> 00:03:22,190 >> Mari kita melompat tepat ke dalam kode, 61 00:03:22,190 --> 00:03:28,560 mengambil melihat "login.c". 62 00:03:28,560 --> 00:03:33,390 Di sini, sebuah program konyol yang memvalidasi username dan kombinasi sandi. 63 00:03:33,390 --> 00:03:39,420 Di sini Anda pasti harus mendapatkan nyaman dengan C lagi untuk kuis. 64 00:03:39,420 --> 00:03:43,470 Pertama, kita menggunakan mendapatkan string untuk menggambarkan username, 65 00:03:43,470 --> 00:03:46,280 maka kita menggunakan string get untuk mengambil password, 66 00:03:46,280 --> 00:03:50,680 dan kemudian kita memiliki beberapa pemeriksaan sepele hanya, adalah username "rob"? 67 00:03:50,680 --> 00:03:52,710 Dan adalah password "thisiscs50"? 68 00:03:52,710 --> 00:03:56,900 Atau, adalah username "tommy" dan password "i <3javascript"? 69 00:03:56,900 --> 00:03:58,980 Jika salah satu dari mereka terjadi, 70 00:03:58,980 --> 00:04:01,980  maka kita hanya akan mencetak "Sukses", dan kemudian kita memiliki akses. 71 00:04:01,980 --> 00:04:07,690 Jika tidak, kita akan mencetak "tidak valid login" dan kemudian, tentu saja, 72 00:04:07,690 --> 00:04:11,120  karena memori sketsa string malloc ini, nama pengguna dan password kita bebas. 73 00:04:11,120 --> 00:04:15,560 Ini adalah sebuah program login sepele, 74 00:04:15,560 --> 00:04:18,110 dan jika Anda pikirkan ketika Anda login ke alat, 75 00:04:18,110 --> 00:04:22,350 itu sangat mirip - atau bahkan masuk ke komputer Anda - 76 00:04:22,350 --> 00:04:24,930 ada hanya beberapa program login yang memberikan Anda akses. 77 00:04:24,930 --> 00:04:31,840 Di sini, kita kebetulan memiliki keras-kode 'merampok', 'thisiscs50', 'tommy', 'i <3javascript', 78 00:04:31,840 --> 00:04:34,950 tapi mungkin ada beberapa file di suatu tempat pada sistem operasi Anda 79 00:04:34,950 --> 00:04:38,690 yang memiliki daftar nama pengguna yang dapat login ke sistem 80 00:04:38,690 --> 00:04:41,740 dan daftar password yang terkait dengan mereka username. 81 00:04:41,740 --> 00:04:46,090 Biasanya password tidak hanya disimpan di plaintext seperti ini. 82 00:04:46,090 --> 00:04:50,360 Ada beberapa jenis enkripsi, tetapi hal ini akan lakukan untuk contoh kita. 83 00:04:50,360 --> 00:04:57,000 >> Datang ke compiler kami - 84 00:04:57,020 --> 00:05:00,780 itu akan menjadi sangat mudah. 85 00:05:00,780 --> 00:05:04,800 Kita perlu menentukan setidaknya beberapa file yang kita ingin mengkompilasi, 86 00:05:04,800 --> 00:05:10,200 dan kemudian di sini - baris-baris 87 00:05:10,200 --> 00:05:12,520 hanya membaca file A. 88 00:05:12,520 --> 00:05:16,080 Bunyinya seluruh file ke dalam satu buffer besar, 89 00:05:16,080 --> 00:05:19,000 dan kemudian kita nol-mengakhiri penyangga kami seperti biasa, 90 00:05:19,000 --> 00:05:21,000 dan akhirnya kita hanya mengkompilasi file. 91 00:05:21,000 --> 00:05:24,090 Kita tidak akan melihat bagaimana kompilasi benar-benar diterapkan, 92 00:05:24,090 --> 00:05:26,820 tetapi sebagai sebuah petunjuk, itu hanya panggilan dentang. 93 00:05:26,820 --> 00:05:32,370 Kita akan menggunakan program ini untuk mengkompilasi hal-hal bukan dentang. 94 00:05:32,370 --> 00:05:39,260 Satu masalah kita mulai dengan yang kita lihat kita ingin mengkompilasi compiler kami, 95 00:05:39,260 --> 00:05:43,620 tetapi jika kita tidak akan menggunakan dentang, saya tidak tahu apa yang akan saya untuk mengkompilasi dengan. 96 00:05:43,620 --> 00:05:46,700 Ini adalah masalah umum yang dikenal sebagai bootstrap. 97 00:05:46,700 --> 00:05:53,080 Jadi, sekali ini saja, aku akan menggunakan dentang untuk mengkompilasi compiler kami. 98 00:05:53,080 --> 00:05:58,800 >> Jika Anda berpikir tentang GCC dan dentang - 99 00:05:58,800 --> 00:06:03,200 program-program, yang kompiler yang terus-menerus diperbarui, 100 00:06:03,200 --> 00:06:10,010 dan mereka compiler dikompilasi menggunakan GCC dan dentang. 101 00:06:10,010 --> 00:06:14,890 Clang hanyalah salah satu besar C atau C + + program, 102 00:06:14,890 --> 00:06:19,510 sehingga compiler mereka gunakan untuk mengkompilasi itu adalah dentang. 103 00:06:19,510 --> 00:06:26,820 Di sini, sekarang, kita hanya akan menggunakan compiler untuk mengkompilasi compiler kami kami, 104 00:06:26,820 --> 00:06:33,830 dan kita bahkan dapat mengatakan - '/ compiler.', 'compiler.c', 'compile.c', '-o compiler'. 105 00:06:33,830 --> 00:06:37,250 Perhatikan hal ini adalah perintah yang tepat sebelum aku berlari - 106 00:06:37,250 --> 00:06:41,330 hanya mengganti dentang dengan '/ compiler.'. 107 00:06:41,330 --> 00:06:44,990 Dan sekarang kita memiliki kompiler lain, tapi itu persis sama. 108 00:06:44,990 --> 00:06:47,510 Itu hanya panggilan dentang. 109 00:06:47,510 --> 00:06:55,050 >> Kita akan menggunakan compiler untuk mengkompilasi program kita login kita. 110 00:06:55,050 --> 00:07:03,030 Oke - ". / Compiler login.c-o login". 111 00:07:03,030 --> 00:07:06,160 Jadi, referensi terdefinisi untuk "GetString". 112 00:07:06,160 --> 00:07:11,250 Mendapat "-lcs50". Oke. 113 00:07:11,250 --> 00:07:13,790 Jadi sekarang aku punya program login kami. 114 00:07:13,790 --> 00:07:16,790 Menjalankan itu - menerima "Silakan masukkan nama pengguna Anda". 115 00:07:16,790 --> 00:07:22,140 Salah satu contoh adalah rob. Silakan masukkan password Anda - thisiscs50. 116 00:07:22,140 --> 00:07:24,930 Dan sukses! Saya memiliki akses. 117 00:07:24,930 --> 00:07:28,350 Menjalankan lagi dan memasukkan beberapa password yang valid - 118 00:07:28,350 --> 00:07:30,350 atau tidak valid username dan password - 119 00:07:30,350 --> 00:07:32,860 valid login. 120 00:07:32,860 --> 00:07:37,740 Oke. Menarik tentang hal ini sejauh ini tidak ada. 121 00:07:37,740 --> 00:07:43,100 Tapi, mari kita lihat login lagi - 122 00:07:43,100 --> 00:07:47,850 dan ini akan menjadi contoh yang agak sepele, 123 00:07:47,850 --> 00:07:59,330 tapi mari kita menambahkan lain di sini dan mengatakan, lain jika ((strcmp (username, "hacker") == 0 && 124 00:07:59,330 --> 00:08:14,510 strcmp (password, "LOLihackyou") == 0)) 125 00:08:14,510 --> 00:08:26,280 jadi sekarang, printf ("Hacked Anda sekarang memiliki akses \ n!!."); oke. 126 00:08:26,280 --> 00:08:36,240 Kompilasi ini - compiler login.c-o login-lcs50 - 127 00:08:36,240 --> 00:08:40,190 sekarang menjalankan login - dan jika saya menggunakan username saya hacker 128 00:08:40,190 --> 00:08:44,740 dan password LOLihackedyou - 129 00:08:44,740 --> 00:08:47,780 Apakah aku salah ketik di sana sebelumnya? 130 00:08:47,780 --> 00:08:52,990 Pada login.c--ihack - aku akan melakukan hack karena saya pikir saya melakukannya nanti. 131 00:08:52,990 --> 00:08:56,270 Oke. Mengkompilasi ulang. 132 00:08:56,270 --> 00:09:01,500 Re-running - hacker - LOLihackedyou - 133 00:09:01,500 --> 00:09:03,650 Hacked!! Anda sekarang memiliki akses. 134 00:09:03,650 --> 00:09:06,580 >> Ada tampaknya tidak menjadi yang banyak perbedaan 135 00:09:06,580 --> 00:09:10,890 karena itu adalah cek yang sama persis yang saya lakukan untuk username dan password lainnya. 136 00:09:10,890 --> 00:09:17,720 Plus, hal besar adalah bahwa jika orang lain melihat ini login.c-- 137 00:09:17,720 --> 00:09:24,020 mengatakan, jika saya lulus off ini kepada pasangan saya, dan mereka membuka file ini, 138 00:09:24,020 --> 00:09:29,870 dan mereka membaca ini, mereka akan melihat - Oke, kenapa Anda memiliki baris kode di sini? 139 00:09:29,870 --> 00:09:33,320 Itu jelas bukan sesuatu yang harus di program anda. 140 00:09:33,320 --> 00:09:41,590 Dalam beberapa program - seperti perangkat lunak berpemilik yang tidak open source - 141 00:09:41,590 --> 00:09:46,200 Anda mungkin tidak pernah melihat baris-baris kode. 142 00:09:46,200 --> 00:09:50,440 Sesuatu seperti Skype atau sesuatu - untuk semua yang Anda tahu, 143 00:09:50,440 --> 00:09:57,600 Skype pada komputer Anda dan hanya ada beberapa spesifik username-password kombinasi 144 00:09:57,600 --> 00:10:01,580 yang akan login ke Skype dalam beberapa cara khusus. 145 00:10:01,580 --> 00:10:04,230 Kami tidak tahu tentang hal itu, dan orang-orang tidak tahu tentang hal itu, 146 00:10:04,230 --> 00:10:09,640 karena mereka tidak bisa membaca kode sumber untuk melihat bahwa ada lubang ini. 147 00:10:09,640 --> 00:10:11,800 >> Apa yang kita sebut ini - 148 00:10:11,800 --> 00:10:16,530 meskipun ini bukan contoh yang sangat pintar - 149 00:10:16,530 --> 00:10:18,970 ini disebut pintu belakang. 150 00:10:18,970 --> 00:10:22,320 Jika Anda berpikir dari pintu belakang rumah Anda. 151 00:10:22,320 --> 00:10:26,640 Di sini, jika saya memvalidasi dengan username 'merampok' atau 'tommy,' 152 00:10:26,640 --> 00:10:28,580 yang akan menjadi seperti menggunakan "pintu depan." 153 00:10:28,580 --> 00:10:33,700 Itulah cara saya seharusnya aman login. 154 00:10:33,700 --> 00:10:37,630 Tetapi jika saya masukkan dengan username dan password - 155 00:10:37,630 --> 00:10:40,630 kemudian yang menggunakan "pintu belakang." 156 00:10:40,630 --> 00:10:42,810 Itu bukan cara yang disengaja untuk masuk ke program, 157 00:10:42,810 --> 00:10:45,350 tapi masih bekerja. 158 00:10:45,350 --> 00:10:49,160 Dan orang-orang pada umumnya tidak seharusnya tahu tentang pintu belakang. 159 00:10:49,160 --> 00:10:53,050 Kita akan memperbaiki ini. 160 00:10:53,050 --> 00:10:55,610 Mari kita kembali ini untuk login.c asli kami, 161 00:10:55,610 --> 00:11:05,510 dan mari kita lihat compiler baru kami. Oke. 162 00:11:05,510 --> 00:11:08,460 Semuanya di sini adalah persis sama. 163 00:11:08,460 --> 00:11:10,460 Kita membaca seluruh file ke dalam buffer. 164 00:11:10,460 --> 00:11:14,400 Semuanya di sini adalah sama. 165 00:11:14,400 --> 00:11:16,180 Kami baru saja anda kompilasi file. 166 00:11:16,180 --> 00:11:19,770 Tapi sekarang aku punya besar jika di sini 167 00:11:19,770 --> 00:11:24,140 yang mengatakan, jika file yang saya kebetulan kompilasi adalah login.c, 168 00:11:24,140 --> 00:11:27,390 maka saya melakukan sesuatu yang istimewa. 169 00:11:27,390 --> 00:11:29,900 Apa itu sesuatu yang istimewa? 170 00:11:29,900 --> 00:11:33,820 Saya lihat di sini beberapa string disebut 'hack', 171 00:11:33,820 --> 00:11:35,950 dan melihat ini baris kode - 172 00:11:35,950 --> 00:11:41,990 ini adalah baris kode yang sama - saya kira saya lakukan menggunakan 'ihack' dan bukan 'ihacked' sebelum - 173 00:11:41,990 --> 00:11:44,240 melihat ini baris kode, 174 00:11:44,240 --> 00:11:47,880 mereka baris yang sama persis kode yang saya punya di login.c sebelumnya. 175 00:11:47,880 --> 00:11:51,130 Tapi sekarang, daripada harus mereka di login.c, 176 00:11:51,130 --> 00:11:54,290 Aku akan menempatkan mereka ke dalam compiler saya. 177 00:11:54,290 --> 00:12:00,240 >> Ini adalah baris kode saya akan ingin untuk memasukkan ke login.c. 178 00:12:00,240 --> 00:12:06,350 Ini baris kode - buffer yang sedianya digelar login.c saya 179 00:12:06,350 --> 00:12:11,080 tidak lagi akan menjadi cukup besar karena sekarang saya ingin juga menyisipkan hack ini 180 00:12:11,080 --> 00:12:12,940 ke tengah-tengah program saya. 181 00:12:12,940 --> 00:12:16,350 Semua ini lakukan adalah menciptakan buffer baru yang cukup besar - 182 00:12:16,350 --> 00:12:22,020 baik untuk file asli dan ekstra baris kode - hack - bahwa saya ingin memasukkan sana. 183 00:12:22,020 --> 00:12:24,920 Berikut ini adalah sesuatu untuk melihat - 184 00:12:24,920 --> 00:12:29,200 char * Pola = "/ / menolak mereka akses!" 185 00:12:29,200 --> 00:12:33,760 Jika kita melihat kembali login.c, 186 00:12:33,760 --> 00:12:37,690 kita lihat di sini komentar ini - menolak mereka akses! 187 00:12:37,690 --> 00:12:42,360 Dalam login.c, komentar ini terlihat benar-benar berbahaya, 188 00:12:42,360 --> 00:12:48,270 sehingga Anda tidak akan menduga ada niat jahat hanya dengan komentar ini. 189 00:12:48,270 --> 00:12:55,600 Namun dalam compiler kami, kami secara khusus akan mencari baris kode ini, 190 00:12:55,600 --> 00:12:57,600 dan kemudian ketika kita menemukan itu - 191 00:12:57,600 --> 00:13:03,330 ini baris kode yang memasukkan hack kami ke posisi itu. 192 00:13:03,330 --> 00:13:06,910 Jadi, kita iterasi login.c keseluruhan, 193 00:13:06,910 --> 00:13:12,080 kita memasukkan hack yang tepat di mana ia mengatakan menolak mereka akses, 194 00:13:12,080 --> 00:13:15,890 dan kemudian kita kompilasi - bukan login.c asli 195 00:13:15,890 --> 00:13:20,340 tetapi login.c baru dengan hack dimasukkan tepat di 'menolak mereka akses. " 196 00:13:20,340 --> 00:13:29,190 >> Sekarang saya ingin mengkompilasi compiler baru saya dengan hack yang terlibat. 197 00:13:29,190 --> 00:13:36,900 Aku tidak akan menggunakan dentang, jadi mari kita salin compiler yang kita gunakan sebelumnya 198 00:13:36,900 --> 00:13:48,420 dan menggunakannya - jadi, compiler compiler.c compile.c-o evil_compiler. 199 00:13:48,420 --> 00:13:50,870 Sekarang compiler kita yang jahat - 200 00:13:50,870 --> 00:13:54,310 jika kita menggunakan compiler kita yang jahat untuk mengkompilasi file lainnya, 201 00:13:54,310 --> 00:13:57,980 file tersebut akan mengkompilasi sebagaimana mestinya. 202 00:13:57,980 --> 00:13:59,980 Ini benar-benar normal. 203 00:13:59,980 --> 00:14:06,870 Namun jika kita menggunakan compiler kita yang jahat untuk mengkompilasi login - 204 00:14:06,870 --> 00:14:14,920 sehingga, / evil_compiler login.c-o login-lcs50 -. 205 00:14:14,920 --> 00:14:21,310 melihat login.c lagi, ada apa-apa di sini. 206 00:14:21,310 --> 00:14:25,770 Ini biasa kami 'jika itu baik atau rob tommy kami berada di, yang lain kita keluar'. 207 00:14:25,770 --> 00:14:31,620 Tetapi ketika kita menjalankan executable kami, ini akan bekerja seperti biasa. 208 00:14:31,620 --> 00:14:36,640 Menjalankan lagi - hacker, LOLihackyou - 209 00:14:36,640 --> 00:14:39,000 Hacked!! Anda sekarang memiliki akses. 210 00:14:39,000 --> 00:14:43,560 Hanya melihat login.c, Anda tidak akan berpikir ada sesuatu yang salah. 211 00:14:43,560 --> 00:14:46,960 Tapi compiler yang digunakan untuk mengkompilasi login.c 212 00:14:46,960 --> 00:14:53,820 dirancang khusus untuk memasukkan hack ini ke dalam program. 213 00:14:53,820 --> 00:14:57,320 Kami hanya pindah masalah asli kami. 214 00:14:57,320 --> 00:15:02,880 Awalnya, kami memiliki baris-baris kode dalam login.c bahwa jika orang lain memandang mereka, 215 00:15:02,880 --> 00:15:05,470 mereka akan seperti, mengapa ini di sini? 216 00:15:05,470 --> 00:15:09,550 Sekarang jika ada yang terjadi untuk melihat compiler kami, 217 00:15:09,550 --> 00:15:12,140 mereka akan melihat garis-garis kode dan berkata, 218 00:15:12,140 --> 00:15:15,290 mengapa ini di sini? 219 00:15:15,290 --> 00:15:17,210 Jadi, kami belum sepenuhnya memecahkan masalah kami. 220 00:15:17,210 --> 00:15:22,510 Tapi kita bisa menggunakan ide ini lagi. 221 00:15:22,510 --> 00:15:26,260 >> Mengambil melihat versi ketiga dari kompilator, 222 00:15:26,260 --> 00:15:32,500 itu ide yang sama. 223 00:15:32,500 --> 00:15:36,240 Kita membaca seluruh file ke buffer di sini, 224 00:15:36,240 --> 00:15:39,660 kita mengkompilasi file di sini, 225 00:15:39,660 --> 00:15:44,220 dan saya memiliki semacam hack string di sini, 226 00:15:44,220 --> 00:15:47,710 tetapi melihat file yang aku benar-benar melakukan hacking sekarang. 227 00:15:47,710 --> 00:15:52,260 Saya compiler.c hacker 228 00:15:52,260 --> 00:15:54,590 tidak login.c. 229 00:15:54,590 --> 00:15:57,780 Tapi apa yang saya memasukkan ke compiler.c? 230 00:15:57,780 --> 00:16:04,600 Saya memasukkan kode ini yang merupakan kode yang tepat di compiler kami sebelumnya, 231 00:16:04,600 --> 00:16:10,540 yang dimaksudkan untuk memasukkan kode ke login.c. 232 00:16:10,540 --> 00:16:13,360 Berikut adalah jika kita login.c berkas strcmp 233 00:16:13,360 --> 00:16:19,370 dan kemudian masukkan ke dalam barang-barang kami login.c hack. 234 00:16:19,370 --> 00:16:26,010 Ini compiler baru ini dimaksudkan untuk menciptakan kompilator 235 00:16:26,010 --> 00:16:30,390 yang dimaksudkan untuk mengkompilasi masuk jahat. 236 00:16:30,390 --> 00:16:34,320 Kita akan melihat mengapa yang membantu kita. 237 00:16:34,320 --> 00:16:40,630 Segala sesuatu yang lain adalah sama, sehingga bekerja sama persis seperti itu bekerja dengan kompiler kami sebelumnya. 238 00:16:40,630 --> 00:16:45,550 Kami hanya iterasi compile.c kami seluruh. 239 00:16:45,550 --> 00:16:48,190 Tapi sekarang bukan mencari 'menolak mereka akses,' 240 00:16:48,190 --> 00:16:51,490 kita cari 'mengkompilasi file.' 241 00:16:51,490 --> 00:16:53,750 Dimana mengkompilasi file? 242 00:16:53,750 --> 00:16:57,210 Melihat compiler.c kami benar-benar tidak bersalah, 243 00:16:57,210 --> 00:17:01,340 itu tepat di sini di bagian bawah. 244 00:17:01,340 --> 00:17:06,500 Komentar ini - mengkompilasi file - lagi, yang terlihat benar-benar berbahaya. 245 00:17:06,500 --> 00:17:11,599 Namun, dalam versi berbahaya kami kompilator, 246 00:17:11,599 --> 00:17:16,550 kita akan - tepat sebelum komentar itu - menyisipkan kode ini 247 00:17:16,550 --> 00:17:20,690 yang dimaksudkan untuk memasukkan kode ketika kompilasi login.c. 248 00:17:20,690 --> 00:17:25,589 >> Ada banyak tingkat tipuan di sini. 249 00:17:25,589 --> 00:17:29,760 Mari kita benar-benar menjalankannya. 250 00:17:29,760 --> 00:17:37,360 Sekali lagi, kita akan menyalin compiler asli kami. 251 00:17:37,360 --> 00:17:48,260 Sekarang, kompilasi - compiler compiler.c compile.c-o evilest_compiler - 252 00:17:48,260 --> 00:17:52,640 dan sekarang evilest_compiler. 253 00:17:52,640 --> 00:17:59,200 Compiler Evilest - jika kita menggunakannya untuk mengkompilasi compiler kami, 254 00:17:59,200 --> 00:18:01,550 mari kita benar-benar melihat. 255 00:18:01,550 --> 00:18:13,230 Evilest_compiler - membawanya atas, sepanjang perjalanan kembali ke versi 1 dari compiler kami - 256 00:18:13,230 --> 00:18:19,640 versi 1 dari compiler kami yang hanya membaca di file dan kompilasi. 257 00:18:19,640 --> 00:18:24,780 Di sini, kita tahu bahwa evilest_compiler - ketika mengkompilasi file ini - 258 00:18:24,780 --> 00:18:29,890 akan menyisipkan kode di sini sebelum mengkompilasi file tersebut, 259 00:18:29,890 --> 00:18:38,510 dan kode yang akan terlihat persis seperti kode dari versi kedua compiler kami 260 00:18:38,510 --> 00:18:42,240 yang melakukan ini. 261 00:18:42,240 --> 00:18:46,450 Kode ini, yang dimaksudkan untuk masuk ke login, 262 00:18:46,450 --> 00:18:56,480 akan dimasukkan ke dalam compiler kita dengan compiler evilest. 263 00:18:56,480 --> 00:19:08,600 Mari kita gunakan evilest_compiler untuk mengkompilasi compiler kami. 264 00:19:08,600 --> 00:19:15,040 Sekarang kita akan menggunakan compiler, 265 00:19:15,040 --> 00:19:19,460 kembali ke login, 266 00:19:19,460 --> 00:19:25,280 dan ingat login.c ini sama sekali tidak ada yang mencurigakan di dalamnya. 267 00:19:25,280 --> 00:19:35,250 Tetapi menggunakan compiler untuk mengkompilasi kami login.c, 268 00:19:35,250 --> 00:19:38,430 rob, thisiscs50, sukses. 269 00:19:38,430 --> 00:19:44,350 Login hacker Mari, LOLihackyou, Hacked!! Anda sekarang memiliki akses. 270 00:19:44,350 --> 00:19:49,710 >> Mengakui bahwa ini berbeda dari versi 2 dari compiler kami. 271 00:19:49,710 --> 00:20:00,500 Compiler kita gunakan - mari kita lanjutkan kembali - copy dari login - 272 00:20:00,500 --> 00:20:01,880 mari kita membawa compiler kami kembali di sini. 273 00:20:01,880 --> 00:20:06,360 Menghapus compiler evilest. 274 00:20:06,360 --> 00:20:08,970 Semua kita telah meninggalkan sekarang adalah compiler. 275 00:20:08,970 --> 00:20:10,950 Jika kita melihat compiler.c, 276 00:20:10,950 --> 00:20:16,840 ada apa-apa di sana yang tampaknya berbahaya dengan cara apapun. 277 00:20:16,840 --> 00:20:22,390 Jika kita melihat login.c, 278 00:20:22,390 --> 00:20:28,790 ada apa-apa di sini yang terlihat berbahaya dengan cara apapun. 279 00:20:28,790 --> 00:20:34,600 Tapi, ketika kita menggunakan compiler untuk mengkompilasi kami login.c, 280 00:20:34,600 --> 00:20:38,840 kita mendapatkan versi hackable dari login.c. 281 00:20:38,840 --> 00:20:41,850 Ketika kita menggunakan compiler kami untuk mengkompilasi sebuah versi baru dari kompilator, 282 00:20:41,850 --> 00:20:46,620 kita mendapatkan versi hackable kompilator. 283 00:20:46,620 --> 00:20:51,790 Sekarang jika kita pergi keluar dan mendistribusikan executable compiler kami, 284 00:20:51,790 --> 00:20:59,280 dan tidak ada yang akan tahu bahwa ada sesuatu yang berbahaya tentang hal itu. 285 00:20:59,280 --> 00:21:04,680 >> Ini sebenarnya sehingga - saya tidak ingat tahun - 286 00:21:04,680 --> 00:21:10,350 Ken Thompson, dan dia memenangkan Penghargaan Turing - 287 00:21:10,350 --> 00:21:15,600 jika Anda tidak terbiasa dengan Turing Award, hampir selalu didefinisikan sebagai 288 00:21:15,600 --> 00:21:20,160 Hadiah Nobel ilmu komputer, jadi itulah bagaimana saya akan mendefinisikannya. 289 00:21:20,160 --> 00:21:24,100 Ken Thompson memberikan pidato ketika ia menerima gelar Turing Award 290 00:21:24,100 --> 00:21:27,150 disebut "Refleksi Dipercaya Trusting." 291 00:21:27,150 --> 00:21:30,710 Pada dasarnya, ini adalah ide pidatonya. 292 00:21:30,710 --> 00:21:35,050 Kecuali bukan compiler kami, ia berbicara tentang GCC - 293 00:21:35,050 --> 00:21:37,250 hanyalah compiler seperti dentang - 294 00:21:37,250 --> 00:21:45,600 dan apa yang ia katakan adalah, seperti login.c kami, login.c kami tampaknya relatif tidak berguna 295 00:21:45,600 --> 00:21:50,190 tapi ia sedang berbicara tentang login.c UNIX yang sebenarnya. 296 00:21:50,190 --> 00:21:53,050 Ketika Anda login ke alat Anda, 297 00:21:53,050 --> 00:21:56,070 ada beberapa program login yang sedang berjalan. 298 00:21:56,070 --> 00:21:58,080 Itu adalah login yang ia bicarakan. 299 00:21:58,080 --> 00:22:02,420 Ini pada dasarnya idenya. 300 00:22:02,420 --> 00:22:09,080 Dia mengatakan bahwa di GCC, ia secara teori bisa ditanam bug - 301 00:22:09,080 --> 00:22:12,290 bukan bug tapi kode berbahaya - 302 00:22:12,290 --> 00:22:16,860 bahwa ketika kompilasi fungsi login - file login - 303 00:22:16,860 --> 00:22:23,700 akan memasukkan pintu belakang sehingga ia bisa pergi untuk benar-benar setiap sistem UNIX di dunia 304 00:22:23,700 --> 00:22:27,360 dan login dengan beberapa nama pengguna dan password tertentu. 305 00:22:27,360 --> 00:22:33,710 Pada saat itu, GCC cukup banyak compiler bahwa setiap orang digunakan untuk apa saja. 306 00:22:33,710 --> 00:22:36,460 Jika ada yang terjadi untuk memperbarui GCC, 307 00:22:36,460 --> 00:22:40,880 maka mereka akan mengkompilasi ulang GCC menggunakan GCC, 308 00:22:40,880 --> 00:22:44,500 dan Anda masih akan mendapatkan versi buruk GCC 309 00:22:44,500 --> 00:22:50,140 karena secara khusus disusun untuk mengakui bahwa itu mengkompilasi ulang compiler. 310 00:22:50,140 --> 00:22:57,360 Dan jika Anda pernah menggunakan GCC untuk mengkompilasi ulang file login.c, 311 00:22:57,360 --> 00:23:03,550 maka akan menyisipkan pintu belakang yang ia bisa gunakan untuk login ke komputer manapun. 312 00:23:03,550 --> 00:23:08,750 >> Ini semua teori, tapi - bahwa keadaan tertentu adalah teoritis, 313 00:23:08,750 --> 00:23:12,440 tetapi ide-ide yang sangat nyata. 314 00:23:12,440 --> 00:23:18,250 Pada tahun 2003, ada contoh serupa di mana - 315 00:23:18,250 --> 00:23:21,290 kita akan melihat file ini, 316 00:23:21,290 --> 00:23:25,870 dan sama sekali tidak ada benar-benar melakukan dengan itu, tapi bug serupa. 317 00:23:25,870 --> 00:23:29,390 File ini hanya mendefinisikan sebuah fungsi yang disebut membagi. 318 00:23:29,390 --> 00:23:31,780 Dibutuhkan argumen, sebuah argumen b, 319 00:23:31,780 --> 00:23:34,270 dan tujuannya adalah untuk melakukan dibagi oleh b. 320 00:23:34,270 --> 00:23:37,230 Tapi itu melakukan beberapa pengecekan error, 321 00:23:37,230 --> 00:23:40,070 jadi kita tahu hal-hal yang aneh jika b terjadi sama dengan nol. 322 00:23:40,070 --> 00:23:44,900 Jika b adalah nol, maka kita membagi ini menjadi 2 kasus. 323 00:23:44,900 --> 00:23:46,900 Anda mungkin sudah melihat bug. 324 00:23:46,900 --> 00:23:51,840 Kasus pertama - jika adalah nol, maka kita lakukan nol dibagi dengan nol, 325 00:23:51,840 --> 00:23:54,300 dan kami hanya mengatakan itu tidak terdefinisi. 326 00:23:54,300 --> 00:23:56,250 Kasus kedua - jika tidak nol, 327 00:23:56,250 --> 00:24:00,580 maka itu sesuatu seperti 1 dibagi dengan nol, dan kita hanya memanggil tak terhingga itu. 328 00:24:00,580 --> 00:24:03,730 Lain kita kembali biasa yang dibagi oleh b. 329 00:24:03,730 --> 00:24:06,390 Dan jadi di sini, kita menjalankan mereka 3 kasus, 330 00:24:06,390 --> 00:24:13,740 dan kita benar-benar menjalankan membagi - itu berteriak untuk saya - 331 00:24:13,740 --> 00:24:21,330 sehingga, mengabaikan peringatan dentang ini - 332 00:24:21,330 --> 00:24:24,500 akhir non-void fungsi - ternyata saya tidak mengkompilasi ini sebelumnya. 333 00:24:24,500 --> 00:24:26,500 Kembali 0. 334 00:24:26,500 --> 00:24:28,900 Membuat membagi - baik-baik saja. 335 00:24:28,900 --> 00:24:32,470 Dengan / divide., Kita melihat 3, Infinity, Infinity. 336 00:24:32,470 --> 00:24:39,150 Nol dibagi dengan nol seharusnya tidak kembali tak terhingga. 337 00:24:39,150 --> 00:24:42,840 Dan jika Anda belum tahu bug belum - atau tidak melihatnya sebelumnya - 338 00:24:42,840 --> 00:24:46,800 kita melihat bahwa kita sedang melakukan = 0. 339 00:24:46,800 --> 00:24:52,610 Mungkin kita berarti == 0. Mungkin. 340 00:24:52,610 --> 00:24:58,640 >> Tapi, ini sebenarnya sesuatu yang, sekali lagi, pada tahun 2003, kernel Linux - 341 00:24:58,640 --> 00:25:02,260 sehingga alat kami menggunakan kernel Linux - 342 00:25:02,260 --> 00:25:05,550 setiap sistem operasi Linux menggunakan kernel Linux - 343 00:25:05,550 --> 00:25:11,610 sehingga bug yang sangat mirip dengan ini muncul. 344 00:25:11,610 --> 00:25:15,180 Ide di balik ini adalah bug - 345 00:25:15,180 --> 00:25:18,820 lagi, ada hanya beberapa fungsi yang dipanggil, dan itu sedikit pengecekan error. 346 00:25:18,820 --> 00:25:24,300 Ada beberapa masukan yang spesifik bahwa kesalahan ini memeriksa - 347 00:25:24,300 --> 00:25:30,210 seharusnya seperti, baiklah, Anda tidak bisa memanggil fungsi ini dengan pembagi dari 0. 348 00:25:30,210 --> 00:25:35,070 Jadi, aku akan kembali hanya beberapa error. 349 00:25:35,070 --> 00:25:38,090 Kecuali, itu tidak bersalah karena hanya menetapkan sama dengan 0. 350 00:25:38,090 --> 00:25:46,920 Sebaliknya, baris kode ini akhirnya melakukan sesuatu yang lebih seperti user = administrator. 351 00:25:46,920 --> 00:25:50,500 Atau user = superuser. 352 00:25:50,500 --> 00:25:59,170 Itu adalah tidak bersalah - pada pandangan pertama - kesalahan di mana itu bisa saja wajar 353 00:25:59,170 --> 00:26:01,560 bahwa saya hanya ingin melaporkan sesuatu yang spesifik 354 00:26:01,560 --> 00:26:05,150 jika pengguna kebetulan administrator superuser. 355 00:26:05,150 --> 00:26:11,220 Tapi kemudian kembali berpikir tentang hal itu, orang ingin itu terlihat seperti sederhana ketik, 356 00:26:11,220 --> 00:26:14,330 tetapi jika kode ini sebenarnya telah dirilis, 357 00:26:14,330 --> 00:26:21,580 maka Anda akan mampu untuk kembali ke sistem apapun dengan melewati bendera tertentu - 358 00:26:21,580 --> 00:26:25,200 dalam kasus ini b = 0 - 359 00:26:25,200 --> 00:26:28,020 dan secara otomatis akan membuat pengguna administrator, 360 00:26:28,020 --> 00:26:30,400 dan kemudian ia memiliki kontrol penuh. 361 00:26:30,400 --> 00:26:32,540 Hal ini terjadi pada tahun 2003. 362 00:26:32,540 --> 00:26:35,700 >> Itu hanya kebetulan bahwa satu-satunya alasan itu tertangkap 363 00:26:35,700 --> 00:26:39,200 karena kebetulan sedang ada beberapa sistem otomatis 364 00:26:39,200 --> 00:26:41,540 yang melihat perubahan dalam file ini 365 00:26:41,540 --> 00:26:44,560 yang seharusnya tidak pernah diubah oleh manusia. 366 00:26:44,560 --> 00:26:47,580 File hanya seharusnya secara otomatis dihasilkan. 367 00:26:47,580 --> 00:26:49,780 Itu hanya kebetulan bahwa seseorang menyentuh - 368 00:26:49,780 --> 00:26:52,460 juga, orang yang ingin hack menyentuh file tersebut, 369 00:26:52,460 --> 00:26:55,450 dan komputer tertangkap yang menyentuh. 370 00:26:55,450 --> 00:27:01,750 Jadi, mereka mengubah ini dan hanya kemudian menyadari apa bencana itu akan menjadi 371 00:27:01,750 --> 00:27:04,830 jika ini sudah keluar ke dunia nyata. 372 00:27:04,830 --> 00:27:08,220 >> Anda mungkin berpikir bahwa - kembali ke contoh compiler kami - 373 00:27:08,220 --> 00:27:14,290 meskipun kita tidak dapat melihat - melihat source code - 374 00:27:14,290 --> 00:27:17,490 bahwa sesuatu yang khusus yang salah, 375 00:27:17,490 --> 00:27:25,460 jika kita benar-benar melihat kode biner dari compiler, 376 00:27:25,460 --> 00:27:28,670 kita akan melihat bahwa ada sesuatu yang salah. 377 00:27:28,670 --> 00:27:31,260 Sebagai contoh, jika kita menjalankan string berfungsi - 378 00:27:31,260 --> 00:27:34,930 yang hanya akan melihat lebih file dan mencetak semua string dapat menemukan - 379 00:27:34,930 --> 00:27:37,990 jika kita jalankan string pada kompilator kami, 380 00:27:37,990 --> 00:27:42,400 kita melihat bahwa satu string yang ditemukan ini aneh - 381 00:27:42,400 --> 00:27:45,500 lain jika (strcmp (username, "hacker") - bla, bla, bla. 382 00:27:45,500 --> 00:27:52,570 Jika seseorang kebetulan paranoid cukup untuk tidak mempercayai compiler mereka, 383 00:27:52,570 --> 00:27:56,690 mereka bisa menjalankan string dan melihat ini, 384 00:27:56,690 --> 00:28:00,430 dan kemudian mereka akan tahu bahwa ada sesuatu yang salah dengan biner yang sebenarnya. 385 00:28:00,430 --> 00:28:07,250 Tapi, string adalah pasti sesuatu yang disusun. 386 00:28:07,250 --> 00:28:11,590 Jadi, siapa bilang bahwa kompiler kita tidak hanya memiliki kode yang lebih khusus 387 00:28:11,590 --> 00:28:19,240 yang mengatakan, jika string yang pernah berjalan di compiler kami, jangan menampilkan semua itu kode berbahaya. 388 00:28:19,240 --> 00:28:23,980 >> Ide yang sama dengan jika kita ingin dis-merakit file - 389 00:28:23,980 --> 00:28:30,440 kita belajar bahwa assembler membawa kita dari kode assembly ke kode mesin - 390 00:28:30,440 --> 00:28:36,010 kita bisa pergi ke arah yang berlawanan - objdump-d compiler - 391 00:28:36,010 --> 00:28:38,770 akan memberi kita perakitan kode kita. 392 00:28:38,770 --> 00:28:41,730 Melihat hal ini, 393 00:28:41,730 --> 00:28:47,480 itu cukup samar, tetapi jika kita ingin, kita bisa melihat melalui ini 394 00:28:47,480 --> 00:28:51,700 dan alasan, tunggu, ada sesuatu yang terjadi di sini yang tidak boleh terjadi, 395 00:28:51,700 --> 00:28:59,380 dan kemudian kita akan menyadari bahwa compiler melakukan sesuatu yang berbahaya. 396 00:28:59,380 --> 00:29:03,950 Tapi, seperti string, siapa bilang objdump tidak istimewa-cased. 397 00:29:03,950 --> 00:29:11,380 Pada dasarnya, ia datang ke Anda tidak dapat mempercayai apapun. 398 00:29:11,380 --> 00:29:14,310 Titik kertas yang disebut "Trust Mempercayai" adalah 399 00:29:14,310 --> 00:29:17,900 secara umum, kami percaya compiler kami. 400 00:29:17,900 --> 00:29:21,700 Anda mengkompilasi kode Anda dan berharap untuk melakukan apa yang Anda minta itu harus dilakukan. 401 00:29:21,700 --> 00:29:26,440 Tapi, mengapa Anda percaya compiler? 402 00:29:26,440 --> 00:29:32,120 Anda tidak menulis compiler. Anda tidak tahu apa compiler tentu benar-benar melakukannya. 403 00:29:32,120 --> 00:29:36,870 Siapa bilang yang dapat Anda percaya itu? 404 00:29:36,870 --> 00:29:40,050 Tetapi bahkan kemudian, baik, mungkin kita bisa percaya compiler. 405 00:29:40,050 --> 00:29:44,670 Ada puluhan ribu orang yang telah melihat ini. 406 00:29:44,670 --> 00:29:51,360 Seseorang harus mengakui sesuatu dengan compiler. 407 00:29:51,360 --> 00:29:55,100 >> Bagaimana jika kita hanya pergi 1 tingkat yang lebih dalam? 408 00:29:55,100 --> 00:29:59,450 Bahkan bisa jadi prosesor Anda. 409 00:29:59,450 --> 00:30:01,250 Sebagai konyol seperti itu mungkin bisa, 410 00:30:01,250 --> 00:30:06,690 mungkin ada beberapa karyawan yang nakal di Intel yang menciptakan prosesor 411 00:30:06,690 --> 00:30:12,400 bahwa setiap kali prosesor yang melihat bahwa Anda menjalankan beberapa perintah 412 00:30:12,400 --> 00:30:14,570 yang dimaksudkan untuk login ke komputer, 413 00:30:14,570 --> 00:30:19,230 prosesor akan menerima beberapa nama pengguna yang spesifik dan kombinasi sandi. 414 00:30:19,230 --> 00:30:21,530 Ini akan liar rumit, 415 00:30:21,530 --> 00:30:24,790 tapi seseorang bisa melakukannya. 416 00:30:24,790 --> 00:30:29,350 Pada saat itu, Anda benar-benar akan membuka komputer Anda untuk melihat prosesor 417 00:30:29,350 --> 00:30:35,970 dan menggunakan mikroskop untuk mengakui bahwa sirkuit ini tidak berbaris sebagaimana mestinya? 418 00:30:35,970 --> 00:30:39,730 Tidak ada yang pernah akan menangkap kesalahan itu. 419 00:30:39,730 --> 00:30:45,570 Pada titik tertentu, Anda hanya perlu menyerah dan percaya sesuatu. 420 00:30:45,570 --> 00:30:48,390 Kebanyakan orang percaya compiler pada saat ini. 421 00:30:48,390 --> 00:30:55,760 Artinya belum tentu bahwa Anda harus. 422 00:30:55,760 --> 00:30:59,350 Melihat video yang agak terkenal - 423 00:30:59,350 --> 00:31:09,280 [Musik dramatis bermain] 424 00:31:09,280 --> 00:31:13,270 [Ini adalah sistem UNIX. Aku tahu ini.] 425 00:31:13,270 --> 00:31:14,470 [Ini semua file -] 426 00:31:14,470 --> 00:31:18,950 Dia berkata, "Ini sebuah sistem UNIX saya tahu ini.." 427 00:31:18,950 --> 00:31:21,760 Ganti UNIX dengan sistem operasi apa pun favorit Anda - 428 00:31:21,760 --> 00:31:25,230 dia bisa berkata, "Ini adalah sistem Windows Aku tahu ini.." 429 00:31:25,230 --> 00:31:29,710 Ini adalah pernyataan yang benar-benar berarti, 430 00:31:29,710 --> 00:31:34,450 tetapi untuk semua kita tahu, dia kebetulan tahu pintu belakang ke dalam sistem UNIX. 431 00:31:34,450 --> 00:31:38,840 Dia tahu beberapa kombinasi username / password yang benar-benar akan membiarkan dia 432 00:31:38,840 --> 00:31:41,540 melakukan apapun yang dia inginkan. 433 00:31:41,540 --> 00:31:49,000 >> Baiklah. Pesan moral hari ini pada dasarnya Anda tidak dapat mempercayai apapun. 434 00:31:49,000 --> 00:31:52,620 Bahkan hal yang Anda tulis - Anda tidak menulis compiler. 435 00:31:52,620 --> 00:31:53,870 Compiler bisa menjadi buruk. 436 00:31:53,870 --> 00:31:59,140 Bahkan jika Anda tidak menulis compiler, hal yang berjalan compiler bisa buruk. 437 00:31:59,140 --> 00:32:05,210 (Tertawa) Tak banyak yang dapat Anda lakukan. 438 00:32:05,210 --> 00:32:09,050 Dunia ini hancur. 439 00:32:09,050 --> 00:32:11,570 Kembali ke David! 440 00:32:11,570 --> 00:32:19,540 [Tepuk tangan] 441 00:32:19,540 --> 00:32:21,340 >> [David] Thanks. Itu benar-benar menyedihkan. 442 00:32:21,340 --> 00:32:23,910 Tapi memang, Rob benar. 443 00:32:23,910 --> 00:32:27,150 Kami tidak benar-benar memiliki solusi untuk itu, tapi kau akan mendapatkan beberapa solusi 444 00:32:27,150 --> 00:32:29,150 untuk beberapa pertahanan lebih umum. 445 00:32:29,150 --> 00:32:31,170 Untuk mengantisipasi hal ini, apa yang Nate dan saya telah melakukan luar panggung ada 446 00:32:31,170 --> 00:32:33,950 adalah mengetahui bahwa ada begitu banyak laptop di ruangan ini, 447 00:32:33,950 --> 00:32:37,020 kami sudah mengendus semua lalu lintas nirkabel akan melalui ruangan ini selama 20 menit lalu 448 00:32:37,020 --> 00:32:39,260 saat bicara Rob, jadi kita akan mengambil istirahat 2 menit di sini. 449 00:32:39,260 --> 00:32:41,740 Nate akan mengatur, dan kemudian kita akan berbicara tentang semua hal yang 450 00:32:41,740 --> 00:32:46,380 kita bisa menemukan. (Tertawa) 451 00:32:46,380 --> 00:32:51,990 >> Jadi, saya mungkin telah melebih-lebihkan sedikit hanya demi drama, 452 00:32:51,990 --> 00:32:55,990 tapi kita bisa telah mengendus semua lalu lintas nirkabel Anda karena memang, 453 00:32:55,990 --> 00:32:57,240 itu adalah mudah. 454 00:32:57,240 --> 00:32:59,790 Namun ada juga cara yang dapat bertahan melawan ini, sehingga dengan itu, 455 00:32:59,790 --> 00:33:03,160 Saya memberi Anda Nate Hardison. >> [Nate] Sweet. 456 00:33:03,160 --> 00:33:06,300 (Tepuk tangan) 457 00:33:06,300 --> 00:33:08,650 >> [Nate] Thanks, man. Saya menghargai berteriak keluar. 458 00:33:08,650 --> 00:33:12,790 Baiklah! Ini minggu permainan. Apakah kalian bersemangat? 459 00:33:12,790 --> 00:33:16,670 Mudah-mudahan itu akan menjadi pertandingan besar pada hari Sabtu. 460 00:33:16,670 --> 00:33:20,220 Aku membayangkan kalian pada saat ini - mengingat bahwa Anda memiliki kuis pada hari Rabu 461 00:33:20,220 --> 00:33:24,430 semua tentang kode, dan kita hanya duduk melalui kuliah indah oleh Rob 462 00:33:24,430 --> 00:33:25,850 dengan sejumlah besar kode C di dalamnya - 463 00:33:25,850 --> 00:33:28,330 yang mungkin sedikit lelah kode. 464 00:33:28,330 --> 00:33:32,180 Dalam bagian ini, kita benar-benar tidak akan menyentuh kode apapun. 465 00:33:32,180 --> 00:33:36,960 Kami hanya akan berbicara tentang teknologi yang Anda gunakan setiap hari, 466 00:33:36,960 --> 00:33:39,790 sering bagi banyak, berjam-jam sehari, 467 00:33:39,790 --> 00:33:46,220 dan kita akan berbicara tentang implikasi dengan keamanan yang ada. 468 00:33:46,220 --> 00:33:48,960 >> Kami telah berbicara banyak tentang keamanan selama semester, 469 00:33:48,960 --> 00:33:53,030 dan kita mulai dengan sedikit kripto. 470 00:33:53,030 --> 00:33:55,030 [Bdoh lv vwlqng!] 471 00:33:55,030 --> 00:33:57,890 Dan sementara kalian mungkin super bersemangat untuk melewati catatan satu sama lain 472 00:33:57,890 --> 00:33:59,890 di kelas menggunakan cipher Caesar seperti ini, 473 00:33:59,890 --> 00:34:03,870 pada kenyataannya, ada beberapa lebih menyenangkan yang bisa didapat ketika Anda benar-benar berbicara tentang keamanan 474 00:34:03,870 --> 00:34:05,870 dan hal semacam itu. 475 00:34:05,870 --> 00:34:09,090 Hari ini, kita akan membahas beberapa teknologi 476 00:34:09,090 --> 00:34:13,650 bahwa orang benar-benar digunakan dalam dunia nyata untuk melakukan segala macam hal 477 00:34:13,650 --> 00:34:18,360 dari sniffing paket orang untuk benar-benar masuk dan 478 00:34:18,360 --> 00:34:20,409 membobol rekening bank orang dan semua itu. 479 00:34:20,409 --> 00:34:23,460 Ini adalah alat yang sah yang kita bicarakan 480 00:34:23,460 --> 00:34:26,320 dengan pengecualian mungkin satu alat. 481 00:34:26,320 --> 00:34:28,889 >> Dan aku hanya ingin membuat disclaimer cepat. 482 00:34:28,889 --> 00:34:34,909 Ketika kita berbicara tentang hal-hal ini, kita sedang berbicara tentang mereka sehingga Anda tahu apa yang ada di luar sana, 483 00:34:34,909 --> 00:34:39,389 dan Anda menyadari bagaimana menjadi aman ketika Anda keluar menggunakan komputer Anda. 484 00:34:39,389 --> 00:34:44,000 Tapi kita pasti tidak ingin menyiratkan bahwa Anda harus menggunakan alat-alat 485 00:34:44,000 --> 00:34:48,090 di asrama atau rumah Anda karena Anda bisa lari ke banyak masalah besar. 486 00:34:48,090 --> 00:34:52,760 Itulah salah satu alasan hari ini bahwa kita benar-benar tidak mengendus paket Anda. 487 00:34:52,760 --> 00:35:01,300 >> Baiklah. Senin lalu, kita berbicara tentang cookie, dan HTTP, dan otentikasi, 488 00:35:01,300 --> 00:35:05,920 dan bagaimana Firesheep membuka pintu ini besar ke akun Facebook Anda, 489 00:35:05,920 --> 00:35:08,670 ke account Hotmail Anda - jika ada yang masih menggunakan Hotmail - 490 00:35:08,670 --> 00:35:12,360 dan account lainnya. 491 00:35:12,360 --> 00:35:16,980 Banyak hal ini akan membangun off dari itu, 492 00:35:16,980 --> 00:35:22,070 tapi pertama-tama, saya ingin mengambil tur singkat tentang bagaimana internet telah berkembang dari waktu ke waktu. 493 00:35:22,070 --> 00:35:27,490 Kembali di tahun 90-an, kalian mungkin ingat sebenarnya mencolokkan 494 00:35:27,490 --> 00:35:29,880 Anda komputer dengan salah satu. 495 00:35:29,880 --> 00:35:32,640 Sekarang kita tidak melakukan itu begitu banyak lagi. 496 00:35:32,640 --> 00:35:37,230 Ini benar-benar ternyata bahwa dalam rangka untuk plug kabel Ethernet ke laptop saya, 497 00:35:37,230 --> 00:35:41,710 Saya sekarang harus menggunakan salah satu adapter yang agak gila. 498 00:35:41,710 --> 00:35:47,580 >> Sebaliknya, pada tahun 1997 kami memiliki teknologi ini, baru yang menyenangkan 499 00:35:47,580 --> 00:35:54,960 keluar yang dikenal sebagai IEEE 802.11, jadi ini adalah standar internet nirkabel 500 00:35:54,960 --> 00:36:00,430 The IEEE ini badan yang memberikan semua macam - 501 00:36:00,430 --> 00:36:04,770 menerbitkan segala macam standar dengan hubungannya dengan komputer. 502 00:36:04,770 --> 00:36:08,780 The 802 standar adalah semua tentang teknologi internet. 503 00:36:08,780 --> 00:36:12,690 Jadi 802,3, misalnya, adalah standar Ethernet, 504 00:36:12,690 --> 00:36:17,120 802.15.1 saya percaya adalah standar Bluetooth, 505 00:36:17,120 --> 00:36:19,540 dan 802.11 adalah semua tentang internet nirkabel. 506 00:36:19,540 --> 00:36:24,150 Pada tahun 1997 ini keluar. Ini tidak cukup menangkap langsung. 507 00:36:24,150 --> 00:36:30,200 Itu tidak sampai tahun 1999 dan standar 802.11b keluar yang baru saja benar-benar populer. 508 00:36:30,200 --> 00:36:36,330 >> Berapa banyak dari Anda ingat ketika komputer mulai keluar dan mendapatkan wi-fi pada mereka? 509 00:36:36,330 --> 00:36:38,330 Itu agak dingin, ya? 510 00:36:38,330 --> 00:36:41,260 Aku ingat mendapatkan laptop pertama saya di SMA, 511 00:36:41,260 --> 00:36:44,250 dan memiliki kartu nirkabel di dalamnya. 512 00:36:44,250 --> 00:36:49,580 Ayahku memberikannya kepada saya dan mengatakan bahwa saya harus menggunakannya untuk aplikasi kuliah saya dan semua itu, 513 00:36:49,580 --> 00:36:53,030 dan saya tidak tahu bagaimana saya akan mencari hal ini secara online. 514 00:36:53,030 --> 00:36:54,640 Tapi untungnya, aku punya kartu nirkabel, jadi itu cukup keren. 515 00:36:54,640 --> 00:37:04,090 Saat ini, Anda juga akan melihat 802.11g yang merupakan salah satu dari yang lain benar-benar populer 516 00:37:04,090 --> 00:37:06,090 nirkabel standar yang ada di luar sana. 517 00:37:06,090 --> 00:37:08,660 Baik b dan g yang cukup usang pada saat ini. 518 00:37:08,660 --> 00:37:12,580 Siapa tahu apa versi kebanyakan orang pada saat ini 519 00:37:12,580 --> 00:37:15,110 jika mereka membeli router nirkabel baru dan hal-hal semacam? 520 00:37:15,110 --> 00:37:24,290 N. Tepat. Bingo. Dan ternyata standar ac hanya keluar dalam bentuk draft, 521 00:37:24,290 --> 00:37:28,050 dan ada versi lain di jalan. 522 00:37:28,050 --> 00:37:31,190 Dengan masing-masing standar apa yang kita mendapatkan yang lebih banyak bandwidth, 523 00:37:31,190 --> 00:37:33,900 lebih banyak data pada tingkat yang lebih cepat. 524 00:37:33,900 --> 00:37:36,260 Hal-hal ini terus berubah cukup cepat. 525 00:37:36,260 --> 00:37:39,880 Hal ini juga membuatnya sehingga kita harus membeli router lebih dan semua hal menyenangkan. 526 00:37:39,880 --> 00:37:48,160 >> Mari kita bicara tentang apa komunikasi nirkabel sebenarnya pada intinya. 527 00:37:48,160 --> 00:37:51,790 Dengan Ethernet dan mereka dial-up modem lama, 528 00:37:51,790 --> 00:37:55,780 Anda benar-benar memiliki hal-hal ini yang Anda terhubung ke komputer Anda, 529 00:37:55,780 --> 00:37:59,820 dan kemudian Anda terhubung ke modem macam, dan kemudian Anda dicolokkan ke jack di dinding Anda. 530 00:37:59,820 --> 00:38:01,820 Anda punya koneksi kabel, kan? 531 00:38:01,820 --> 00:38:06,030 Inti dari nirkabel menyingkirkan hal ini. 532 00:38:06,030 --> 00:38:10,300 Untuk melakukan itu, apa yang kita miliki pada dasarnya 533 00:38:10,300 --> 00:38:13,960 komunikasi radio di mana router nirkabel kami - 534 00:38:13,960 --> 00:38:16,230 ditunjuk oleh ikon kecil nirkabel - 535 00:38:16,230 --> 00:38:21,730 terhubung ke Internet dengan panah yang solid menunjukkan semacam koneksi kabel, 536 00:38:21,730 --> 00:38:24,640 tetapi ketika Anda terhubung ke router nirkabel Anda 537 00:38:24,640 --> 00:38:29,190 Anda benar-benar menggunakan hampir seperti walkie-talkie antara 538 00:38:29,190 --> 00:38:31,960 Anda komputer dan router nirkabel Anda. 539 00:38:31,960 --> 00:38:35,150 Apa yang benar-benar keren tentang ini adalah Anda dapat bergerak di sekitar. 540 00:38:35,150 --> 00:38:40,900 Anda dapat membawa komputer Anda di seluruh Sanders, pergi menjelajahi web, apa pun yang Anda inginkan, 541 00:38:40,900 --> 00:38:43,240 sama seperti Anda semua tahu dan cinta, 542 00:38:43,240 --> 00:38:46,030 dan Anda tidak pernah harus terhubung dengan apapun. 543 00:38:46,030 --> 00:38:53,880 Untuk bekerja, kami memiliki keduanya ini penerimaan dan transmisi. 544 00:38:53,880 --> 00:38:56,060 Ini benar-benar seperti itu walkie-talkie. 545 00:38:56,060 --> 00:39:03,800 >> Ini router nirkabel - yang dalam Sanders duduk di bawah tahap ini, di sini - 546 00:39:03,800 --> 00:39:06,590 selalu menyiarkan dan menerima, penyiaran dan menerima, 547 00:39:06,590 --> 00:39:09,330 dan juga, komputer Anda semua melakukan hal itu hal yang sama juga. 548 00:39:09,330 --> 00:39:12,840 Kami hanya tidak bisa mendengarnya. 549 00:39:12,840 --> 00:39:17,900 Hal lain yang dapat Anda lakukan adalah Anda dapat memiliki beberapa komputer 550 00:39:17,900 --> 00:39:22,200 berbicara dengan router nirkabel yang sama. 551 00:39:22,200 --> 00:39:25,680 Semakin dekat Anda ke router - dan lagi, ini adalah komunikasi radio - 552 00:39:25,680 --> 00:39:30,320 semakin dekat Anda, semakin baik sinyal Anda, semakin baik komputer Anda 'mendengar' router 553 00:39:30,320 --> 00:39:32,460 dan dapat berkomunikasi dengan internet. 554 00:39:32,460 --> 00:39:39,520 Jika kalian pernah di asrama Anda, di rumah Anda dan Anda bertanya-tanya mengapa sinyal buruk, 555 00:39:39,520 --> 00:39:42,230 itu mungkin karena a). Anda tidak sangat dekat dengan router Anda, atau 556 00:39:42,230 --> 00:39:46,930 b). ada sesuatu di antara Anda dan router Anda seperti dinding semen atau sesuatu 557 00:39:46,930 --> 00:39:50,720 yang tidak membiarkan mereka pergi melalui gelombang radio. 558 00:39:50,720 --> 00:39:57,850 >> Mari kita bicara sedikit tentang mengapa orang-orang jahat seperti wi-fi. 559 00:39:57,850 --> 00:40:02,980 Orang-orang jahat mencintai wi-fi karena beberapa alasan. 560 00:40:02,980 --> 00:40:06,670 Berikut orang jahat buruk kita di sana. 561 00:40:06,670 --> 00:40:10,660 Salah satu alasan mengapa hal ini orang jahat mencintai wi-fi 562 00:40:10,660 --> 00:40:18,770 karena, secara default, banyak router nirkabel datang dan ketika Anda mengaturnya, 563 00:40:18,770 --> 00:40:20,950 mereka tidak terenkripsi. 564 00:40:20,950 --> 00:40:23,970 Ini telah menjadi masalah, dan ada kasus - 565 00:40:23,970 --> 00:40:28,210 beberapa kasus, sekarang - di mana orang jahat muncul ke rumah seseorang, 566 00:40:28,210 --> 00:40:32,630 pemberitahuan bahwa ada terenkripsi wi-fi yang mereka dapat terhubung. 567 00:40:32,630 --> 00:40:37,350 Mereka terhubung ke wi-fi, dan kemudian mereka mulai men-download segala macam hal-hal menyenangkan. 568 00:40:37,350 --> 00:40:40,890 Dan mereka tidak men-download kucing, mereka tidak men-download anak anjing. 569 00:40:40,890 --> 00:40:44,610 Ini seperti BitTorrent. Ini adalah jahat dari yang menjijikkan. 570 00:40:44,610 --> 00:40:48,740 Ada beberapa kasus di mana FBI bahkan telah gotten terlibat 571 00:40:48,740 --> 00:40:52,390 berpikir bahwa orang yang memiliki rumah sebenarnya adalah salah satu yang 572 00:40:52,390 --> 00:40:56,090 pergi keluar dan men-download hal-hal yang mereka benar-benar tidak boleh. 573 00:40:56,090 --> 00:41:00,730 Setelah terenkripsi wi-fi pasti bukan sesuatu yang ingin Anda lakukan, 574 00:41:00,730 --> 00:41:06,340 jika hanya untuk tidak memiliki FBI datang mengetuk pintu Anda. 575 00:41:06,340 --> 00:41:09,910 >> Alasan lain mengapa orang-orang jahat mencintai wi-fi 576 00:41:09,910 --> 00:41:13,870 adalah alasan bahwa Daud bicarakan sebelumnya selama istirahat. 577 00:41:13,870 --> 00:41:17,240 Karena itu komunikasi radio pada intinya, 578 00:41:17,240 --> 00:41:22,460 jika Anda tahu saluran, Anda dapat mendengarkan stasiun radio yang. 579 00:41:22,460 --> 00:41:31,870 Misalnya, jika ada hak buruk di sana duduk di tengah kanan sebelah jalur akses, 580 00:41:31,870 --> 00:41:36,830 tepat di samping bahwa router nirkabel, orang jahat dapat mendengarkan pada semua lalu lintas nirkabel 581 00:41:36,830 --> 00:41:40,240 yang datang dari semua komputer-komputer. 582 00:41:40,240 --> 00:41:44,590 Bahkan, orang-orang ini - ini beberapa yang beruntung berada di sini di barisan depan - 583 00:41:44,590 --> 00:41:47,610 karena mereka adalah super-dekat dengan semua router nirkabel 584 00:41:47,610 --> 00:41:49,950 yang duduk persis di bawah panggung, 585 00:41:49,950 --> 00:41:53,780 mereka akan dapat mendengar lalu lintas semua orang di seluruh ruangan 586 00:41:53,780 --> 00:41:59,480 jika Anda terhubung ke wi-fi dan mulai browsing melalui titik-titik akses. 587 00:41:59,480 --> 00:42:03,740 Hal ini tidak terlalu sulit untuk duduk diri Anda dalam posisi yang baik untuk mengendus dan mencari tahu 588 00:42:03,740 --> 00:42:07,030 apa yang orang lain lakukan. 589 00:42:07,030 --> 00:42:10,830 Ini adalah sesuatu yang perlu diingat, terutama jika Anda tidak yakin di mana titik akses, 590 00:42:10,830 --> 00:42:15,010 dan Anda sedang browsing mengatakan, di Starbucks. 591 00:42:15,010 --> 00:42:17,360 >> Ternyata mengendus dan semua itu 592 00:42:17,360 --> 00:42:19,440 tidak benar-benar semua yang sulit untuk dilakukan. 593 00:42:19,440 --> 00:42:25,430 Ada sebuah program yang disebut tcpdump yang membuang segala macam lalu lintas TCP 594 00:42:25,430 --> 00:42:29,910 dan Anda dapat menjalankannya cukup sederhana - seperti yang saya lakukan pagi ini. 595 00:42:29,910 --> 00:42:32,810 Berikut sedikit dump, dan inilah beberapa dari lalu lintas yang datang ke 596 00:42:32,810 --> 00:42:34,960 jaringan saya pada saat itu. 597 00:42:34,960 --> 00:42:41,500 Anda dapat melihat - jika Anda juling benar-benar keras - ada sedikit Spotify di sana. 598 00:42:41,500 --> 00:42:44,050 Di atas tcpdump - karena ini adalah jenis rasa sakit untuk menggunakan - 599 00:42:44,050 --> 00:42:48,860 ada program yang disebut Wireshark yang bundel ini semuanya dalam GUI yang bagus. 600 00:42:48,860 --> 00:42:51,970 Wireshark adalah super-berguna sehingga jika Anda pergi untuk mengambil kelas jaringan, 601 00:42:51,970 --> 00:42:56,780 ini adalah alat yang Anda akan datang untuk mencintai karena membantu Anda membedah semua paket 602 00:42:56,780 --> 00:42:59,400 yang mengambang di luar sana. 603 00:42:59,400 --> 00:43:01,810 Tetapi juga dapat digunakan untuk buruk. 604 00:43:01,810 --> 00:43:05,810 Ini sangat sederhana untuk hanya men-download program ini, boot up, 605 00:43:05,810 --> 00:43:09,300 memulai menangkap jaringan, dan melihat segala sesuatu yang terjadi - 606 00:43:09,300 --> 00:43:14,130 dan menyaring dan melakukan segala macam hal-hal menyenangkan dengan itu. 607 00:43:14,130 --> 00:43:17,930 >> Hal lain yang dapat Anda lakukan dengan komunikasi nirkabel 608 00:43:17,930 --> 00:43:25,380 tidak hanya bisa Anda menguping tetapi Anda juga dapat belajar bagaimana untuk sekrup dengan jaringan 609 00:43:25,380 --> 00:43:31,020 dan menyuntikkan informasi Anda sendiri untuk mengontrol pengalaman yang orang lain 610 00:43:31,020 --> 00:43:35,140 pada jaringan nirkabel yang sama mendapatkan. 611 00:43:35,140 --> 00:43:37,140 Mari kita lihat pada saat itu. 612 00:43:37,140 --> 00:43:40,700 Berikut Firesheep - yang kita kenal dan cinta dari minggu lalu - 613 00:43:40,700 --> 00:43:43,590 yaitu bahwa teknologi menguping. 614 00:43:43,590 --> 00:43:50,360 Jika, misalnya, kita ingin aktif memiliki orang jahat kami pergi dan main-main dengan 615 00:43:50,360 --> 00:43:52,690 salah satu komputer, 616 00:43:52,690 --> 00:43:58,380 dalam skenario ini kita punya komputer mencoba untuk pergi surfing ke harvard.edu. 617 00:43:58,380 --> 00:44:04,690 Yang terjadi adalah, komputer pertama mengirimkan pesan ke router nirkabel dan berkata, 618 00:44:04,690 --> 00:44:07,920 hey, aku ingin pergi www.harvard.edu kunjungan. 619 00:44:07,920 --> 00:44:10,610 Katakanlah untuk beberapa alasan mereka berusaha untuk mendapatkan informasi tentang permainan akhir pekan ini. 620 00:44:10,610 --> 00:44:14,940 Orang jahat, karena dia duduk tepat di tengah, 621 00:44:14,940 --> 00:44:18,730 tepat di samping titik akses, bisa melihat komunikasi yang berasal dari komputer 622 00:44:18,730 --> 00:44:26,170 ke router, dan dia tahu, "Aha Seseorang! akan harvard.edu." (Evilly tertawa) 623 00:44:26,170 --> 00:44:33,870 Ada akan menjadi latency ini sementara komunikasi berjalan dari router 624 00:44:33,870 --> 00:44:37,780 keluar ke Internet untuk pergi mencari halaman web di-harvard.edu - 625 00:44:37,780 --> 00:44:42,020 seperti kalian semua tahu setelah melakukan Anda psets PHP - 626 00:44:42,020 --> 00:44:45,680 dan jadi orang jahat memiliki sedikit waktu, sedikit jendela, 627 00:44:45,680 --> 00:44:49,410 di mana ia dapat merespon dengan beberapa barang. 628 00:44:49,410 --> 00:44:53,660 >> Mari kita mengatakan ini orang jahat, tentu saja, adalah sebuah Yaley. 629 00:44:53,660 --> 00:44:59,990 Dia merespon dengan harvardsucks.org. Boo! 630 00:44:59,990 --> 00:45:02,300 Bad guy, buruk! Yaley buruk! 631 00:45:02,300 --> 00:45:06,020 Atau bahkan lebih buruk lagi, ia mungkin menanggapi dengan itu. [Http://youtu.be/ZSBq8geuJk0]. 632 00:45:06,020 --> 00:45:09,530 Aku akan membiarkan kalian mengetahui apa itu. 633 00:45:09,530 --> 00:45:14,840 Ini sebenarnya adalah sebuah teknologi yang disebut Airpwn! yang debut di 634 00:45:14,840 --> 00:45:18,950 salah satu konferensi keamanan beberapa tahun lalu. 635 00:45:18,950 --> 00:45:25,190 Dengan Airpwn! Anda dapat benar-benar menyuntikkan lalu lintas kembali ke jaringan. 636 00:45:25,190 --> 00:45:30,060 Komputer yang mencoba untuk pergi keluar ke Internet dan mencoba untuk mendapatkan ke 637 00:45:30,060 --> 00:45:33,090 Google.com, ke Facebook.com, ke harvard.edu 638 00:45:33,090 --> 00:45:39,190 melihat respon berbahaya datang dan langsung menganggap, oke, 639 00:45:39,190 --> 00:45:43,550 itulah respon yang saya sedang menunggu dan akhirnya mendapatkan konten dari 640 00:45:43,550 --> 00:45:48,860 harvardsucks.org atau nameyourfavoriteshocksite.com, 641 00:45:48,860 --> 00:45:55,270 dan Anda dapat melihat seberapa cepat hal-hal yang akan memburuk. 642 00:45:55,270 --> 00:46:00,190 >> Semua hal-hal ini tidak dapat dilakukan 643 00:46:00,190 --> 00:46:05,870 dengan koneksi kabel karena dengan sambungan kabel 644 00:46:05,870 --> 00:46:08,710 sulit untuk mengintip lalu lintas. 645 00:46:08,710 --> 00:46:13,020 Jika aku orang jahat dan pada salah satu ujungnya adalah komputer Anda 646 00:46:13,020 --> 00:46:14,460 dan di ujung lainnya adalah router - modem - 647 00:46:14,460 --> 00:46:20,180 satu-satunya cara saya bisa mendapatkan di antara hubungan itu adalah benar-benar sambatan komputer saya 648 00:46:20,180 --> 00:46:22,180 di suatu tempat di tengah 649 00:46:22,180 --> 00:46:26,820 atau melakukan sesuatu yang lain dengan router, hilir sesuatu. 650 00:46:26,820 --> 00:46:33,360 Tapi dengan nirkabel, dapat semudah duduk di barisan depan kelas, 651 00:46:33,360 --> 00:46:38,200 dan Anda dapat melakukan segala macam hal-hal buruk kepada orang-orang di belakang. 652 00:46:38,200 --> 00:46:41,570 >> Mari kita bicara tentang bagaimana Anda bisa bertahan terhadap beberapa hal. 653 00:46:41,570 --> 00:46:46,860 Orang-orang yang mengembangkan standar nirkabel - 802.11 - 654 00:46:46,860 --> 00:46:50,820 mereka bukan orang bodoh oleh imajinasi. 655 00:46:50,820 --> 00:46:56,110 Ini adalah teknologi dingin dan ketika memulai debutnya pada tahun 1999, 656 00:46:56,110 --> 00:47:00,780 mereka keluar dengan standar ini disebut WEP. 657 00:47:00,780 --> 00:47:03,360 Anda bisa lihat di sini ketika Anda mencoba dan bergabung dengan jaringan nirkabel, 658 00:47:03,360 --> 00:47:07,450 Anda memiliki segala macam pilihan keamanan yang berbeda. 659 00:47:07,450 --> 00:47:11,800 Itulah jenis rasa sakit karena ada 6 semua bersama-sama 660 00:47:11,800 --> 00:47:14,790 dan itu tidak pernah benar-benar masuk akal yang 1 untuk bergabung. 661 00:47:14,790 --> 00:47:19,190 Ini 1 di atas adalah yang pertama yang mereka datang dengan disebut WEP. 662 00:47:19,190 --> 00:47:27,960 WEP adalah singkatan dari Wired Equivalent Privacy, saya percaya, 663 00:47:27,960 --> 00:47:31,730 Enkripsi tidak Protocol Wireless yang merupakan ironi umum. 664 00:47:31,730 --> 00:47:36,170 Karena mencoba untuk memberikan setara privasi dan perlindungan keamanan 665 00:47:36,170 --> 00:47:40,590 setara dengan jaringan kabel 666 00:47:40,590 --> 00:47:46,710 Dengan WEP apa yang akhirnya terjadi adalah, 667 00:47:46,710 --> 00:47:52,300 Anda memiliki password, sederhana kecil yang Anda ketik dan yang berfungsi untuk mengenkripsi 668 00:47:52,300 --> 00:47:56,210 semua komunikasi antara komputer Anda dan router Anda. 669 00:47:56,210 --> 00:47:58,210 >> Apa masalahnya dengan WEP meskipun? 670 00:47:58,210 --> 00:48:01,470 Password dengan WEP benar-benar singkat, 671 00:48:01,470 --> 00:48:04,900 dan juga semua orang menggunakan bahwa password yang sama persis, 672 00:48:04,900 --> 00:48:07,610  dan sehingga benar-benar mudah untuk mendekripsi. 673 00:48:07,610 --> 00:48:10,580 Jadi sangat cepat orang tahu bahwa WEP adalah masalah, 674 00:48:10,580 --> 00:48:16,100 dan satu-satunya alasan Anda melihatnya muncul masih pada si kecil adalah - 675 00:48:16,100 --> 00:48:18,890 ada beberapa sistem yang lebih tua yang menggunakan WEP - 676 00:48:18,890 --> 00:48:25,710 apa yang Anda malah harus mencari adalah WPA dan WPA2 bahkan standar 677 00:48:25,710 --> 00:48:29,130 yang dirilis di kemudian hari. 678 00:48:29,130 --> 00:48:35,040 Sistem ini adalah pergi jauh lebih baik pada perlindungan di Internet nirkabel. 679 00:48:35,040 --> 00:48:41,090 Yang mengatakan, mereka masih memiliki beberapa hackability. 680 00:48:41,090 --> 00:48:44,010 Ada alat di luar sana yang bisa melakukan hal ini. 681 00:48:44,010 --> 00:48:47,490 Satu hal tertentu yang bisa menjadi jahat adalah bahwa 682 00:48:47,490 --> 00:48:55,370 jika Anda terhubung dan dikonfirmasi ke router nirkabel dan menggunakan semacam 683 00:48:55,370 --> 00:49:00,940 komunikasi terenkripsi, ternyata seorang hacker dapat dengan mudah mengirim satu paket 684 00:49:00,940 --> 00:49:03,990 untuk memutuskan sambungan Anda dari router, 685 00:49:03,990 --> 00:49:07,220 dan sekali mereka sudah terputus Anda mereka kemudian dapat mendengarkan - 686 00:49:07,220 --> 00:49:11,800 mereka dapat mengendus paket tersebut saat Anda mencoba untuk membangun kembali hubungan dengan router Anda. 687 00:49:11,800 --> 00:49:16,800 Dan dengan informasi yang mereka kemudian dapat masuk dan mendekripsi seluruh komunikasi Anda. 688 00:49:16,800 --> 00:49:24,580 Hal ini tidak dengan cara apapun apapun aman di luar imajinasi semua. 689 00:49:24,580 --> 00:49:30,060 >> Hal lain yang dapat Anda lakukan ketika Anda sedang menyiapkan jaringan nirkabel 690 00:49:30,060 --> 00:49:35,460 atau Anda bergabung dengan mereka adalah - Anda melihat bahwa di sini ketika saya bergabung dengan jaringan ini, 691 00:49:35,460 --> 00:49:37,640 itu meminta nama jaringan saya. 692 00:49:37,640 --> 00:49:41,060 Hal ini juga dikenal sebagai SSID. 693 00:49:41,060 --> 00:49:48,610 Dan Anda lihat di sini bahwa di sebelah kanan saya memiliki kotak yang menunjukkan saya SSIDs tersedia. 694 00:49:48,610 --> 00:49:52,690 Ada Universitas Harvard, yang CS50, dan jaringan Staf CS50. 695 00:49:52,690 --> 00:49:59,180 Sekarang, berapa banyak dari Anda tahu ada jaringan Staf CS50 sekitar? 696 00:49:59,180 --> 00:50:01,910 Beberapa dari Anda. Tidak semua dari Anda. 697 00:50:01,910 --> 00:50:08,800 Masalah dengan hal ini, tentu saja, adalah bahwa kita tidak menempatkan ini di daftar kami SSIDs, 698 00:50:08,800 --> 00:50:10,930 tak seorang pun akan tahu tentang hal itu kemungkinan besar. 699 00:50:10,930 --> 00:50:16,090 Saya berharap. Kecuali kalian semua mencoba untuk memecahkan ke nirkabel. 700 00:50:16,090 --> 00:50:18,700 Tapi ini adalah sesuatu yang dapat Anda lakukan yang benar-benar penting ketika Anda sedang menyiapkan 701 00:50:18,700 --> 00:50:20,280 router di rumah. 702 00:50:20,280 --> 00:50:22,820 Hal ini mungkin tidak akan terjadi selama beberapa tahun untuk banyak dari Anda, 703 00:50:22,820 --> 00:50:29,010 tetapi perlu diingat bahwa menjaga bahwa SSID keluar dari sana dan tidak juga penamaan itu 704 00:50:29,010 --> 00:50:34,630 sesuatu yang super-umum akan membantu menjaga Anda lebih aman dalam jangka panjang. 705 00:50:34,630 --> 00:50:38,070 >> Beberapa akhir hal yang dapat Anda lakukan. Salah satunya adalah HTTPS. 706 00:50:38,070 --> 00:50:44,760 Jika Anda berada di Starbucks, jika Anda berada di daerah wi-fi publik 707 00:50:44,760 --> 00:50:52,620 dan Anda memutuskan untuk mengakses rekening bank Anda, mengakses Gmail, Facebook Anda, 708 00:50:52,620 --> 00:50:56,140 pastikan bahwa koneksi tersebut akan melalui HTTPS. 709 00:50:56,140 --> 00:50:59,800 Ini adalah lapisan tambahan keamanan, lapisan tambahan enkripsi. 710 00:50:59,800 --> 00:51:01,520 Satu hal yang perlu diingat di sini adalah, 711 00:51:01,520 --> 00:51:04,740 berapa banyak dari Anda yang pernah mengklik melalui layar yang besar, merah yang mengatakan, 712 00:51:04,740 --> 00:51:07,480 "Website ini mungkin buruk." 713 00:51:07,480 --> 00:51:09,710 Aku tahu aku punya. 714 00:51:09,710 --> 00:51:13,090 Mungkin ketika Anda semua browsing untuk pergi melihat Homeland atau sesuatu seperti itu, kan? 715 00:51:13,090 --> 00:51:19,900 Ya. (Penonton tertawa) Ya. Di sana Anda pergi. Kita tahu siapa yang menonton Homeland. 716 00:51:19,900 --> 00:51:24,540 Itu, layar besar merah di sana 717 00:51:24,540 --> 00:51:28,600 sering menunjukkan bahwa sesuatu yang funky yang terjadi. 718 00:51:28,600 --> 00:51:32,530 Kadang-kadang itu hanya situs web itu sendiri tidak aman, 719 00:51:32,530 --> 00:51:35,520 tapi itu besar yang sama, layar merah muncul ketika orang mencoba untuk 720 00:51:35,520 --> 00:51:37,520 gunung jaringan serangan pada Anda. 721 00:51:37,520 --> 00:51:40,220 Jadi jika Anda melihat bahwa besar, layar merah muncul di Starbucks, 722 00:51:40,220 --> 00:51:42,440 jangan klik melalui itu. 723 00:51:42,440 --> 00:51:45,350 Berita buruk. Kabar buruk beruang. 724 00:51:45,350 --> 00:51:51,490 >> Hal terakhir yang Anda dapat melihat 725 00:51:51,490 --> 00:51:54,120 adalah semacam VPN. 726 00:51:54,120 --> 00:52:00,280 VPN ini tersedia melalui Harvard - vpn.fas.harvard.edu-- 727 00:52:00,280 --> 00:52:03,260 dan apa yang dilakukan adalah benar-benar membentuk koneksi aman 728 00:52:03,260 --> 00:52:06,460 antara Anda dan Harvard, saluran lalu lintas melalui itu, 729 00:52:06,460 --> 00:52:12,160 dan bahwa cara itu jika Anda sedang duduk di tempat seperti Starbucks 730 00:52:12,160 --> 00:52:19,030 Anda dapat terhubung ke Harvard, mendapatkan bahwa lalu lintas yang aman, dan kemudian menelusuri dari Harvard. 731 00:52:19,030 --> 00:52:21,950 Sekali lagi, tidak sangat mudah. Orang bisa mendapatkan di tengah. 732 00:52:21,950 --> 00:52:25,850 Mereka dapat mulai untuk memecahkannya, tapi ini jauh lebih aman daripada mengandalkan keamanan 733 00:52:25,850 --> 00:52:28,620 dari wi-fi saja. 734 00:52:28,620 --> 00:52:32,570 >> Baiklah. Singkatnya, 735 00:52:32,570 --> 00:52:34,580 ketika Anda sedang mengatur jaringan nirkabel, 736 00:52:34,580 --> 00:52:37,250 ketika Anda akan keluar untuk menggunakan nirkabel di depan umum - 737 00:52:37,250 --> 00:52:43,430 apakah itu Starbucks, apakah itu Five Guys, apakah itu B.Good, 738 00:52:43,430 --> 00:52:46,440 sesuatu seperti itu - di mana pun mereka memiliki wi-fi - 739 00:52:46,440 --> 00:52:48,440 menyadari lingkungan Anda. 740 00:52:48,440 --> 00:52:50,440 Sadari apa yang dapat dilakukan. 741 00:52:50,440 --> 00:52:53,890 Dan aman. Jangan mengakses rekening bank Anda. 742 00:52:53,890 --> 00:52:58,740 Ini bisa menjadi kebangkitan kasar jika seseorang muncul dengan password Anda di kemudian hari. 743 00:52:58,740 --> 00:53:05,480 Dengan itu, pergi merah! Dan aku akan membalikkan keadaan kembali ke David untuk kata akhir. 744 00:53:05,480 --> 00:53:11,270 (Tepuk tangan) 745 00:53:11,270 --> 00:53:14,360 >> [David] saya pikir saya akan berbagi satu hal dari pengalaman pribadi. 746 00:53:14,360 --> 00:53:19,940 Sebuah alat Anda mungkin ingin bermain dengan - meskipun Apple telah sebagian besar diberantas masalah ini 747 00:53:19,940 --> 00:53:22,710 jika Anda telah memperbarui perangkat lunak Anda sejak - 748 00:53:22,710 --> 00:53:26,670 tapi menuju akhir ini tidak benar-benar mampu mempercayai software yang kita gunakan, 749 00:53:26,670 --> 00:53:33,270 dan poin Nate, mampu mengendus sedikit dari apa yang orang lain lakukan 750 00:53:33,270 --> 00:53:37,010 luar sana - ini adalah sebuah software yang keluar sekitar satu tahun-dan-a-setengah lalu sekarang. 751 00:53:37,010 --> 00:53:39,010 [IPhoneTracker] [http://petewarden.github.com/iPhoneTracker/] 752 00:53:39,010 --> 00:53:41,010 Untuk beberapa waktu, iTunes - sebelum iCloud, ketika Anda syncing iPod atau iPhone Anda atau 753 00:53:41,010 --> 00:53:45,570 atau Anda iPads dengan iTunes - untuk kepentingan backup, 754 00:53:45,570 --> 00:53:48,340 apa iPhone dan perangkat lainnya telah melakukan selama beberapa waktu adalah 755 00:53:48,340 --> 00:53:50,340 memanfaatkan data GPS. 756 00:53:50,340 --> 00:53:52,710 >> Anda semua tahu bahwa Anda mungkin iPhone dan Androids dan Windows mobile telepon 757 00:53:52,710 --> 00:53:55,410 dan seperti hari-hari dapat melacak di mana Anda berada dalam kepentingan menunjukkan Anda peta 758 00:53:55,410 --> 00:53:59,440 dan sejenisnya - baik apa Apple dan perusahaan-perusahaan lainnya lakukan adalah 759 00:53:59,440 --> 00:54:02,650 mereka biasanya melacak hampir di mana-mana Anda sudah benar-benar berada dalam kepentingan 760 00:54:02,650 --> 00:54:05,380 meningkatkan kualitas layanan. 761 00:54:05,380 --> 00:54:07,170 Satu, Anda bisa mendapatkan lebih banyak iklan bertarget dan sejenisnya, 762 00:54:07,170 --> 00:54:10,740 tapi dua, mereka juga bisa mencari tahu di mana ada hotspot nirkabel di dunia, 763 00:54:10,740 --> 00:54:14,780 dan ini dapat membantu dengan geo-lokasi - semacam triangulasi posisi rakyat. 764 00:54:14,780 --> 00:54:18,520 >> Singkat cerita, kita semua telah berjalan antena untuk beberapa jumlah waktu. 765 00:54:18,520 --> 00:54:22,180 Sayangnya, Apple telah membuat keputusan desain - atau kekurangan itu - 766 00:54:22,180 --> 00:54:26,590 untuk tidak mengenkripsi informasi ini ketika sedang didukung-up ke iTunes. 767 00:54:26,590 --> 00:54:30,330 Dan apa yang peneliti keamanan menemukan bahwa ini hanya sebuah file XML yang besar - 768 00:54:30,330 --> 00:54:33,810 sebuah file teks yang besar - duduk dalam perangkat lunak iTunes masyarakat, 769 00:54:33,810 --> 00:54:35,400 dan jika Anda hanya sedikit penasaran, 770 00:54:35,400 --> 00:54:38,990 Anda bisa pergi mengaduk-aduk sejarah pasangan Anda, sejarah teman sekamar Anda, 771 00:54:38,990 --> 00:54:41,050 saudara Anda sejarah dan sejenisnya, 772 00:54:41,050 --> 00:54:44,590 dan berkat beberapa perangkat lunak bebas, Anda bisa merencanakan semua koordinat GPS - 773 00:54:44,590 --> 00:54:46,590 lintang dan bujur. 774 00:54:46,590 --> 00:54:48,590 >> Jadi, saya benar-benar melakukan ini dengan ponsel saya sendiri. 775 00:54:48,590 --> 00:54:51,210 Saya terpasang di ponsel saya, dan tentu saja, versi saya iTunes tidak dienkripsi pada saat itu, 776 00:54:51,210 --> 00:54:53,900 dan apa yang saya bisa melihat pola-pola sendiri. 777 00:54:53,900 --> 00:54:56,970 Berikut Amerika Serikat dan masing-masing lingkaran biru mewakili 778 00:54:56,970 --> 00:55:01,670 terjadi di mana saya telah lebih dari bulan-bulan sebelumnya memiliki telepon khusus ini. 779 00:55:01,670 --> 00:55:04,940  Saya menghabiskan banyak waktu, tentu saja, di Timur Laut, sedikit waktu di California, 780 00:55:04,940 --> 00:55:08,690 perjalanan singkat ke Texas, dan jika Anda kemudian tampilannya dalam hal ini - 781 00:55:08,690 --> 00:55:11,120 ini adalah semua jenis baik dan menarik, tapi aku tahu ini. 782 00:55:11,120 --> 00:55:13,890 Sebagian besar teman-teman saya tahu ini, tetapi jika Anda menyelam lebih dalam, 783 00:55:13,890 --> 00:55:17,090 Anda melihat di mana saya menghabiskan sebagian besar waktu saya di timur laut. 784 00:55:17,090 --> 00:55:20,330 Jika Anda latch ke beberapa tampak akrab kota - 785 00:55:20,330 --> 00:55:24,670 ini noda, tinta besar biru pada dasarnya berpusat di Boston, 786 00:55:24,670 --> 00:55:29,510 dan kemudian saya menghabiskan sedikit waktu di pinggiran memancar keluar dari Boston. 787 00:55:29,510 --> 00:55:32,780 Tapi saya juga melakukan sedikit konsultasi tahun itu. 788 00:55:32,780 --> 00:55:36,090 Dan tahun ini adalah pesisir timur, dan Anda benar-benar dapat melihat saya 789 00:55:36,090 --> 00:55:41,920 dan iPhone di saku perjalanan bolak-balik antara Boston dan New York 790 00:55:41,920 --> 00:55:47,510 dan Philadelphia lebih bawah, serta menghabiskan sedikit waktu liburan 791 00:55:47,510 --> 00:55:50,340 di Cape, yang merupakan lengan sedikit di luar sana. 792 00:55:50,340 --> 00:55:53,030 Jadi, masing-masing dari titik mewakili beberapa tempat saya telah, 793 00:55:53,030 --> 00:55:56,970 dan benar-benar tanpa sepengetahuan saya, ini seluruh sejarah hanya duduk di sana 794 00:55:56,970 --> 00:55:58,410 di komputer desktop saya. 795 00:55:58,410 --> 00:56:00,470 Jika Anda zoom out - ini sebenarnya sedikit mengganggu. 796 00:56:00,470 --> 00:56:04,190 Saya tidak ingat pernah telah di Pennsylvania pada tahun tertentu. 797 00:56:04,190 --> 00:56:07,840 Tapi aku meskipun sedikit lebih keras tentang hal itu dan aku tahu, oh, itu sebenarnya bahwa perjalanan 798 00:56:07,840 --> 00:56:11,160 dan tentu saja, ponsel saya telah menangkap saya. 799 00:56:11,160 --> 00:56:14,180 >> Apple telah sejak dienkripsi informasi ini, 800 00:56:14,180 --> 00:56:17,380 tapi ini juga hanya bukti seberapa banyak informasi yang dikumpulkan tentang kami, 801 00:56:17,380 --> 00:56:20,850 dan bagaimana dengan mudah - untuk lebih baik atau lebih buruk - itu dapat diterima. 802 00:56:20,850 --> 00:56:23,340 Salah satu-mengambil aways mudah-mudahan dari bicara Rob, dari pembicaraan Nate 803 00:56:23,340 --> 00:56:27,370 dan visual kecil seperti saat ini hanya menjadi semua lebih sadar ini 804 00:56:27,370 --> 00:56:31,160 sehingga meskipun - sebagai titik Rob - semacam kami sedang kacau dari, kan? 805 00:56:31,160 --> 00:56:33,920 Tak banyak yang bisa kita lakukan ketika datang ke beberapa ancaman, 806 00:56:33,920 --> 00:56:37,130 tapi pada akhir hari kita harus percaya sesuatu atau seseorang 807 00:56:37,130 --> 00:56:38,510 jika kita ingin benar-benar menggunakan teknologi tersebut. 808 00:56:38,510 --> 00:56:43,150 Setidaknya kita bisa membuat keputusan dan keputusan dihitung apakah atau tidak 809 00:56:43,150 --> 00:56:46,390 kita benar-benar harus memeriksa account ini sangat sensitif 810 00:56:46,390 --> 00:56:49,330 atau kita harus benar-benar mengirim yang sedikit menduga pesan instan 811 00:56:49,330 --> 00:56:52,180  dalam lingkungan wi-fi seperti ini. 812 00:56:52,180 --> 00:56:54,990 >> Jadi, dengan mengatakan bahwa, hanya satu yang tersisa kuis, satu kuliah tetap. 813 00:56:54,990 --> 00:56:57,740 Kami akan melihat Anda pada hari Rabu maka Senin. 814 00:56:57,740 --> 00:57:02,100 (Tepuk tangan dan sorak-sorai) 815 00:57:02,100 --> 00:57:06,100 [CS50TV]