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

Difference between revisions of "Wiifuse server"

From WiiBrew
Jump to navigation Jump to search
(Undo revision 45033 by IMacros (Talk))
(linkify BRICK)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{wrongtitle|wiifuse_server}}
+
{{cleanup}}
wiifuse_server - coded by dhewg, #wiidev efnet/blitzed
+
{{DISPLAYTITLE:wiifuse_server}}
 +
{{Infobox development tools
 +
| title      = wiifuse_server
 +
| image      =
 +
| type        = resource
 +
| author      = dhewg, #wiidev efnet/blitzed
 +
| version    =
 +
| licence    =
 +
| website    =
 +
| discussion  =
 +
| download    = Media:Wiifuse-0.2.0.tgz
 +
| source      = included
 +
}}
  
== about ==
+
'''wiifuse_server''' is a Wii application that responds to [[wiifuse]] requests coming over a usbgecko adapter from a remote host. This allows you to mount the Wii internal NAND filesystem with full read/write access remotely on your computer.
wiifuse_server is a wii application that responds to [[Wiifuse|wiifuse]] requests coming over a usbgecko adapter from a remote host. this allows you to mount the wii internal nand filesystem with full read/write access remotely on your computer.
 
  
'''<font color="#FF0000">WARNING</font>: watch exactly what you are doing, you can <font color="#FF0000">BRICK</font> your wii with this tool. use at your own risk.'''
+
'''<font color="#FF0000">WARNING</font>: watch exactly what you are doing, you can <font color="#FF0000">[[Brick | BRICK]]</font> your wii with this tool. use at your own risk.'''
  
== requirements ==
+
== Prerequisites ==
*an operating system capable of running [[Wiifuse|wiifuse]]
+
* An OS capable of running [[wiifuse]]
*the [[Wiifuse|wiifuse]] package (v0.2.0 or higher), the server described here is part of it
+
* [[wiifuse]] package (v0.2.0 or higher), the server described here is part of it
*a usbgecko adapter
+
* USBgecko adapter
*a brain and a good understanding of the wii internals
+
* Comprehension of the Wii internals
  
== build ==
+
== Build ==
'''hint''': a precompiled binary is included
+
A precompiled binary is included.
  
to compile the included code, you will need [http://www.devkitpro.org/ devkitPPC and libogc] r14 or higher
+
To compile the included code, you will need:
 +
* [[devkitPPC]] and [[libogc]]
 +
** r14 or higher
  
the server code resides in "./server", just run <code>make</code> there
+
The server code resides in "./server". Run <code>make</code> there.
  
== howto ==
+
== How-To ==
you will need an identity to authenticate against the wii's ES subsystem. an identity describes the access rights you have on the nand filesystem. it consists of 3 files:
+
You will need an identity to authenticate against the Wii's ES subsystem. An identity describes the access rights you have on the NAND filesystem. It consists of 3 files:
:*certificate chain
+
* [[certificate chain]]
:*tmd
+
* [[TMD]]
:*ticket
+
* [[Ticket]]
  
these 3 files are, for example, part of a wii image. you can use wiifuse and the included shell script to copy these from a data partition to the needed location:
+
These 3 files are, e.g. part of a Wii image. You can use wiifuse and the included shell script to copy these from a data partition to the needed location:
  
 
  ~/devel/wiifuse/ '''./wiifuse ~/zelda-tp.iso ~/fuse'''
 
  ~/devel/wiifuse/ '''./wiifuse ~/zelda-tp.iso ~/fuse'''
Line 40: Line 53:
 
  ~/devel/wiifuse/ '''fusermount -u ~/fuse'''
 
  ~/devel/wiifuse/ '''fusermount -u ~/fuse'''
  
to mount the nand filesystem with the zelda access rights on pc side:
+
To mount the NAND filesystem with the zelda access rights on PC side:
  
 
  ~/devel/wiifuse/ '''make -C server upload'''
 
  ~/devel/wiifuse/ '''make -C server upload'''
Line 110: Line 123:
 
*it depends on the identity which paths/files you can access and which not
 
*it depends on the identity which paths/files you can access and which not
  
== thanks ==
+
== Credits ==
*all the reversers out there. this tool just demonstrates a few new functions of libogc
+
* All the reversers out there. this tool just demonstrates a few new functions of [[libogc]]
*the usual suspects, without you this wouldn't be possible
+
* The usual suspects, without you this wouldn't be possible
  
 
== wiifuse+net ==
 
== wiifuse+net ==
* This modified version of wiifuse uses the network instead of usb gecko: http://emergent.unpy.net/01212803011
+
* This modified version of wiifuse uses the network instead of usb gecko: http://emergent.unpy.net/01212803011
  
[[Category:Tools]]
+
[[Category:Development]]

Latest revision as of 22:58, 2 February 2024

wiifuse_server
General
Author(s)dhewg, #wiidev efnet/blitzed
TypeDevelopment resource
Links
Download
Source Included

wiifuse_server is a Wii application that responds to wiifuse requests coming over a usbgecko adapter from a remote host. This allows you to mount the Wii internal NAND filesystem with full read/write access remotely on your computer.

WARNING: watch exactly what you are doing, you can BRICK your wii with this tool. use at your own risk.

Prerequisites

  • An OS capable of running wiifuse
  • wiifuse package (v0.2.0 or higher), the server described here is part of it
  • USBgecko adapter
  • Comprehension of the Wii internals

Build

A precompiled binary is included.

To compile the included code, you will need:

The server code resides in "./server". Run make there.

How-To

You will need an identity to authenticate against the Wii's ES subsystem. An identity describes the access rights you have on the NAND filesystem. It consists of 3 files:

These 3 files are, e.g. part of a Wii image. You can use wiifuse and the included shell script to copy these from a data partition to the needed location:

~/devel/wiifuse/ ./wiifuse ~/zelda-tp.iso ~/fuse
~/devel/wiifuse/ ./server/get_identity.sh ~/fuse/data zelda
found 'The_Legend_of_Zelda_Twilight_Princess' (00010000525a4450)
`/home/dhewg/fuse/data/.internals/certs' -> `/usr/local/etc/wiifuse/00010000525a4450.certs'
`/home/dhewg/fuse/data/.internals/tmd' -> `/usr/local/etc/wiifuse/00010000525a4450.tmd'
`/home/dhewg/fuse/data/.internals/ticket' -> `/usr/local/etc/wiifuse/00010000525a4450.tik'
create symbolic link `zelda.certs' to `00010000525a4450.certs'
create symbolic link `zelda.tmd' to `00010000525a4450.tmd'
create symbolic link `zelda.tik' to `00010000525a4450.tik'
done
~/devel/wiifuse/ fusermount -u ~/fuse

To mount the NAND filesystem with the zelda access rights on PC side:

~/devel/wiifuse/ make -C server upload
make: Entering directory `/home/dhewg/devel/wiifuse/server'
/usr/local/devkitpro/devkitPPC/bin/geckoupload wiifuse_server.dol
geckoupload v0.0.3
coded by dhewg, #wiidev efnet/blitzed

using /dev/ttyUSB0
sending upload request
awaiting upload ack
sending file size (0x00023cc0)
sending data...
done.
make: Leaving directory `/home/dhewg/devel/wiifuse/server'
~/devel/wiifuse/ ./wiifuse -i zelda /dev/ttyUSB0 ~/fuse
title's data path is "/title/00010000/525a4450/data"
~/devel/wiifuse/ cd ~/fuse/title/00010000/525a4450/data
~/fuse/title/00010000/525a4450/data/ ls -ln
total 90
-rw-r--r-- 0 4133 12337 29344 Jan  1  1970 banner.bin
-rw-r--r-- 0 4133 12337 46143 Jan  1  1970 loader.bin
-rw-r--r-- 0 4133 12337 16384 Jan  1  1970 zeldaTp.dat
~/fuse/title/00010000/525a4450/data/ umask
022
~/fuse/title/00010000/525a4450/data/ mkdir testdir
~/fuse/title/00010000/525a4450/data/ ls -ln
total 90
-rw-r--r-- 0 4133 12337 29344 Jan  1  1970 banner.bin
-rw-r--r-- 0 4133 12337 46143 Jan  1  1970 loader.bin
drwxr-xr-x 0 4133 12337     0 Jan  1  1970 testdir
-rw-r--r-- 0 4133 12337 16384 Jan  1  1970 zeldaTp.dat
~/fuse/title/00010000/525a4450/data/ cd testdir
~/fuse/title/00010000/525a4450/data/testdir/ umask 0
~/fuse/title/00010000/525a4450/data/testdir/ echo "could it be any more open?" > testfile
~/fuse/title/00010000/525a4450/data/testdir/ ls -ln
total 0
-rw-rw-rw- 0 4133 12337 27 Jan  1  1970 testfile
~/fuse/title/00010000/525a4450/data/testdir/ cat testfile
could it be any more open?
~/fuse/title/00010000/525a4450/data/testdir/ chmod go-rw testfile
~/fuse/title/00010000/525a4450/data/testdir/ ls -ln
total 0
-rw------- 0 4133 12337 27 Jan  1  1970 testfile
~/fuse/title/00010000/525a4450/data/testdir/ rm testfile
~/fuse/title/00010000/525a4450/data/testdir/ cd ..
~/fuse/title/00010000/525a4450/data/ rmdir testdir
~/fuse/title/00010000/525a4450/data/ ls -ln
total 90
-rw-r--r-- 0 4133 12337 29344 Jan  1  1970 banner.bin
-rw-r--r-- 0 4133 12337 46143 Jan  1  1970 loader.bin
-rw-r--r-- 0 4133 12337 16384 Jan  1  1970 zeldaTp.dat
~/fuse/title/00010000/525a4450/data/ cp loader.bin cptest
~/fuse/title/00010000/525a4450/data/ ls -ln
total 135
-rw-r--r-- 0 4133 12337 29344 Jan  1  1970 banner.bin
-rw-r--r-- 0 4133 12337 46143 Jan  1  1970 cptest
-rw-r--r-- 0 4133 12337 46143 Jan  1  1970 loader.bin
-rw-r--r-- 0 4133 12337 16384 Jan  1  1970 zeldaTp.dat
~/fuse/title/00010000/525a4450/data/ md5sum loader.bin cptest
e8bde0678cbe653a8a16152af8853be0  loader.bin
e8bde0678cbe653a8a16152af8853be0  cptest
~/fuse/title/00010000/525a4450/data/ rm cptest
~/fuse/title/00010000/525a4450/data/ cd
~/ fusermount -u fuse

notes

  • don't use this if you don't understand it to 100%
  • it depends on the identity which paths/files you can access and which not

Credits

  • All the reversers out there. this tool just demonstrates a few new functions of libogc
  • The usual suspects, without you this wouldn't be possible

wiifuse+net