In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "News Channel"

From WiiBrew
Jump to navigation Jump to search
(Main page of site now displays 403)
m
Line 3: Line 3:
 
Some examples:
 
Some examples:
  
http://weather.wapp.wii.com/1/076/short.bin
+
http://weather.wapp.wii.com/1/076/short.bin<br>
http://weather.wapp.wii.com/1/076/forecast.bin
+
http://weather.wapp.wii.com/1/076/forecast.bin<br>
http://news.wapp.wii.com/1/076/news.bin.08
+
http://news.wapp.wii.com/1/076/news.bin.08<br>
  
 
Nowadays, it seems the news file has moved:
 
Nowadays, it seems the news file has moved:

Revision as of 07:44, 13 May 2008

The News and Forecast channels download data packages from Nintendo servers via plain http connection.

Some examples:

http://weather.wapp.wii.com/1/076/short.bin
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:

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/ formerly displayed a Red Hat Enterprise Linux Test Page. It now displays a 403: Forbidden error.

File structure:

$0000 - $003F: padding (00)
$0040 - $013F: rsa encrypted sha-1 signature of rest of the file
$0140 - $0143: header
$0144 - .....: compressed data

The compression is very simple:

  1. Read one byte
  2. 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:

  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++;
        }
      }
  }