Ya se pueden hacer ISOs de los discos de la Wii
Para comprender como esta conformado un Disco Optico de Gamecube o WII primero es necesario conocer como esta compuesto un DVD-ROM convencional.
La informacion completa se encuentra detalla en este documento: http://www.ecma-international.org/publications/standards/Ecma-267.htm
Paso a continuacion a describir -en forma breve- como esta compuesto un DVD-ROM (solo a nivel logico):
User Data Frame:
Consiste en 2048 bytes de informacion a los cuales el usuario puede acceder desde su unidad lectora.
Data Frame:
Consiste en 2064 bytes de informacion que contiene entre otros, un identificador, el “User Data Frame”, y informacion de deteccion de errores.
la estructura de un “Data Frame” es la siguiente:
4bytes 2bytes 6bytes 2048bytes 4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - -
| ID | IED | CPR_MAI | User Data Frame | EDC |
- - - - - - - - - - - - - - - - - - - - - - - - - -
ID: contiene el PSN (Physical Sector Number), ademas de informacion propia del sector, tal como el layer en que se encuentra, reflectividad, zona, etc.CPR_MAI: su uso lo define la aplicacion, por ej. son usados para guardar un “sector key” en videos con CSS, y usados para guardar un “scrambling key” en los “Security Sector” de los discos de XBOX y XBOX360.
User Data: es la informacion accesible por el usuario.
EDC (Error Detection Code): es el checksum de todos los datos anteriores, el polinomio usado para calcularlo es x^32 + x^31 + x^4 + 1.
Scrambled Frame:
El “Data Frame” es XOReado con un stream cipher producido por un LFSR (Linear Feedback Shift Register) de 15bits con taps en el bit 10 y 14.
Las seeds son sacadas de una tabla definida en el standard ECMA-267, el indice de la tabla es determinado por los 4 MSB del ultimo byte del campo ID del “Data Frame”.
El mismo stream cipher es usado por 16 “Data Frames” consecutivos.
ECC Block:
En este bloque se calcula el “Parity Outer” y el “Parity Inner” de los “Scrambled Frames” (PIPO), que son usados para la correccion de errores.
Recording Frame:
Aqui la informacion es agrupada (en grupos de 16 frames) y ademas esta intercalada, por estar la informacion intercalada el ODD esta obligado a leer en grupo de 16 frames.
Acerca de Discos Opticos Gamecube/WII:
Estos discos varian de un DVD-ROM convencional en la capa “Scrambling Frame”, aqui esta la diferencia entre un GOD/WOD y un DVD-ROM:
DVD-ROM:
4bytes 2bytes 6bytes 2048bytes 4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| ID | IED | CPR_MAI | User Data Frame | EDC |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
^ | 2048bytes cipher stream |
^ - - - - - - - - - - - - - -
scrambling
seed index
About Gamecube/WII Optical Disc:
4bytes 2bytes 2048bytes 6bytes 4bytes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| ID | IED | User Data Frame | unknown | EDC |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 2048bytes cipher stream |
- - - - - - - - - - - - - -
La forma de obtener las seeds usadas por los GOD/WOD no es del todo conocida, pero los primeros 16 frames de todos los GOD y WOD -que me ha tocado ver hasta hora- usan la seed 0101h, luego de eso la seed cambia para cada grupo de 16 frames y cicla como en un DVD-ROM comun.
Debido a que el sistema de como se obtienen las seeds es desconocido -por lo menos para mi-, la mejor manera que se me ocurrio para hacer el “unscrambling” fue haciendo fuerza bruta sobre las seeds, debido a que son solo 15bits (y generalmente 17 seeds distintas por GOD/WOD) este proceso tarda solamente unos 30 segundos, lo que es mas que aceptable.
La fuerza bruta realizada es muy sencilla, se inicializa el LFSR con un valor desde el 0 al 7FFFh, se obtiene el stream cipher, se XORea con la parte señalada en el diagrama anterior y se checkea el EDC, de ser el EDC el correcto significa que hemos dado con la seed para ese frame.
A continuacion dejo disponible para descarga el programa utilizado para hacer “unscrambling” a cualquier GOD/WOD. Para poder utilizarlo necesitas acceso a una imagen en formato bruto (con 2064 bytes por frame), ya sea sin haber pasado esta por ningun proceso de “unscrambling”, o tambien sirve si paso por el “unscrambling” de un DVD-ROM convencional.
su uso es muy sencillo: “unscrambler imagen_en_bruto imagen_iso”, por ej:
unscrambler.exe RZDE01.WOD “Twilight Princess.ISO”
GOD/WOD unscrambler 0.4 (xt5@ingenieria-inversa.cl)
This program is distributed under GPL license,
see the LICENSE file for more info.
caching seed 0100
caching seed 401c
caching seed 02c0
caching seed 6006
caching seed 03e0
caching seed 3012
caching seed 04f0
caching seed 182b
caching seed 0879
caching seed 0c51
caching seed 103e
caching seed 06a0
caching seed 201a
caching seed 0240
caching seed 4007
caching seed 0300
caching seed 0700
image successfully unscrambled.
time elapsed: 481.00 seconds.
doy las gracias a patx, tmbinc y loser.
Vía | Ingenieria inversa
0 Comments:
Publicar un comentario
<< Home