Line 1:
Line 1:
−
The News and Forecast channels download data packages from Nintendo servers via plain http connection.
+
[[Category:Nintendo software]]
−
Some examples:
+
{{stub}}
+
{{Infobox channel
+
| title = News Channel
+
| image = [[File:Newschannel.png|200px]]
+
| desc = News information
+
| id = HAGA, HAGx
+
| source = update
+
| type = General channel
+
| version = 0.7 (7)
+
| peripherals = {{Wiimote1}} {{Internet}}
+
| wc24 = 1
+
}}
−
http://weather.wapp.wii.com/1/076/short.bin
+
The '''News Channel''' downloads data packages from Nintendo servers via plain HTTP connection. The official servers for the News Channel were discontinued on June 28, 2013; however, [[RiiConnect24]] has since restored its functionality.
−
http://weather.wapp.wii.com/1/076/forecast.bin
−
http://news.wapp.wii.com/1/076/news.bin.08
−
Nowadays, it seems the news file has moved:
+
The data files are RSA-2048-SHA1 signed, and the LZ10 compressed content begins at 0x140. A Kaitai file documenting the file structure can be found [https://github.com/RiiConnect24/Kaitai-Files/blob/master/Kaitais/news_file.ksy here], and code used by RiiConnect24 to download news data and generate files is available [https://github.com/RiiConnect24/File-Maker/tree/master/Channels/News_Channel here].
−
−
http://news.wapp.wii.com/v2/1/076/news.bin.00
−
−
...
−
−
http://news.wapp.wii.com/v2/1/076/news.bin.23
−
−
http://news.wapp.wii.com/ displays a Red Hat Enterprise Linux Test Page
−
−
File structure:
−
−
<pre>
−
$0000 - $003F: padding (00)
−
$0040 - $013F: rsa encrypted sha-1 signature of rest of the file
−
$0140 - $0143: header
−
$0144 - .....: compressed data
−
</pre>
−
−
The compression is very simple:
−
# Read one byte
−
# For each bit of the byte, msb-to-lsb,
−
#* if 0, copy one byte to the output
−
#* if 1, read 16 bits msb first in v, copy n bytes at offset m from the end of the output, n=3+(v>>12), m=v & fff
−
−
Quick and very dirty C code:
−
<source lang="c">
−
i = 0x144;
−
j = 0;
−
while(i < size) {
−
int k;
−
int v = data[i++];
−
for(k=0; k<8; k++)
−
if(!(v & (1 << (7-k)))) {
−
result_data[j++] = data[i++];
−
} else {
−
int vv = (data[i] << 8) | data[i+1];
−
int nb = 3+(vv >> 12);
−
int off = (vv & 0xfff);
−
int l;
−
i+=2;
−
for(l=0; l<nb; l++) {
−
result_data[j] = result_data[j-off-1];
−
j++;
−
}
−
}
−
}
−
</source>
−
[[Category:Software]][[Category:Wii channel]]