Dieser Artikel betrifft die Nintendo Wii

Regionsauswahl (Kanal)

Aus WiiDatabase Wiki
Zur Navigation springenZur Suche springen
rgnsel
Regionsauswahl (Kanal)
Allgemein
Publisher Nintendo
Typ Versteckt
Title-ID HALx
Version 2
Blöcke 16 Blöcke
Benötigtes IOS IOS31

rgnsel bzw. Region Select (dt.: Regionsauswahl) ist ein versteckter Kanal, der auf der Nintendo Wii und dem Wii-Modus der Wii U vorinstalliert ist. Er kann nur von Spielen aus gestartet werden und ermöglicht es, die Region auszuwählen, damit für Online-Spiele der richtige Ort angezeigt wird. Der Kanal lädt die Liste der Regionen von Nintendos Server herunter, daher ist eine Internetverbindung unerlässlich. Der Wetterkanal benutzt eine eigene Liste, unabhängig dieses Kanals. Wird das Land in den Wii-Einstellungen geändert, wird auch die Region zurückgesetzt. Nach dem Einstellen kehrt der Kanal in das Wii-Menü zurück, unabhängig davon, welches Spiel vorher gestartet wurde. Um den Kanal ohne ein Spiel zu starten, kann der rgnsel booter des WiiDatabase Teams verwendet werden.

Funktionsweise

Der Kanal lädt .alas Dateien von Nintendos cfh-Server herunter, der auch für die EULA und für Ankündigungen über die Wii-Pinnwand genutzt wird. Die volle URL lautet:

http://cfh.wapp.wii.com/address/LÄNDERCODE.alas

also

http://cfh.wapp.wii.com/address/078.alas

für alle deutschen Bundesländer. Diese Dateien sind mit AES-256-CBC verschlüsselt; werden diese entschlüsselt, erhält man ein LZ77-komprimiertes U8-Archiv, welches HTML-Dateien und verschiedene Assets beinhaltet. Ein solches Archiv kann hier heruntergeladen (14,5 KB) werden. Enthalten ist auch eine JavaScript-Datei, in denen die einzelnen Regionen in jeder Sprache übersetzt wurden.

regionData.js für Deutschland
var RegionInfo = new Array(
    new Array(1, 0, 0, new Array("ドイツ","Germany","Deutschland","Allemagne","Alemania","Germania","Duitsland")),
    new Array(2, 52.52116667, 13.40366667, new Array("ベルリン","Berlin","Berlin","Berlin","Berlín","Berlino","Berlijn")),
    new Array(3, 50.0755, 8.2385, new Array("ヘッセン州","Hesse","Hessen","Hesse","Hesse","Assia","Hessen")),
    new Array(4, 48.77316667, 9.174833333, new Array("バーデン・ビュルテンベルク州","Baden-Württemberg","Baden-Württemberg","Bade-Wurtemberg","Baden-Wurtemberg","Baden-Württemberg","Baden-Württemberg")),
    new Array(5, 48.13333333, 11.556, new Array("バイエルン州","Bavaria","Bayern","Bavière","Baviera","Baviera","Beieren")),
    new Array(6, 52.39283333, 13.03966667, new Array("ブランデンブルク州","Brandenburg","Brandenburg","Brandebourg","Brandeburgo","Brandeburgo","Brandenburg")),
    new Array(7, 53.06666667, 8.806666667, new Array("ブレーメン","Bremen","Bremen","Brême","Bremen","Brema","Bremen")),
    new Array(8, 53.55, 9.99, new Array("ハンブルク","Hamburg","Hamburg","Hambourg","Hamburgo","Amburgo","Hamburg")),
    new Array(9, 53.61666667, 11.41666667, new Array("メクレンブルク・フォアポンメルン州","Mecklenburg-Western Pomerania","Mecklenburg-Vorpommern","Mecklembourg-Poméranie occidentale","Mecklemburgo-Pomerania Occidental","Meclemburgo-Pomerania Occidentale","Mecklenburg-Voor-Pommeren")),
    new Array(10, 52.36666667, 9.734833333, new Array("ニーダーザクセン州","Lower Saxony","Niedersachsen","Basse-Saxe","Baja Sajonia","Bassa Sassonia","Nedersaksen")),
    new Array(11, 51.24033333, 6.774166667, new Array("ノルトライン・ウェストファーレン州","North Rhine-Westphalia","Nordrhein-Westfalen","Rhénanie-du-Nord-Westphalie","Renania del Norte-Westfalia","Nord Reno-Westfalia","Noord-Rijnland-Westfalen")),
    new Array(12, 50, 8.259833333, new Array("ラインラント・ファルツ州","Rhineland-Palatinate","Rheinland-Pfalz","Rhénanie-Palatinat","Renania-Palatinado","Renania-Palatinato","Rijnland-Palts")),
    new Array(13, 49.23333333, 7, new Array("ザールラント州","Saarland","Saarland","Sarre","Sarre","Saarland","Saarland")),
    new Array(14, 51.03333333, 13.73333333, new Array("ザクセン州","Saxony","Sachsen","Saxe","Sajonia","Sassonia","Saksen")),
    new Array(15, 52.125, 11.61666667, new Array("ザクセン・アンハルト州","Saxony-Anhalt","Sachsen-Anhalt","Saxe-Anhalt","Sajonia-Anhalt","Sassonia-Anhalt","Saksen-Anhalt")),
    new Array(16, 54.32133333, 10.12283333, new Array("シュレスビヒ・ホルシュタイン州","Schleswig-Holstein","Schleswig-Holstein","Schleswig-Holstein","Schleswig-Holstein","Schleswig-Holstein","Sleeswijk-Holstein")),
    new Array(17, 50.97283333, 11.02416667, new Array("テューリンゲン州","Thuringia","Thüringen","Thuringe","Turingia","Turingia","Thüringen"))
);

Die Werte bedeuten folgendes (Beispiele):

Reihenfolge Breitengrad Längengrad Japanisch Englisch Deutsch Französisch Spanisch Italienisch Niederländisch
2 52.52116667 13.40366667 ベルリン Berlin Berlin Berlin Berlín Berlino Berlijn
5 48.13333333 11.556 バイエルン州 Bavaria Bayern Bavière Baviera Baviera Beieren

Die JavaScript-Datei wird dann über ein <script>-Tag in der HTML-Datei geladen. Sinnvoller wäre es allerdings für Nintendo gewesen, lediglich die JS-Dateien auf den Server hochzuladen und die HTML-Dateien in den Kanal einzubinden. Über einen iFrame wird das ganze schließlich in der index.html eingeblendet.

Entschlüsselung

  1. Ersten 320 Bytes von ALAS entfernen (RSA-Signatur)
  2. Entschlüsseln mit AES-256-CBC und folgenden Keys:
    • Schlüssel: FF4C1AE3D4FFD236712E258A1F0B91E72C9125B0DF94C1691BCEF13011F16C0F
    • Initialisierungsvektor: 862D7D8676A630A82972AB9735E1A5CE
  3. Von der entschlüsselten Dateien die ersten 32 Bytes entfernen - fertig ist ein LZ77-komprimiertes U8-Archiv
  4. Mit bspw. DSDecmp die Datei dekomprimieren
  5. Anschließend das U8-Archiv mit bspw. U8Tool oder ShowMiiWads entpacken

Einfacher macht es das ALAS Decryptor Skript vom WiiDatabase Team.