0:00:00.000,0:00:03.000 Translated by Markus Aurala[br](KYBS2004 course assignment at JYU.FI) 0:00:03.000,0:00:12.710 rC3-intromusiikkia 0:00:12.710,0:00:19.340 Herald: Seuraavasta puhujastamme... Hän[br]on tietoturvatutkija, joka on erikoistunut 0:00:19.340,0:00:26.500 sulautettuihin järjestelmiin, viesti-[br]liikenteeseen ja matkapuhelimiin. 0:00:26.500,0:00:33.000 Forbes nimesi hänet alle 30-vuotiaiden[br]teknologiavaikuttajien listalleen ja 0:00:33.000,0:00:39.940 hän on voittanut OWASP Appsec CTF:n. 0:00:39.940,0:00:46.790 Hän on myös löytänyt ja raportoinut[br]vastuullisesti haavoittuvaisuuksia. 0:00:46.790,0:00:52.280 Ja erityisesti toivon teidän Nintendo-[br]intoilijoiden katsovan seuraavan videon, 0:00:52.280,0:00:56.270 joka on todella uskomaton ja jota[br]tulette rakastamaan. Kiitos paljon. 0:00:56.305,0:01:00.825 näyttää Nintendo-pelikasettia 0:01:00.825,0:01:06.065 laittaa sen sisään konsoliin 0:01:09.532,0:01:10.532 Nintendo päästää ääniä 0:01:10.532,0:01:14.850 Thomas: Voi himpskatti.[br]ottaa pelikasetin 0:01:14.850,0:01:19.980 puhaltaa siihen[br]laittaa sisään uudelleen 0:01:22.146,0:01:23.446 Nintendo päästää ääniä 0:01:26.243,0:01:29.423 musiikki soi 0:02:52.810,0:02:56.099 Thomas Roth: Voi, mikä matka.[br]Tervetuloa esitykseeeni 0:02:56.099,0:03:00.810 "Uuden Nintendo Game & Watch Super[br]Mario Brothersin hakkerointi". Nimeni 0:03:00.810,0:03:05.290 on Thomas Roth. Olen tietoturvatutkija[br]ja -kouluttaja Saksasta. Löydät minut 0:03:05.290,0:03:10.719 Twitteristä nimellä @ghidraninja ja[br]YouTubesta nimellä stacksmashing. 0:03:10.719,0:03:16.439 Tämä vuosi on suosikkiputkimiehemme,[br]Super Marion, 35-vuotisjuhlavuosi. 0:03:16.439,0:03:20.699 Juhlan kunniaksi Nintendo julkaisi uuden[br]pelikonsolin, Nintendo Game & Watch Super 0:03:20.699,0:03:26.669 Mario Brothersin. Konsoli on höyhenen-[br]kevyt ja näyttää kivalta. Ja siinä on 0:03:26.669,0:03:31.859 valmiiksi asennettuna kolme peliä ja myös[br]tämä animoitu kello. Kolme peliä ovat 0:03:31.859,0:03:36.920 Super Mario Brothers (alkuperäinen NES-[br]peli), Super Mario Brothers 2 The Lost 0:03:36.920,0:03:44.830 Levels, ja myös uudelleensovitus[br]vanhasta Game & Watch -pelistä, Ballista. 0:03:44.830,0:03:49.939 Tiedätkin varmasti ettei tämä ole[br]Nintendon ensimmäinen retrokonsoli. 0:03:49.939,0:03:57.400 Vuonna 2016 he julkaisivat NES Classicin[br]ja vuonna 2017 SNES Classicin. Nyt nuo 0:03:57.400,0:04:01.729 laitteet ovat todella suosittuja[br]harrastelijakehittäjien keskuudessa, 0:04:01.729,0:04:05.779 koska niihin on todella helppo lisätä[br]ROM:eja. Niiden laiteohjelmistoja on 0:04:05.779,0:04:10.540 helppo muokata jne. Voit vain pistää[br]piuhat kiinni koneeseesi, asentaa 0:04:10.540,0:04:14.959 yksinkertaisen ohjelmiston ja tehdä[br]mitä haluat sillä. Syy on se, että ne 0:04:14.959,0:04:21.140 ne ajavat Linuxia ja niissä on[br]melkoisen tehokas ARM-prosessori. 0:04:21.140,0:04:27.360 Niillä on kiva puuhastella.[br]Ja kun Nintendo julkaisi tämän 0:04:27.360,0:04:31.650 uuden konsolin, monet ihmiset[br]toivoivat siitä mobiilia 0:04:31.650,0:04:38.810 laitetta harrastelijaohjelmoijille.[br]Jos tekisimme nyt Venn-kaavion 0:04:38.810,0:04:43.099 minun suurimmista kiinnostuksistani,[br]siinä olisi takaisinmallinnus, laite- 0:04:43.099,0:04:48.539 hakkerointi ja retrokoneilu. Tämä[br]uusi Game & Watch olisi näitä kaikkia. 0:04:48.539,0:04:52.920 Kun se julkistettiin 3. syyskuuta,[br]tiesin, että minun oli pakko saada 0:04:52.920,0:04:58.930 sellainen. Ja tietäen miten hankala NES-[br]ja SNES-retrokonsoleita oli aluksi ostaa, 0:04:58.930,0:05:03.389 ennakkotilasin sen 4-5 eri[br]sivustolta. Pari niistä peruttiin. 0:05:03.389,0:05:09.470 Mutta olin melko innoissani, koska minulla[br]oli kolme ennakkotilausta, joiden piti 0:05:09.470,0:05:15.380 lähteä 13. marraskuuta.[br]Ja minä niin odotin sitä. 0:05:15.380,0:05:19.909 Söin aamiaista 12. marraskuuta kun[br]ovikello soi ja DHL:n kuriiri 0:05:19.909,0:05:25.730 toimitti minulle uuden Game & Watchin[br]päivää ennen virallista julkaisua. 0:05:25.730,0:05:30.300 Siinä vaiheessa laitteesta ei ollut[br]mitään teknistä tietoa saatavilla. 0:05:30.300,0:05:35.449 Ei kerrassaan mitään. Jos etsit "Game &[br]Watch" Twitteristä, et löytänyt muuta 0:05:35.449,0:05:40.680 kuin julkaisun tai ehkä kuvan, jonka[br]joku toinen ennakkotilaaja oli ottanut. 0:05:40.680,0:05:44.900 Ei ollut mitään purkamisesta, ei kuvia[br]sisuskaluista. Ja mikä tärkeintä, 0:05:44.900,0:05:50.319 kukaan ei ollut vielä murtanut sitä.[br]Ja tämä antoi minulle, laitehakkerille, 0:05:50.319,0:05:55.669 ainutlaatuisen tilaisuuden olla ehkäpä[br]ensimmäinen joka murtaa uuden konsolin. 0:05:55.669,0:06:00.199 Ja minä kirjaimellisesti jätin[br]kaiken muun kesken ja aloin tutkimaan 0:06:00.199,0:06:05.949 laitetta. Nyt minun täytyy sanoa,[br]että normaalisti pysyn kaukana 0:06:05.949,0:06:11.460 uusien konsolien murtamisesta. Pääasiassa[br]piratismin takia. En halua olla tekemässä 0:06:11.460,0:06:18.930 siitä mahdollista. En halua olla[br]osallinen. Enkä halua rakentaa 0:06:18.930,0:06:23.930 työkaluja, joilla toiset piratisoivat.[br]Mutta koska tähän laitteeseen ei voinut 0:06:23.930,0:06:28.900 ostaa pelejä ja kaikki[br]siinä olevat pelit olivat 0:06:28.900,0:06:33.840 julkaistu jo yli 30 vuotta sitten, en[br]ollut huolissani piratismista eikä 0:06:33.840,0:06:39.449 minulla ollut ongelmaa jakaa kaikkea[br]tutkimusteni tietoa eikä myöskään 0:06:39.449,0:06:44.490 niitä ongelmia, joiden avulla[br]pystyimme muokkaamaan laitetta. 0:06:44.490,0:06:49.389 Tässä esityksessä kerron teille[br]miten me mursimme laitteen 0:06:49.389,0:06:54.931 ja miten sinä voit tehdä sen kotona[br]suhteellisen halvoilla laitteilla. 0:06:54.931,0:07:03.040 Toivottavasti nautit siitä. Katsotaan[br]alkuun sitä laitetta. Laite on 0:07:03.040,0:07:08.469 höyhenenkevyt ja kotelo on mukavan[br]kokoinen. Joten se todella... Se todella 0:07:08.469,0:07:14.889 istuu hyvin käteeni. Siinä on 320 x 240[br]pikselin LCD-näyttö, ristiohjain, A- ja 0:07:14.889,0:07:19.529 B-napit ja lisäksi vielä kolme nappia,[br]joilla vaihdetaan pelimoodien välillä. 0:07:19.529,0:07:23.940 Oikealla sivulla on virtanäppäin[br]ja USB-C -portti. Mutta ennen kuin 0:07:23.940,0:07:28.640 innostut USB-portista, voin[br]kertoa, että valitettavasti 0:07:28.640,0:07:33.030 Nintendo on päättänyt olla[br]kytkemättä USB-portin datalinjoja. 0:07:33.030,0:07:38.550 Joten sitä voi käyttää vain[br]lataamiseen. Ja koska on kyse 0:07:38.550,0:07:43.979 Nintendosta, he käyttävät omia[br]Tri-Point -ruuvejaan. Avataksesi 0:07:43.979,0:07:48.730 laitteen, tarvitset meisseliin tuon[br]erikoiskärjen. Onneksi tuo löytyy 0:07:48.730,0:07:54.120 nykyisin useimmista seteistä. Mutta se[br]on silti ikävää kun tilaat laitteen ja 0:07:54.120,0:07:59.639 sitten et voikaan avata sitä työkalun[br]puuttuessa. Kun olet avannut laitteen, 0:07:59.639,0:08:03.779 huomaat ensimmäisenä varmastikin[br]akun. Ja jos olet koskaan avannut 0:08:03.779,0:08:07.599 Nintendo Switchin peliohjaimen,[br]saatat tunnistaa akun, koska se 0:08:07.599,0:08:12.729 on täsmälleen sama kuin peliohjaimessa.[br]Tämä on siistiä, koska jos joskus, 0:08:12.729,0:08:16.529 sanotaan kahden-kolmen vuoden[br]päästä Game & Watchin akku kuolee, 0:08:16.529,0:08:20.650 voit korvata sen peliohjaimen[br]akulla, joita voit ostaa 0:08:20.650,0:08:26.520 halvalla melkein mistä vain. Akun[br]vieressä, oikealla puolella, on 0:08:26.520,0:08:32.349 pieni kaiutin, joka ei ole kovinkaan[br]hyvä. Ja sen alla on pääpiirilevy 0:08:32.349,0:08:37.510 prosessorilla, kaikilla muisteilla[br]ja niin edelleen. Katsotaanpa niitä. 0:08:37.510,0:08:44.779 Laitteen pääprosessori on STM32H7B0.[br]Tämä on Cortex M7 STMicroelectronicsilta, 0:08:44.779,0:08:53.201 1.3 megatavulla keskusmuistia ja 128 kilo-[br]tavulla flash-muistia. Se toimii 280 MHz:n 0:08:53.201,0:08:59.460 kellotaajuudella ja on aika tehokas mikro-[br]kontrolleri, mutta se häviää prosessori- 0:08:59.460,0:09:03.860 tehossa NES- ja SNES-retrokonsoleille.[br]Tämä prosessori on todellakin vain mikro- 0:09:03.860,0:09:09.260 kontrolleri, eikä se voi ajaa Linuxia tai[br]erityisen monimutkaisia ohjelmistoja. 0:09:09.260,0:09:14.170 Koodia kirjoitetaan suoraan raudan[br]päälle. Laitteessa on raudalle koodattu 0:09:14.170,0:09:20.580 laiteohjelmisto. Siitä oikealle[br]näette 1 megatavun SPI flash -muistin. 0:09:20.580,0:09:26.180 Yhteensä tässä laitteessa on[br]n. 1,1 megatavua tallennustilaa. 0:09:26.180,0:09:31.279 Useimmissa - tai oikeastaan kaikissa -[br]mikrokontrollereissa on debuggausportti. 0:09:31.279,0:09:36.370 Jos katsot piirilevyä, voit nähdä[br]viisi liitintä, jotka eivät ole käytössä. 0:09:36.370,0:09:40.980 Ja pari niistä käyttämättömistä[br]liittimistä on sijoitettu lähelle 0:09:40.980,0:09:47.510 prosessoria. Se on todennäköistä, että[br]siinä on debuggausportti. Ja onneksi 0:09:47.510,0:09:54.449 STM32:n tuotetietolomake on julkisesti[br]saatavilla. Ja voimme tarkistaa kytkennät 0:09:54.449,0:09:59.050 ja tarkistaa yleismittarilla[br]onko nämä pinnit todellakin 0:09:59.050,0:10:04.500 debuggausliittymä. Ja niinhän se oli.[br]Sitten löysimme SWD-debuggausliittymän, 0:10:04.500,0:10:11.630 kuten myös VCC:n ja maan näistä[br]pinneistä. Tämä tarkoitti, että 0:10:11.630,0:10:16.779 voimme käyttää debuggeria. Pystyimme[br]kytkeytymään laitteeseen esimerkiksi 0:10:16.779,0:10:21.980 J-Linkillä tai ST-Linkillä. Ja koska[br]nämä liitännät ovat hyvin esillä, 0:10:21.980,0:10:25.870 sinun ei tarvitse edes juottaa. Voit[br]vain liittää pari testipinniä ja 0:10:25.870,0:10:32.600 kytkeä ne debuggeriisi. Seuraava[br]ongelma on, että useimmissa laitteissa 0:10:32.600,0:10:36.900 debuggausliittymä lukitaan valmistus-[br]prosessin aikana. Tämä tehdään, jotta 0:10:36.900,0:10:42.550 ihmiset kuten me emme voisi tehdä[br]laitteella mitä haluamme ja estääkseen 0:10:42.550,0:10:47.450 meitä näkemästä laiteohjelmistoa,[br]ehkä uudelleenohjelmoimasta sitä jne. 0:10:47.450,0:10:52.190 Joten minä olin utelias näkemään jos[br]voisin ottaa yhteyttä debuggausporttiin. 0:10:52.190,0:10:56.090 Kun käynnistin J-Linkin ja yritin[br]ottaa yhteyttä, voimme nähdä sen 0:10:56.090,0:11:01.230 onnistuvan. Mutta kun tutkit asiaa[br]tarkemmin, huomaat viestin jonka 0:11:01.230,0:11:09.269 mukaan laite aktiivisesti lukusuojattu.[br]Tämä siksi, että STM32-sirussa on 0:11:09.269,0:11:15.650 ominaisuus nimeltään RDP-suojaustaso,[br]readout protection level. Tämä on 0:11:15.650,0:11:20.300 periaatteessa tietoturva-asetus[br]debuggausliittymälle ja siinä on kolme 0:11:20.300,0:11:26.769 tasoa. Taso 0 tarkoittaa, että suojaus on[br]pois päältä. Tasolla 1 flash-muisti on 0:11:26.769,0:11:31.839 suojattu ja me emme pysty[br]kopioimaan sen sisältöä. Kuitenkin, 0:11:31.839,0:11:36.939 me voimme kopioida keskusmuistin sisällön[br]ja myös ajaa koodia keskusmuistissa. Ja 0:11:36.939,0:11:42.240 sitten on myös taso 2, joka estää[br]kaikki debuggaustoiminnallisuudet. 0:11:42.240,0:11:46.630 Vaikka siru olisi tasolla 2,[br]meidän ei pidä antaa periksi. 0:11:46.630,0:11:51.589 Esimerkiksi esityksessämme "wallet.fail"[br]parin vuoden takaa, näytimme miten 0:11:51.589,0:11:56.000 generoimalla virheitä ohitimme tason 2[br]suojauksen ja tiputimme sirun tasolle 1. 0:11:56.000,0:12:00.820 Kuitenkin, Game & Watchin tapauksessa,[br]olimme onnekkaita ja liittymää ei oltu 0:12:00.820,0:12:07.139 täysin estetty. Se oli tasolla 1 eli me[br]pystyimme kopioimaan keskusmuistin, mikä 0:12:07.139,0:12:11.300 on hyvä aloituspiste, vaikka emme vielä[br]pystykään kopiomaan laiteohjelmistoa. 0:12:11.300,0:12:17.010 Nyt kun saimme keskusmuistin laitteelta,[br]olin kiinnostunut sen sisällöstä. 0:12:17.010,0:12:21.660 Yksi epäilyistäni oli, että se oli ehkä[br]emulaattori, joka toimii laitteella, 0:12:21.660,0:12:29.000 lataa alkuperäisen Super Mario[br]Brothersin ROM:in keskusmuistiin. 0:12:29.000,0:12:34.830 Ja minä ihmettelin jos voisin löytää[br]ROM:in keskusmuistin kopiosta. 0:12:34.830,0:12:39.750 Ja minä avasin heksaeditoriin sen[br]keskusmuistin kopion ja alkuperäisen 0:12:39.750,0:12:44.450 Super Mario Brothersin ROMin.[br]Yritin etsiä sen ROM:in osia 0:12:44.450,0:12:49.411 keskusmuistin kopiosta. Ja kävi[br]ilmi, että kyllä, se NES-ROM 0:12:49.411,0:12:55.380 ladataan keskusmuistiin ja aina[br]samaan osoitteeseen. Luultavasti 0:12:55.380,0:13:00.289 se kopioidaan keskusmuistiin[br]käynnistyksen yhteydessä tai jotain. 0:13:00.289,0:13:05.420 Ja tämä on kiva tietää, koska se kertoo[br]meille parikin asiaa. Ensiksikin 0:13:05.420,0:13:09.790 tiedämme nyt, että debuggausportti[br]on toiminnassa, mutta valitettavasti 0:13:09.790,0:13:16.319 vain RDP-tasolla 1 ja voimme kopioida vain[br]keskusmuistin. Ja me tiedämme myös, että 0:13:16.319,0:13:21.259 NES:in ROM ladataan keskusmuistiin.[br]Siellä täytyy olla oikea NES-emulaattori. 0:13:21.259,0:13:25.680 Ja jos me olemme onnekkaita, voimme[br]esimerkiksi korvata ROM:in laitteella 0:13:25.680,0:13:29.840 toisella ROM:illa ja pelata siten[br]vaikka omaa NES-peliämme. 0:13:30.600,0:13:33.460 pieni tauko 0:13:33.930,0:13:37.010 Seuraavaksi oli aika[br]kopioida laitteen 0:13:37.010,0:13:41.160 flash-muistisiru. Käytän tähän[br]laitetta nimeltä Mini Pro ja yhtä 0:13:41.160,0:13:46.959 näistä hyödyllisistä SOIC-8 -siruista.[br]Voit kiinnittää nämä flash-muistisiruun 0:13:46.959,0:13:52.240 ja kopioida sen sisällön. Varoitus:[br]laitteen flash-muistisiru toimii 0:13:52.240,0:13:56.220 1,8 voltin jännitteellä. Haluat varmasti[br]varmistaa, että ohjelmointilaitteesi 0:13:56.220,0:14:01.839 tukee 1,8 V:n jännitettä. Jos vahingossa[br]yrität lukea muistia 3,3 V:n jännitteellä, 0:14:01.839,0:14:06.770 hajotat sen muistin. Usko pois -[br]se tapahtui yhdelle minun 0:14:06.770,0:14:12.940 laitteistani. Nyt kun meillä on tämä[br]kopio flash-muistista, voimme analysoida 0:14:12.940,0:14:17.319 sitä. Ensimmäiseksi tykkään katsoa[br]kopion entropiaa tai satunnaisuutta. 0:14:17.319,0:14:23.350 Käyttämällä binwalkia optiolla[br]"-E", saamme hienon entropiakuvaajan. 0:14:23.350,0:14:27.410 Tässä tapauksessa voitte nähdä, että[br]entropia on hyvin korkealla melkein koko 0:14:27.410,0:14:32.899 sisällön osalta. Yleensä tämä[br]indikoi sitä, että muistin sisältö on 0:14:32.899,0:14:37.240 kryptattu. Se voisi myös tarkoittaa[br]pakkausta, mutta jos se olisi pakattu, 0:14:37.240,0:14:43.529 näkisimme siinä enemmän tiputuksia.[br]Tässä tapauksessa se on yhtä korkean 0:14:43.529,0:14:48.830 entropian virtaa. Huomasimme myös, että[br]siinä ei ole minkäänlaisia toistoja, mikä 0:14:48.830,0:14:53.350 kertoo meille, että todennäköisesti[br]kyseessä ei ole yksinkertainen XOR-salaus 0:14:53.350,0:14:58.340 vaan pikemminkin AES tai vastaava.[br]Se, että flash-muisti on salakirjoitettu 0:14:58.340,0:15:02.199 ei tarkoita, että meidän pitäisi antaa[br]periksi. Päinvastoin. Nyt tästä vasta 0:15:02.199,0:15:06.829 tuleekin mielenkiintoista, koska tässä on[br]haaste joka ei ole ihan itsestään selvä. 0:15:06.829,0:15:13.020 Yksi suurimmista kysymyksistäni oli:[br]onko flash-muistin sisältö varmistettu? 0:15:13.020,0:15:18.160 Eli käynnistyykö tämä laite jos flash-[br]muistin sisältöä on muutettu? Jos se 0:15:18.160,0:15:24.789 käynnistyisi, se avaisi useita[br]hyökkäysvektoreita, kuten pian näette. 0:15:24.789,0:15:30.720 Varmistaakseni asian, kirjoitan[br]nollia satunnaisiin paikkoin muistissa. 0:15:30.720,0:15:35.760 Niinpä laitoin niitä osoitteeseen 0,[br]vähän osoitteeseen 0x2000 jne. 0:15:35.760,0:15:39.910 Ja sitten kokeilin käynnistyykö[br]laite vielä. Useimmilla flash-muistin 0:15:39.910,0:15:44.370 muutoksilla se käynnistyi ihan OK.[br]Tämä kertoo meille, että vaikka 0:15:44.370,0:15:48.599 flash-muistin sisältö on salattu, sitä ei[br]ole varmistettu, ei tarkistussummilla 0:15:48.599,0:15:54.610 eikä muutenkaan. Joten me voimme ehkä[br]huijata laitteen hyväksymään muunnellun 0:15:54.610,0:15:58.529 kopion flash-muistista. Tämä on tosi[br]tärkeä tieto, kuten pian huomaat. 0:15:58.529,0:16:05.310 Seuraava epäilykseni oli, että ehkä[br]se NES-ROM, jonka näimme keskusmuistissa 0:16:05.310,0:16:12.839 oli ladattu ulkoiselta flash-muistilta.[br]Ja selvitääkseni tämän, otin sen 0:16:12.839,0:16:18.939 flash-muistin kopion ja lisäsin[br]siihen nollia eri kohtiin. 0:16:18.939,0:16:24.550 Kirjoitin sen laitteelle, käynnistin sen,[br]kopioin keskusmuistin ja vertasin sitä 0:16:24.550,0:16:29.620 NES-ROM:iin, jonka löysin keskus-[br]muistin kopiosta. Vertasin, ovatko 0:16:29.620,0:16:35.399 ne identtisiä. Koska epäilykseni oli,[br]että voisin ehkä ylikirjoittaa 0:16:35.399,0:16:41.519 muutaman tavun salatussa flash-muistissa[br]ja sitten muokata NES-ROM:ia. Sen jälkeen 0:16:41.519,0:16:46.760 kun olin tehnyt sen, ehkä puoli tuntia[br]myöhemmin, minua onnisti ja sain 0:16:46.760,0:16:51.399 muutettua neljä tavua flash-nuistissa ja[br]keskusmuistissa... Sori... ROM:issa, 0:16:51.399,0:16:56.790 jonka latasin keskusmuistiin. Ja tämä[br]kertoo meille melkoisesti. Se tarkoittaa, 0:16:56.790,0:17:04.450 että ROM ladataan keskusmuistiin flash-[br]muistilta, eikä sen sisältöä validoida. 0:17:04.450,0:17:10.280 Ja mikä on myös tärkeää on se, että [br]muutimme neljä tavua flash-muistissa 0:17:10.280,0:17:15.510 ja neljä tavua muuttui puretussa ROM:issa.[br]Tämä on tärkeää tietää, koska jos me 0:17:15.510,0:17:19.740 katsomme mitä odotimme tapahtuvan flash-[br]muistin sisältöä muutettaessa, se olisi 0:17:19.740,0:17:23.880 voinut päättyä eri lopputuloksiin. Ja[br]tässä meillä on SPI flash -muistin 0:17:23.880,0:17:29.310 sisäsltö vasemmalla ja keskusmuistin[br]sisältö oikealla. Ja keskusmuistin 0:17:29.310,0:17:35.410 on purettu versio SPI flash -muistin[br]sisällöstä. Sanotaan, että muutamme 0:17:35.410,0:17:41.750 neljä tavua salatusta flash-kopiosta[br]nolliksi. Kuinka odottaisimme keskus- 0:17:41.750,0:17:47.580 muistin sisällön muuttuvan jos,[br]esimerkiksi, 16 tavua keskusmuistista 0:17:47.580,0:17:52.960 muuttuisi. Tämä tarkoittaisi, että[br]käytössä on ehkä salausalgoritmi 0:17:52.960,0:17:57.650 kuten AES ECB-moodissa (Electronic[br]Codebook). Koska jos se on lohko- 0:17:57.650,0:18:03.180 pohjainen salaus ja me muutamme[br]4 salattua tavua, koko puretun lohkon 0:18:03.180,0:18:09.730 eli 16 tavun pitäisi muuttua. Toinen[br]mahdollisuus on, että muutamme 4 0:18:09.730,0:18:16.160 tavua flash-muistissa ja kaikki niitä[br]seuraava data muuttuisi. Tässä 0:18:16.160,0:18:21.830 tapauksessa käytössä olisi ehkä AES[br]CBC-moodissa (Chaining Cipher). 0:18:21.830,0:18:27.600 Kuitenkin jos muutamme 4 tavua flash-[br]muistissa ja vain 4 tavua muuttuu 0:18:27.600,0:18:33.510 keskusmuistissa, käytössä on ehkä[br]AES CTR-moodissa (Counter). Ja 0:18:33.510,0:18:40.270 ymmärtääksesi tämän, otetaan parempi[br]näkymä siihen miten AES toimii 0:18:40.270,0:18:45.930 CTR-moodissa. Se ottaa salaamattoman[br]tiedon ja XOR:aa sen AES-salausvirran 0:18:45.930,0:18:53.211 kanssa, joka on generoitu avaimella,[br]noncella ja Counter-algoritmilla. 0:18:53.211,0:18:57.370 Se AES-virta, jolla tietosi[br]XOR:ataan, on aina sama jos avain 0:18:57.370,0:19:02.840 ja nonce ovat samat. Tämän takia on[br]huipputärkeää, että käyttäessäsi 0:19:02.840,0:19:08.780 AES-CTR:ää, valitset aina uniikin noncen[br]jokaiseen salaukseen. Jos käytät samaa 0:19:08.780,0:19:15.060 noncea kahdesti samankaltaisen datan[br]salaamiseen, lopputulos näyttää samalta. 0:19:15.060,0:19:19.960 Salaamaton data XOR:ataan[br]AES-CTR -virralla ja niin saamme 0:19:19.960,0:19:26.570 salatun datan. Jos tiedämme mitä[br]salaamaton data oli, eli keskusmuistiin 0:19:26.570,0:19:32.270 ladattu ROM-tiedosto, ja meillä[br]on se salattu koodi, eli flash-muistin 0:19:32.270,0:19:38.010 kopio, voimme suorittaa käänteisen 0:19:38.010,0:19:44.580 operaation. Lopputuloksena meillä[br]on AES-CTR -virta, jolla flash-muisti 0:19:44.580,0:19:52.050 salakirjoitettiin. Ja tämä tarkoittaa,[br]että voimme ottaa ROM-tiedoston, XOR:ata 0:19:52.050,0:19:57.830 sen juuri selvittämällämme[br]AES-CTR -virralla ja generoida oman 0:19:57.830,0:20:02.010 salatun flash-kopiomme, esimerkiksi[br]muunnellun ROM:in. Joten kirjoitin 0:20:02.010,0:20:08.340 muutamia Python-skriptejä kokeillakseni[br]tätä. Ja jonkun ajan kuluttua minulla 0:20:08.340,0:20:14.290 oli hakkeroitu Super Mario Brothers[br]alkuperäisen sijasta. Jeejee, hakkeroimme 0:20:14.290,0:20:18.870 Nintendo Game & Watchin päivää ennen[br]virallista julkistusta. Ja voimme asentaa 0:20:18.870,0:20:23.990 muokattuja Super Mario Brothers ROM:eja.[br]Löydät käyttämäni skriptit GitHubistani. 0:20:23.990,0:20:28.260 Ne ovat tallennustilassa nimeltään[br]"Game & Watch Hacking". Olin todella 0:20:28.260,0:20:33.570 innoissani, koska olin onnistunut ja olin[br]murtanut Nintendon konsolin päivää ennen 0:20:33.570,0:20:37.961 virallista julkistusta.[br]Valitettavasti läpäistyäni kentän, 0:20:37.961,0:20:43.350 Toad ei ollut yhtä innostunut. Hän kertoi[br]minulle, että valitettavasti laiteohjelmisto 0:20:43.350,0:20:50.050 oli yhä toisessa linnassa. Niinpä heti[br]maanantaina yhdistin voimani 0:20:50.050,0:20:54.790 Konrad Beckmannin kanssa. Hän on hakkeri[br]Ruotsista. Tutustuimme tapahtumassa. 0:20:54.790,0:20:59.850 Me aloimme keskustelemaan ja heittelemään[br]ideoita puolin ja toisin. Lopulta 0:20:59.850,0:21:05.620 me huomasimme, että keskusmuistissa on[br]erikoisalue nimeltään ITCM-RAM. Se on 0:21:05.620,0:21:10.570 kiinteässä yhteydessä keskusmuistiin, jota[br]käytetään normaalisti korkean suoritus- 0:21:10.570,0:21:15.121 kyvyn rutiineihin, kuten keskeytysten[br]käsittelijöihin. Se on hyvin nopea alue. 0:21:15.121,0:21:22.160 Me käsitimme ettemme ole koskaan[br]tarkastelleet ITCM-muistialueen sisältöä. 0:21:22.160,0:21:26.540 Joten me otimme siitä kopion käyttäen[br]debuggausporttia. Ja kävi ilmi, että 0:21:26.540,0:21:33.020 tämä ITCM-muistialue pitää sisällään[br]ARM-koodia. Joten edelleen kysymys on: 0:21:33.020,0:21:37.570 mistä tämä ARM-koodi tulee? Tuleeko se[br]ulkoisesta flash-muistista, kuten NES-ROM? 0:21:37.570,0:21:45.741 Minä toistin toimenpiteen,[br]jonka teimme NES-ROM:ille. 0:21:45.741,0:21:52.260 Laitoin nollia salatun flash-muistin[br]alkuun, käynnistin laitteen ja 0:21:52.260,0:21:57.720 otin kopion ITCM-muistialueesta. Olin[br]onnekas heti ensimmäisellä yrittämällä, 0:21:57.720,0:22:03.990 koska ITCM:n sisältö muuttui. Koska[br]ITCM:ssä on koodia, ei dataa. 0:22:03.990,0:22:09.300 Aiemmin meillä oli ollut vain NES ROM,[br]joka oli vain dataa, mutta nyt meillä 0:22:09.300,0:22:14.850 koodia. Se tarkoitti, että samalla XOR-[br]kikalla, jota käytimme aiemmin, voisimme 0:22:14.850,0:22:21.530 laittaa ulkoiseen flash-muistiin koodia,[br]joka sitten ladattaisiin keskusmuistiin 0:22:21.530,0:22:27.620 laitteen käynnistyessä. Ja koska se on[br]pysyvä menetelmä, voimme buutata 0:22:27.620,0:22:32.520 laitteen ja ajaa sitä ilman debuggeria.[br]Mikä tahansa koodi, jonka me latasimme 0:22:32.520,0:22:38.490 tälle ITCM-alueelle pystyi lukemaan[br]flash-muistia. Ja me ehkä voisimme 0:22:38.490,0:22:43.280 kirjoittaa koodia jota laite-[br]ohjelmisto jotenkin kutsuisi ja 0:22:43.280,0:22:49.540 kopioisi sen keskusmuistiin, josta[br]me voisimme hakea sen debuggerilla. 0:22:49.540,0:22:57.560 Ongelma vain oli, että jos meillä[br]on oma pätkä koodia tällä 0:22:57.560,0:23:04.750 ITCM-alueella, me emme tiedä mistä[br]osoiteesta ITCM:ssä ajetaan koodia. 0:23:04.750,0:23:09.410 Emme tiedä hyppääkö laiteohjelmisto[br]muistipaikkaan 0 vai 200 vai mihin. 0:23:09.410,0:23:14.270 Mutta on olemassa yksinkertainen kikka[br]oman koodinpätkän rakentamiseen, Se on 0:23:14.270,0:23:19.230 nimeltään NOP-liuku. NOP, eli No OPeration,[br]on prosssorille annettava käsky joka ei 0:23:19.230,0:23:25.100 tee mitään. Ja jos me täytämme suurimman[br]osan ITCM-muistista NOP-käskyillä ja 0:23:25.100,0:23:31.700 sijoitamme oman koodimme niiden perään,[br]me saamme aikaan NOP-liu'un. Ja 0:23:31.700,0:23:37.260 kun prosessori, jota kuvaa Mario, hyppää[br]satunnaiseen osoitteeseen tuossa liu'ussa, 0:23:37.260,0:23:43.500 se ryhtyy suorittamaan NOP-käskyjä kunnes[br]kohtaa koodimme ja suorittaa sen. 0:23:43.500,0:23:49.100 Näin vaikka Mario hyppää keskelle[br]NOP-liukua, hän päätyy aina 0:23:49.100,0:23:54.920 meidän koodiimme. Konrad kirjoitti[br]tämän todella yksinkertaisen 0:23:54.920,0:23:58.330 koodin, jossa on ainoastaan noin 10[br]käskyä, jotka ainoastaan kopioivat 0:23:58.330,0:24:03.980 sisäisen flash-muistin keskusmuistiin,[br]josta me voimme hakea sen debuggerilla. 0:24:03.980,0:24:08.280 Jeejee, todella yksinkertainen häkkäys.[br]Nyt meillä on kopio laiteohjelmistosta ja 0:24:08.280,0:24:13.590 koko flash-muistista. Nyt[br]voimmekin ronkkia koko laitetta. 0:24:13.590,0:24:17.700 Olemme julkaisseet työkalut, joilla[br]sinä voit tehdä saman. Jos haluat 0:24:17.700,0:24:23.161 varmuuskopoida Nintendo Game & Watchin,[br]voit mennä GitHubiini ja ladata 0:24:23.161,0:24:27.670 "Game & Watch backup" -säilön, jossa[br]on paljon tietoa varmuuskopion 0:24:27.670,0:24:33.270 tekemisestä. Se tekee tarkistuksen[br]ja varmistaa tekemättä laitteestasi 0:24:33.270,0:24:38.420 tiiliskiveä, että voit helposti[br]tehdä varmuuskopion laiteohjelmistosta, 0:24:38.420,0:24:43.610 asentaa harrastelijaohjelmoijien koodia,[br]ja kuitenkin palauttamaan alkuperäisen. 0:24:43.610,0:24:50.630 Meillä on mahtava tukiyhteisö Discordissa.[br]Jos ikinä tarvitse apua, luulen että 0:24:50.630,0:24:55.270 sitä löytyy sieltä. Toistaiseksi meillä ei[br]ole vielä yhtään tiiliskiveksi muuttunutta 0:24:55.270,0:25:02.200 Game & Watchia, joten koodi näyttää vakaalta.[br]Olin hyvin innoissani, että tämä haaste 0:25:02.200,0:25:11.170 oli nyt ohi. Vai oliko se? Jos joskus[br]väität netissä murtaneesi onnistuneesti 0:25:11.170,0:25:18.180 sulautetun laitteen, siihen on tasan[br]yksi vastaus: mutta voiko sillä ajaa 0:25:18.180,0:25:23.610 Doomia? Kirjaimellisesti saamani[br]Twitter-viestit, YouTube-kommentit, jopa 0:25:23.610,0:25:28.720 ystäväni spämmäsivät minua haasteella[br]saada Doom toimimaan laitteessa. Mutta 0:25:28.720,0:25:34.390 sitä varten meidän pitäisi selvittää[br]koko laitteen salat. Meidän pitäisi 0:25:34.390,0:25:40.070 luoda tapa kehittää omia ohjelmistoja[br]ja ladata niitä laitteeseen. Onneksi 0:25:40.070,0:25:44.880 useimmat komponentit olivat hyvin[br]dokumentoituja ja siellä ei ollut 0:25:44.880,0:25:50.040 mitään vaitiolovelvollisuuden alaisia[br]komponentteja. Esimerkiksi prosessorista 0:25:50.040,0:25:56.890 on avoin käsikirja ja kirjasto.[br]Flash-muistisiru on hyvin tunnettu. 0:25:56.890,0:26:00.440 Ja niin pois päin. Siellä on vain[br]pari tarkoitukseen suunniteltua 0:26:00.440,0:26:06.280 komponenttia. Esimerkiksi laitteen LCD on[br]tarkoitukseen suunniteltu ja jouduimme 0:26:06.280,0:26:12.690 tutkimaan SPI-väylässä näytölle menevää[br]liikennettä saadaksemme selville mm. 0:26:12.690,0:26:19.160 miten näyttö alustetaan. Jonkin[br]ajan kuluttua meillä oli täysi 0:26:19.160,0:26:24.540 laitteisto käytössä. Oli tuki LCD:lle,[br]audiolle, unitilalle, napeille ja 0:26:24.540,0:26:29.210 vieläpä työkalut, joilla pystyit SWD-[br]debuggeria käyttäen kopioimaan ja 0:26:29.210,0:26:33.820 uudelleenkirjoittamaan ulkoisen flash-[br]muistin. Kaikki löytyy GitHubistamme. 0:26:33.820,0:26:38.520 Jos haluat nyt muokata omaa Game &[br]Watchiasi, kaikki mitä tarvitset on 0:26:38.520,0:26:46.840 debuggaussovitin, kuten 3 dollaria maksava[br]ST-link tai J-Link. Tai oikea ST-Link. 0:26:46.840,0:26:51.140 Ja sitten voitkin aloittaa. Olemme[br]julkaisseet projektipohjan, jolla kuka 0:26:51.140,0:26:54.911 tahansa haluava voi aloittaa kehittämään[br]omia pelejään Game & Watchille. 0:26:54.911,0:26:58.670 Se on yksinkertaista. On kuvapuskuri,[br]johon voit kirjoittaa. Kontrollit ovat 0:26:58.670,0:27:04.470 yksinkertaisia jne. Ja kuten sanoin,[br]meillä on todella avulias yhteisö. 0:27:04.470,0:27:10.000 Nyt kun meillä oli koko laitteisto[br]hallussa, voin viimein työstää Doomia. 0:27:10.000,0:27:15.420 Aloitin tutkimalla muita Doomin sovituksia[br]STM32:lle. Ja löysin nimimerkin floppes 0:27:15.420,0:27:22.010 kirjoittaman stm3doomin. Ongelma oli,[br]että stm32doom on suunniteltu laitteelle, 0:27:22.010,0:27:28.340 jossa on 8 megatavua keskusmuistia ja[br]Doomin vaatimat tiedostot ulkoisella USB- 0:27:28.340,0:27:37.630 asemalla. Tässä oli vain 1,3 MB keskus-[br]muistia, 128 kB flash-muistia ja 1 MB 0:27:37.630,0:27:42.600 ulkoista flash-muistia. Meidän pitäisi[br]mahduttaa siihen kaikki kentät, koodi ja 0:27:42.600,0:27:50.880 niin edelleen. Doomin kenttätieto[br]on tallennettu nk. WAD-tiedostoihin 0:27:50.880,0:27:57.240 (WAD = Where's All my Data). Näissä[br]tiedostoissa on spritet, tekstuurit, 0:27:57.240,0:28:03.230 kentät jne. WAD Doom 1:lle on[br]noin 4 megatavua kooltaan ja 0:28:03.230,0:28:11.440 WAD Doom 2:lle on 40 megatavua kooltaan.[br]Mutta meillä on vain 1,1 megatavua tilaa. 0:28:11.440,0:28:16.390 Lisäksi meidän on mahdutettava koodikin[br]sinne. Joten ilmeisesti meidän on löydettävä 0:28:16.390,0:28:22.200 joku tosi pieni Doom-sovitus. Ja kuten[br]selvisi, on olemassa Mini-WAD. Se on 0:28:22.200,0:28:27.680 minimaalinen Doom, jonka WAD-[br]tiedostosta on riisuttu kaikki 0:28:27.680,0:28:34.240 hilavitkuttimet ja kaikki on korvattu[br]yksinkertaisilla ääriviivoilla jne. 0:28:34.240,0:28:38.130 Ja vaikka se ei olekaan nätti, olin[br]aika varma, että saisin sen toimimaan, 0:28:38.130,0:28:46.320 koska se tarvitsee vain 250 kilotavua[br]40 megatavun sijasta. Lisäksi aika 0:28:46.320,0:28:51.300 monta asiaa Chocolate Doom -sovituksesta[br]piti muuttaa. Esimerkiksi minun piti 0:28:51.300,0:28:56.150 poistaa kaikki tiedostoja käsittelevä[br]koodi ja korvata se omallani. 0:28:56.150,0:29:01.230 Minun piti myös lisätä tuki Game &[br]Watchin LCD:lle ja napeille. Minun piti 0:29:01.230,0:29:05.350 hankkiutua eroon monesta asiasta[br]saadakseni sen toimimaan suht' sujuvasti. 0:29:05.350,0:29:10.630 Esimerkiksi pahamainen pyyhkimisefekti[br]oli pakko tiputtaa, kuten myös äänet. 0:29:10.630,0:29:16.270 Seuraava ongelma oli, että kun sitä[br]käännettiin, se ei mahtunut keskusmuistiin 0:29:16.270,0:29:22.820 ja kaatuili kaiken aikaa. Laitteella on[br]noin 1,3 megatavua keskusmuistia eri 0:29:22.820,0:29:27.510 alueilla. Ja esimerkiksi kuvapuskuri,[br]jota selvästi tarvitsemme, vie siitä 0:29:27.510,0:29:36.350 154 kilotavua. Sitten meillä on 160 kilotavua[br]alustettua dataa, 320 kilotavua alustamatonta 0:29:36.350,0:29:42.000 dataa ja tonneittain dynaamisia varauksia,[br]joita Chocolate Doom tekee. Ja nämä 0:29:42.000,0:29:46.610 dynaamiset varaukset olivat iso ongelma,[br]koska Chocolate Doomin lähdekoodi tekee 0:29:46.610,0:29:52.480 paljon pieniä varauksia, joita käytetään[br]väliaikaiseen tiedonvarastointiin kunnes 0:29:52.480,0:29:58.600 ne vapautetaan. Dynaaminen[br]muisti fragmentoituu pahasti 0:29:58.600,0:30:02.710 äkkiä. Lopulta siellä ei ole yhtään[br]tilaa jäljellä esimerkiksi kentän 0:30:02.710,0:30:09.791 alustamiseen. Ja korjatakseni tämän[br]otin Chocolate Doomin lähdekoodin 0:30:09.791,0:30:15.110 ja muutin paljon dynaamisia varauksia[br]staattisiksi varauksiksi, josta 0:30:15.110,0:30:22.030 seurasi se iso etu, että kääntäjän[br]virheilmoitukset tekivät enemmän järkeä. 0:30:22.030,0:30:27.340 Koska se kertoi sinulle: "hei, tämä ja[br]tämä data ei mahdu keskusmuistiin". 0:30:27.340,0:30:31.990 Lopulta useiden yritysten ja erehdysten[br]sekä kopioituani mahdollisimman monta 0:30:31.990,0:30:39.400 alkuperäistä resurssia Mini-WAD:iin,[br]sain se toimimaan. Minulla oli Doom, joka 0:30:39.400,0:30:45.030 toimi tässä Game & Watch -laitteessa[br]ja toivottavasti rauhoitti Internetin jumalat, 0:30:45.030,0:30:49.750 jotka pakottivat minut tekemään sen.[br]Valitettavasti USB-portti ei ole fyysisesti 0:30:49.750,0:30:55.690 kytketty prosessoriin ja siten ei ole[br]mahdollista hakkeroida laitetta 0:30:55.690,0:31:00.390 liittämällä se tietokoneeseen.[br]Kuitenkin on aika helppo tehdä tämä 0:31:00.390,0:31:06.790 käyttäen jotain näistä USB-debuggereista.[br]Eniten toivottu ohjelmistotyyppi 0:31:06.790,0:31:12.870 oli selkeästi emulaattorit. Ja olen ylpeä[br]sanoessani, että tällä hetkellä meillä 0:31:12.870,0:31:19.210 on suurehko kokoelma emulaattoreita, jotka[br]toimivat Nintendo Game & Watchilla. Ja se 0:31:19.210,0:31:23.370 alkoi Konrad Beckmannin aloittamasta[br]Retro Go -projektista, joka on 0:31:23.370,0:31:29.970 kokoelma emulaattoreita laitteelle nimeltä[br]Odroid Go. Odroid Go on pieni kannettava 0:31:29.970,0:31:35.880 laite, jossa on samanlaiset kontrollit ja[br]kokorajoitukset kuin Game & Watchissa. 0:31:35.880,0:31:40.630 Se oli aika siistiä sovittaa tätä koodia,[br]koska se raskas työ oli jo tehty. 0:31:40.630,0:31:47.670 Retro Go sisältää emulaattorit[br]NES:ille, Gameboylle, Gameboy Colorille, 0:31:47.670,0:31:52.770 jopa Sega Master Systemille[br]ja Sega Game Gearille. 0:31:52.770,0:31:58.290 Pari päivää myöhemmin Konrad pystyi[br]esittelemään NES-emulaattoriaan 0:31:58.290,0:32:02.960 ajamassa Zeldaa ja muita pelejä, kuten[br]Contraa, Nintendo Game & Watchilla. 0:32:02.960,0:32:09.230 Tämä on superhauskaa. Aluksi meillä[br]oli vain perusemulaattori, jolla 0:32:09.230,0:32:13.170 pystyi hädintuskin pelaamaan ja se[br]tiputti frameja. Meillä ei ollut 0:32:13.170,0:32:18.290 nättiä skaalausta, VSynciä jne. Mutta[br]nyt useamman viikon jälkeen se on 0:32:18.290,0:32:24.090 aika kiva laite käyttää ja pelata. Meillä[br]on myös Gameboy-emulaattori, jolla voit 0:32:24.090,0:32:29.440 pelata Gameboy-suosikkejasi, kuten[br]Pokémonia, Super Mario Landia jne. 0:32:29.440,0:32:35.160 Nintendo Game & Watchilla jos sinulla[br]vain sattui ROM:ien varmuuskopiot. 0:32:35.160,0:32:38.650 Me kokeilimme erilaisia skaalaus-[br]algoritmeja hyödyntääkseemme näyttöä. 0:32:38.650,0:32:43.310 Sinä voit vaihtaa[br]käytettyä skaalausalgoritmia 0:32:43.310,0:32:48.160 omien mieltymystesi mukaan.[br]Voit vaihtaa jopa väripalettia 0:32:48.160,0:32:54.450 peleille. Meillä on kiva peli-[br]valikko, joka antaa sinun 0:32:54.450,0:32:59.240 pitää laitteella useampia ROM:eja[br]ja vaihtaa niiden välillä. Meillä on 0:32:59.240,0:33:04.210 tuki tilan tallentamiselle, joten laite[br]tallentaa edistymisesi vaikka 0:33:04.210,0:33:08.870 sammuttaisit lalitteen ja voit jatkaa[br]peliäsi vaikka akku tyhjenisi. 0:33:08.870,0:33:14.380 Löydät lähdekoodin kaikkeen tämän[br]Konradin Retro Go -GitHub-säilöstä. 0:33:14.380,0:33:20.710 Ja se todella mahtavaa. Muut[br]ihmiset kehittävät esimerkiksi 0:33:20.710,0:33:25.430 emulaattorin CHIP-8:lle ja siinä on[br]kiva kokoelma pieniä arcade-pelejä 0:33:25.430,0:33:31.271 ja se on todella kivaa ja helppoa[br]kehittää lisää sitä käyttäen. 0:33:31.271,0:33:37.010 Joten kokeile sitä jos sinulla on[br]Game & Watch ja omatekoiset ohjelmat kiinnostavat. 0:33:37.010,0:33:41.590 Tim Schuerwegen jopa työstää emulaattoria[br]alkuperäisille Game & Watch -peleille. 0:33:41.590,0:33:45.920 Tämä on todella siistiä, koska se tekee[br]Nintendo Game & Watchista emulaattorin 0:33:45.920,0:33:53.130 kaikille koskaan julkaistuille[br]Game & Watch -peleille. 0:33:53.130,0:33:57.860 Ja mikä on todella mahtavaa minusta on se[br]miten yhteisö syntyi. Me olemme aika 0:33:57.860,0:34:02.140 avoimia kehityksestämme Twitterissä[br]ja Konrad striimaa Twitchissä 0:34:02.140,0:34:06.480 edistymisestään. Me avasimme Discord-[br]kanavan, jolle laitteen hakkeroinnista 0:34:06.480,0:34:11.850 kiinnostuneet ihmiset voivat liittyä.[br]Ja oli mahtavaa nähdä mitä yhteisö 0:34:11.850,0:34:16.720 sai aikaan. Esimerkiksi nyt meillä on[br]toimivat tallennuspäivitys, joka toimii 0:34:16.720,0:34:21.179 sekä omatekoisten ohjelmien että[br]virallisen laiteohjelmiston kanssa. 0:34:21.179,0:34:25.320 Yhden megatavun tallennustilan sijaan[br]voit saada 60 megatavua flash-muistia. 0:34:25.320,0:34:30.549 Sitä varten sinun on korvattava vain yksi[br]ainoa siru. Se on aika helppo tehdä. 0:34:30.549,0:34:35.690 Raudan täydellistä ymmärtämistä varten[br]Daniel Cuthbert ja Daniel Padilla ovat 0:34:35.690,0:34:41.010 toimittaneet korkean resoluution röntgen-[br]kuvat, joista näkyy jokainen kytkentä, 0:34:41.010,0:34:46.379 jopa PGA-osien. Mitään ei tarvitse[br]juottaa irti. Sitten Jake Little 0:34:46.379,0:34:52.980 Upcycle Electronicsista jäljitti kuvista[br]ja yleismittarilla piirilevyn 0:34:52.980,0:34:58.220 kaavion. Hän jopa loi[br]piirrustukset, joista selviää kaikki 0:34:58.220,0:35:02.260 yksityiskohdat, joita tarvitset kun haluat[br]ohjelmoida jotain. Se oli todella hauskaa. 0:35:02.260,0:35:07.099 Sander van der Wel esimerkiksi on luonut[br]oman piirilevynsä ja nyt on jopa 0:35:07.099,0:35:13.220 projekteja, joissa pyritään korvaamaan[br]alkuperäinen piirilevy piirilevyllä, 0:35:13.220,0:35:20.019 jossa on FPGA ja ESP32. Joten on todella[br]jännä nähdä mitä ihmiset saavat aikaan. 0:35:20.019,0:35:24.819 Toivottavasti nautit tästä esityksestä ja[br]minä toivon, että näen sinut Discordissa 0:35:24.819,0:35:35.019 jos haluat liittyä hauskanpitoon.[br]Ja kiitos kun olit mukana. 0:35:35.019,0:35:41.329 Herald: Hei. Vau, se oli todella uskomaton[br]esitys. Kiitos paljon, Thomas. 0:35:41.329,0:35:48.140 Kuten ilmoitimme alussa, otamme vastaan[br]kysymyksiä teiltä ja meillä onkin niitä 0:35:48.140,0:35:54.450 jo muutama. Katsotaan saammeko käytyä[br]ne kaikki läpi. Ensimmäinen on: 0:35:54.450,0:35:59.650 luitko artikkeleita Nintendosta[br]tarkkailemassa hakkereita? Yksityis- 0:35:59.650,0:36:04.799 etsiviä ja sellaista. Oletko mitenkään[br]huolissasi tälläisesta? 0:36:04.799,0:36:08.400 Thomas: Voi, mitä minun kameralleni[br]tapahtuu? Näyttää siltä kuin Luigi 0:36:08.400,0:36:17.539 olisi sekoillut asetusteni kanssa. Joo,[br]olen lukenut nuo artikkelit, mutta 0:36:17.539,0:36:22.210 tässä tapauksessa ei ole piratismi-[br]ongelmaa, eihän? En anna kenenkään 0:36:22.210,0:36:26.940 pelata uusia pelejä. Jos haluaisit[br]kopioida Super Mario ROM:in, sinun 0:36:26.940,0:36:32.160 olisi pitänyt tehdä se 30 vuotta sitten,[br]NES Classicilla tai Switchillä tai jollain 0:36:32.160,0:36:37.240 niistä sadoista Nintendon siinä välissä[br]julkaisemista konsoleista. Joten en ole 0:36:37.240,0:36:41.480 erityisen huolissani asiasta.[br]H: Luulen myös, että kohdeyleisön 0:36:41.480,0:36:50.270 näkökulma näkyy täällä. Seuraavaan[br]kysymykseen, joka on: luuletko, että 0:36:50.270,0:36:55.460 on olemassa syy siihen miksi[br]ulkoista flash-sirua käytetään? 0:36:55.460,0:37:02.849 Thomas: Jep. STM32H7B0:n sisäinen [br]flash-muisti on suht' pieni. Se on 0:37:02.849,0:37:08.450 vain 128 kilotavua. Ja he eivät olisi[br]mahduttaneet kaikkea sille, ei edes 0:37:08.450,0:37:13.240 kuvapuskuria. Jopa kuvapuskurin[br]kuva on suurempi kuin sisäinen 0:37:13.240,0:37:19.100 flash-muisti. Luulen, että se on syy[br]ja olen tyytyväinen, että he tekivät niin. 0:37:19.100,0:37:26.730 H: Aivan. Onko salauksen purku tehty[br]koodilla vai onko se mikrokontrollerin 0:37:26.730,0:37:30.460 ominaisuus?[br]T: Mikrokontrollerissa on 0:37:30.460,0:37:36.160 integroitu ominaisuus nimeltään OFT-DEC.[br]Flash-muisti on suoraan mapattu muistiin 0:37:36.160,0:37:41.109 ja sirussa on tämä OTF DEC -esitäyttö,[br]joka tarjoaa automaattisesti 0:37:41.109,0:37:45.430 salakirjoituksen purun. Se tehdään[br]kaikki raudalla ja voit jopa hakea 0:37:45.430,0:37:48.350 salausavaimet sieltä raudasta. 0:37:48.350,0:37:57.910 Herald: OK, näppärää. Ja myös seuraava[br]kysymys liittyy siihen: 0:37:57.910,0:38:03.520 onko mielestäsi Nintendon käyttämä salaus[br]siihen käytetyn vaivan arvoinen? 0:38:03.520,0:38:07.430 Ikään kuin se olisi siellä antaakseen[br]valheellista turvallisuudentunnetta. 0:38:07.430,0:38:12.709 Mitä sinä ajattelet siitä?[br]T: Ajattelen omasta näkökulmastani, että 0:38:12.709,0:38:16.489 he valitsivat oikean salauksen, koska[br]sitä oli hauskaa takaisinmallintaa ja 0:38:16.489,0:38:21.910 yrittää ohittaa. Se oli mahtava[br]haaste ja ajattelen, että he tekivät 0:38:21.910,0:38:26.900 kaiken oikein. Mutta ajattelen myös, että[br]loppupeleissä se on yksinkertainen laite 0:38:26.900,0:38:31.569 ja jos katsot mitä ihmiset rakentavat[br]sen päälle - pelejä ja kaikkea muuta - 0:38:31.569,0:38:36.680 ajattelen, että he tekivät kaiken oikein.[br]Luultavasti se oli vain rutiinijuttu 0:38:36.680,0:38:41.569 heille. "OK, me lukittiin JTAG."[br]Jep, mutta luulen että se on hauskaa, 0:38:41.569,0:38:44.609 koska e ei avaa piratismiongelmaa. 0:38:44.609,0:38:51.140 H: Jep. Yksi juttu liittyy NOP-[br]liukuun, jonka havainnollistit 0:38:51.140,0:39:01.189 todella hyvin. Eikö aliohjelmien[br]alut olisivat olleet sopivia myös 0:39:01.189,0:39:11.460 tämän tavoitteen saavuttamiseen? Kysyjä[br]sanoo, että rekisterien tallettamiseen 0:39:11.460,0:39:20.640 liittyvät komennot ovat aika tunnistettavia.[br]Kuinka... Jep. T: Joo, todellakin. Datan 0:39:20.640,0:39:25.019 löytämiseen ITCM-muistista ja sen[br]hyväksikäyttöön meni alle tunti aikaa. 0:39:25.019,0:39:29.950 Joten jos me olisimme yrittäneet[br]takaisinmallintaa koodia, se olisi 0:39:29.950,0:39:33.660 ollut enemmän työtä. Täysin mahdollista[br]eikä edes vaikeaa, mutta keskusmuistin 0:39:33.660,0:39:38.559 täyttäminen NOP-käskyillä vei vain pari[br]minuuttia ja oli sekä helpoin että nopein 0:39:38.559,0:39:45.420 tapa edetä ilman Ghidraa.[br]H: OK, siistiä, kiitos. Ja tämä on 0:39:45.420,0:39:54.329 enemmän kommentti kuin kysymys. Hän sanoo,[br]että on outoa ettei ST:n AN5281 mainitse 0:39:54.329,0:39:59.630 kertaakaan, että dataa ei verifioida[br]salauksen aikana. Minusta se on 0:39:59.630,0:40:05.759 enemmän virhe ST:n kuin Nintendon[br]puolelta. Mitä ajattelet tästä? 0:40:05.759,0:40:10.690 Thomas: Joo, minä olen jokseeenkin samaa[br]mieltä tästä. Vaikka sinulla ei olisi 0:40:10.690,0:40:17.670 JTAG:ia, ARM:n Thumb-käsky[br]on 2-4 tavua ja olisi aika pieni 0:40:17.670,0:40:21.859 tila bruteforcettaa mahdollisesti[br]mielenkiintoinen haarautumiskomento. 0:40:21.859,0:40:28.009 Joten luulen, että se ei ole täydellistä,[br]mutta verifiointi on aika 0:40:28.009,0:40:33.410 kallista laskentamielessä ja[br]minusta laiteohjelmiston pitäisi 0:40:33.410,0:40:37.160 verifioida ulkoisen flash-muistin sisältö. 0:40:37.160,0:40:44.109 H: OK, luulen, että kysymme vielä[br]kaksi kysymystä ennen kuin palaamme 0:40:44.109,0:40:52.000 studioon. Kysymys AES-[br]salausavaimista... Saitteko 0:40:52.000,0:40:57.349 niitä haltuunne?[br]Thomas: Kyllä saimme. Mutta se on 0:40:57.349,0:41:01.700 ST:n sovellus, ja he tekevät jotain hullua[br]shiftausta avaimille, mutta luulen, 0:41:01.700,0:41:07.400 että juuri tänään, vain tunti ennen[br]tätä esitystä yksi äijä... Sori, en 0:41:07.400,0:41:12.650 tiedä, onko kyseessä äijä... Henkilö[br]Discordissa rakensi uudelleen salauksen. 0:41:12.650,0:41:16.779 Mutta me, minä henkilökohtaisesti[br]en ollut ikinä kiinnostunut siitä, 0:41:16.779,0:41:22.080 koska kun olet laskenut laitteen[br]RTP-tasolle 0, voit lukea mapatun 0:41:22.080,0:41:24.740 flash-muistin ja saada salaamattoman[br]sisällön haltuusi. 0:41:24.740,0:41:32.009 H: Aivan, kiitos. Ja viimeinen[br]kysymys LCD-kontrollerista. Käytetäänkö 0:41:32.009,0:41:38.180 sitä kirjoittamalla pikseleitä SPI:n yli[br]vai onko siinä jotain ominaisuuksia, 0:41:38.180,0:41:40.930 ehkä jopa tausta tai spritejä tai jotain[br]sellaista? 0:41:40.930,0:41:46.809 T: LCD:ssä itsessään ei ole mitään[br]erikoisominaisuuksia. Siinä on SPI-väylä 0:41:46.809,0:41:50.930 konfigurointiin ja sitten siinä on[br]rinnakaisliitäntä - joten se tarvitsee 0:41:50.930,0:41:56.809 paljon pinnejä. Mutta siru itsessään[br]sisältää LTDC:n, joka on LCD-kontrolleri, 0:41:56.809,0:42:00.769 joka tarjoaa kaksi tasoa alfasekoituksella[br]ja jotain perusikkunointia yms. 0:42:00.769,0:42:06.630 H: OK, siistiä ja kiitos todella, todella 0:42:06.630,0:42:11.799 paljon hienosta esityksestä ja hienosta[br]introsta. Ja nyt palaamme päästudioomme 0:42:11.799,0:42:14.859 kiertoradalle. Kiitos todella paljon.[br]Takaisin kiertoradalle. 0:42:14.859,0:42:17.977 rC3-loppumusiikkia 0:42:17.977,0:42:46.000 Subtitles created by c3subtitles.de[br]in the year 2020. Join, and help us! 0:42:46.000,0:42:56.000 Translated by Markus Aurala[br](KYBS2004 course assignment at JYU.FI)