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