< Return to Video

#rC3 - Nintendo Game & Watchin hakkerointi

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

https://media.ccc.de/v/rc3-11527-hacking_the_nintendo_game_watch

Prinsessa on AES-salattuna toisessa linnassa

Marraskuun 13. päivä Nintendo julkaisi uusimman retrokonsolinsa, Nintendo Game & Watchin - mutta se oli jo hakkeroitu siihen mennessä!

Toisin kuin Nintendon muissa klassikkokonsoleissa (NES & SNES), Nintendo oli parantanut suojauksiaan: lukittu prosessori, AES-CTR -salattu flash-muisti jne tekivät siitä huomattavasti hankalammin hakkeroitavan, mutta lopulta se kuitenkin tapahtui - päivää ennen julkaisua.

Tämä puhe kuljettaa sinut läpi koko prosessin (avaaminen, laiteohjelmiston hakkerointi omien ohjelmistojen asentamiseksi konsoliin) hauskalla, aloittelijaystävällisellä tavalla.

Retrointoilijat odottivat kovasti Nintendo Game & Watchia ja odotus oli selkeä: haluamme lisää pelejä tähän laitteeseen!

Mutta Nintendo teki hakkereiden elämästä hankalampaa: CPU oli lukittu, ulkoinen flash-muisti AES-salattu, ja USB-C -portin datapinnit olivat kytkemättä.

Mutta tässä puheessa opimme miten laiteohjelmiston voi hakkeroida, ajaa koodia NOP-liukua hyödyntämällä, kopioida laitteen ROM:in ja RAM:in ja tehdä sen mitä kaikki pyysivät eli ajaa Doomia!

Jos olet kiinnostunut koko ketjusta laitteen avaamisesta, hakkeroinnista, oman koodin kirjoittamisesta laitteelle, tämä puhe on sinulle! Ja kaikki mitä tarvitset saman perässä tekemiseen on Game & Watch ja noin neljän dollarin hintainen laite!

Thomas Roth

https://fahrplan.events.ccc.de/rc3/2020/Fahrplan/events/11527.html

more » « less
Video Language:
English
Duration:
42:56

Finnish subtitles

Revisions