Line 1: |
Line 1: |
− | #REDIRECT [[Development Tools/Wiifuse server]] | + | {{wrongtitle|wiifuse_server}} |
| + | wiifuse_server - coded by dhewg, #wiidev efnet/blitzed |
| + | |
| + | == about == |
| + | 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.''' |
| + | |
| + | == requirements == |
| + | *an operating system capable of running [[Wiifuse|wiifuse]] |
| + | *the [[Wiifuse|wiifuse]] package (v0.2.0 or higher), the server described here is part of it |
| + | *a usbgecko adapter |
| + | *a brain and a good understanding of the wii internals |
| + | |
| + | == build == |
| + | '''hint''': a precompiled binary is included |
| + | |
| + | to compile the included code, you will need [http://www.devkitpro.org/ devkitPPC and libogc] r14 or higher |
| + | |
| + | the server code resides in "./server", just run <code>make</code> there |
| + | |
| + | == howto == |
| + | 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 |
| + | :*tmd |
| + | :*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: |
| + | |
| + | ~/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 |
| + | |
| + | == thanks == |
| + | *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 == |
| + | * This modified version of wiifuse uses the network instead of usb gecko: http://emergent.unpy.net/01212803011 |
| + | |
| + | [[Category:Tools]] |