El sistema de protección de la PSX

En contra de lo que mucha gente piensa, el sistema de protección contra copia que utiliza la PlayStation no es algo nuevo ni Sony lo creó específicamente para su consola. Para entender cómo funciona éste sistema y cómo evitarlo mediante la instalación del MODCHIP vamos a ver de manera resumida cómo escribe la información una grabadora 'doméstica' de CDs.

Los CDs vírgenes (o CD-Rs) que utilizamos para grabar son muy parecidos a los CDs de música que podemos comprar en cualquier sitio. Al igual que los CDs tienen un sustrato de policarbonato, una capa de reflexión y una capa de protección. Sin embargo, en los CD-Rs entre el sustrato y la capa de reflexión está la capa de grabación formada por un tinte orgánico. También se diferencian de los CDs normales en que en el proceso de fabricación les ponen una especie de carril en espiral para guíar al laser a lo largo de la pista de grabación (de esta forma se simplifica en gran medida el diseño del hardware de grabación y se asegura la compatibilidad entre distintas marcas).

En los Cds 'dorados' y 'verdes', la capa de reflexión está fabricada con oro "de verdad" de 24K (si algún "aguililla" está pensando en reciclar y rascar los CDs usados que tenga paciencia, porque la anchura de la capa está entre 50 y 100 nm ;O). Aprovecho también la ocasión para advertir a los que escriben el nombre del juego en el CD como si les fuera la vida en ello que la zona de grabación está más cerca de la parte superior del CD que de la inferior (especialmente en CDs de dudosa procedencia y/o calidad) por lo que nos puede pasar que después de escribir el nombre en la 'copia de seguridad' deje de funcionar para siempre...

El laser de la grabadora genera una serie de 'hoyos' en el tinte orgánico llamados pits (que traducido significa hoyo ;O). Los espacios entre pits se llaman lands (tierras, campos, bordes) y el conjunto de pits y lands codifican la información y permiten que luego -aunque parezca increible- se pueda recuperar con un lector de CD-ROM. Cuando se está escribiendo la información en el CD -y al final de cada sector- se graba el ECC (Código de Corrección de Errores, Error Correction Code) y el EDC (Código de Detección de Errores, Error Detection Code). Para el ECC se guardan datos redundantes en el disco y esta información 'duplicada' se utiliza para luego detectar y corregir errores que pudieran aparecer durante la lectura. Por otro lado, el EDC escribe 32 bits al final de cada sector que le permiten detectar errores en los datos.

En el último párrafo que hemos leído está el secreto del sistema anti-copia de la PSX. Los códigos ECC y EDC de ciertos sectores del CD están modificados 'a mano' y de esta forma se puede detectar cuándo una copia es legal y cuándo es ilegal. Si observamos la estructura de un CD de PSX (lo cual no es facil para un usuario normal) podemos ver las dos primeras pistas, que ocupan los primeros 16 sectores del disco (del 000000 al 000015). Estos sectores contienen ceros en la información correspondiente al EDC y el ECC. Las grabadoras 'domesticas' leen esta información errónea y como son muy 'listas' (todas llevan incorporadas algoritmos de corrección de errores en el firmware) escriben en la 'copia de seguridad' el ECC y EDC correctos (o sea, calculados para los datos que han leido). Cuando arrancamos nuestra PlayStation lo primero que comprueba es si los sectores indicados contienen ceros, y si no es así da por supuesto que el CD es de música y nos muestra el menu de audio o nos dice que el CD no es válido.

Y ahora vamos a explicar un poco más a fondo la estructura del CD de PSX que acabamos de ver: los dieciseis primeros sectores del disco los acabamos de explicar un poco más arriba. A continuación tenemos la pista de datos que es en donde realmente se almacena el programa. La pista está codificada en formato CDROM-XA utilizando sectores de tipos 1 y 2 y el sistema de archivos es ISO9660.

Cuando cualquier pista de datos este seguida por una pista de audio, tiene que haber una separación, a continuación de la de datos de al menos 150 sectores (2 segundos aprox.). Aplicado al disco de PSX tenemos que siempre van 150 sectores llenos de ceros (0s) detrás de la pista del juego. El propósito de esta separación 'fisica' es el de tener un buffer para 'ayudar' a los lectores de CD que no siempre son capaces de pasar directamente de datos a audio o viceversa sin una separación mínima.

Además, cuando una pista de audio sigue a una de datos tiene que empezar con otra separación de al menos 150 sectores que sirve para lo mismo que el postgap: separar pistas de datos y audio. En la PlayStation, los pregaps que normalmente encontramos son de 150 sectores (2 segundos) o 300 sectores (4 segundos). Cuando los pregaps separan dos pistas de audio pueden ser de 0 o 150 sectores según el disco.

Por último, el leadout se escribe directamente por la grabadora (excepto en algunos modelos) y su contenido no es modificable por el usuario. Tampoco es posible leer el leadout de un CD desde un lector 'doméstico' de CD-ROMs.


EL BLOQUEO REGIONAL

Además de la protección contra copias ilegales, la consola utiliza un sistema de 'bloqueo regional'. Esto se hace porque Sony tiene acuerdos distintos en los mercados Asiáticos, Americano y Europeo y entonces tienen que proteger los juegos para que no se puedan utilizar más que en el área geográfica para el que fueron 'empaquetados'. Pero ¿cómo se puede conseguir que un juego preparado para el mercado japonés únicamente se ejecute en una consola japonesa?. Los primeros cinco sectores (000000-000004) contienen la información del área para el que se edita un determinado juego. Básicamente identifican el CD como Japonés, Americano o Europeo. Si la información que envía el CD no cuadra con la que tiene almacenada la consola nos vuelve a avisar que el CD introducido no es válido.

Bien, pues ahora que sabemos -muy por encima- cómo se implementa el bloqueo, ¿hay alguna forma de saltárselo y hacer creer a la consola que el juego pertenece a nuestro área geográfica?. Tenemos dos maneras de hacerlo: la primera es guardar en nuestro disco duro una imagen de los cinco primeros sectores (con el CDRWin, por ejemplo) de cualquier juego original que tengamos... si es que tenemos alguno ;O)

A partir de ese momento, cuando queramos hacer a algún amigo 'copias de seguridad' de un juego de fuera lo único que tenemos que hacer es generar una imagen del mismo sin incluir esos cuatro sectores iniciales. Luego juntamos ambas imágenes y 'freimos' el CD como cualquier otro. Este sistema lo he probado con varios juegos y funciona muy bien, aunque evidentemente es bastante más lento y engorroso que una copia 'al vuelo'.

El otro sistema -bastante más cómodo- es el llamado MODCHIP: algo que casi todo el mundo que tiene una PlayStation posee o al menos ha oido hablar de ello, pero que no todos saben qué es y sobre todo cómo funciona. A lo largo de estas páginas vamos a aprender todo lo posible sobre el chip en cuestión: qué es, para qué sirve, cómo se monta en la consola, cómo funciona, información técnica, etc.


EL MODCHIP

El MODCHIP o CHIP-PIC o PIC (y que nosotros denominaremos chip a secas), es un microcontrolador programable fabricado por la empresa MicroChip Technology Inc. que cuando se conecta a la PlayStation permite cargar juegos de cualquier región geográfica. Por desgracia (sobre todo para los desarrollladores de juegos) este microcontrolador tiene un 'efecto secundario' que consiste en permitir la ejecución de juegos ilegales (no originales).

El microcontrolador original fue desarrollado en Hong Kong en 1996 y su precio entonces estaba entre las 6.000 y 12.000 ptas. por unidad. A finales del año 1996 un noruego consiguió dar con la estructura del chip mediante un proceso de ingeniería inversa (conseguir el origen a partir del producto final). A partir de ese momento y como consecuencia de la fabricación fuera de Hong Kong de chips similares al original el precio disminuyó hasta las 3.700 ptas. por unidad. La verdadera caida de precios ocurrió cuando a principios del año 1997 Scott Rider (a quien se denomina formalmente 'Old Crow') consiguió un chip original, realizó el proceso de ingeniería inversa y puso gratis el código en una página de Internet. En cuestion de semanas el precio de los chips bajó a 1.500 ptas. y a finales del año 1997 MicroChip Technology Inc. puso a disposición de los programadores su microcontrolador PIC12C508 a menos de 800 ptas. la unidad.

Asi pues ¿cúantos tipos de MOD-CHIP existen?. Realmente podemos hacer que cualquier microcontrolador actúe de MOD-CHIP siempre que se programe convenientemente, pero los que podemos ver instalados en PSX son el PIC16C54 (una OTP EPROM de 8-bits), la serie Z8 de Zilog y el PIC16C84 (que se utiliza también mucho para los decodificadores piratas de satélite y C+). Desde principios del año 1998 lo más normal es encontrar el PIC12C508 de Microchips o el PIC12C509, similar al anterior pero con el doble de memoria.

Por otro lado, si alguien se ha puesto a buscar en Internet entre los distintos proveedores de chips se habrá dado cuenta que cada uno lo ofrece, aún siendo el mismo modelo, con un número distinto de cables. En realidad, el número de cables depende del programa que se haya grabado en el microcontrolador, por lo que tener menos cables no significa que sea mejor o peor (lo que si es cierto es que por regla general las posiblidades de abrasar la PSX son directamente proporcionales al número de soldaduras que tengamos que realizar ;O).

Yo conozco chips que funcionan con 4, 5, 6 y 10 cables. Los primeros chips (PIC1654s) tenían 10 cables y era un verdadero infierno cablear la consola. Hay gente que dice que cuatro de los cables eran para 'fardar' pero si se ve el código fuente de los programas que se cargaban en el microcontrolador aparentemente los utilizaban para controlar el tiempo de arranque. Las conexiones son: Tierra, Voltaje, Reloj, Reset, Bloqueo, Datos y 4 entradas para control de arranque. Los chips de 6 cables son PIC16C54 o PIC16C84. En este modelo en vez de controlar el momento de arranque mediante sincronización con la consola empiezan a enviar los datos tras esperar un tiempo fijo que está programado. Las conexiones son: Tierra, Voltaje, Reloj, Reset, Bloqueo y Datos. Respecto a los chips con 5 cables tenemos los Z8 de Zilog y el PIC12C508 y PIC12C509 y eliminan la entrada de Reset. Por último tenemos los chips de 4 cables que son los que más se utilizan en la actualidad. Aprovechan el reloj interno del microcontrolador para eliminar el cable de sincronización con la consola y sus conexiones son: Tierra, Voltaje, Bloqueo y Datos.

Ahora que ya conocemos todos los tipos de MODCHIP que existen (excepto los últimos que han aparecido en el mercado: MOD-CHIP STEALTH, chip MULTI-MOD y MOD-CHIP anti-piratas) vamos a ver de manera más 'práctica' el método con el que los chips engañan a la PSX. Para ello utilizaremos un chip típico de 4 cables. Las conexiones de corriente (Vdd) y tierra (Vss) realizan una función obvia, por lo que trataré de explicar lo que hacen las conexiones 5 (bloqueo) y 6 (envío de datos)

Cuando la PlayStation arranca lo primero que hace es leer los primeros sectores del disco. Los datos de bloqueo regional no son más que 4 bytes que dependen del área de la que venga el disco. Básicamente, estos datos son una representación hexadecimal de SCEE (para Europa), SCEA (para América) y SCEI (para Asia). Como ya hemos comentado anteriormente, si los datos que le llegan no cuadran con los que tiene la consola, aparece un mensaje en la pantalla y se para el motor del lector.

El chip, tras esperar un tiempo prudencial envía al canal de datos las tres cadenas de área, una detrás de la otra y repitiendo indefinidamente la secuencia. Durante el arranque, la PSX mira una de las tres cadenas que le llegan, la compara con la identificación que tiene en la ROM y si coinciden asume que el disco es originario de su área y lee la pista de datos. Toda la operación se realiza a través de la conexión 6 del chip.

El problema viene cuando se utiliza un juego original, en el que la protección ya viene en el disco. Esta información se tiene que bloquear en el momento del arranque para reemplazarla por la que genera el chip, ya que de lo contrario se mezclan los datos (basura) y la PSX se mosquea y no arranca. Este proceso no es necesario en las 'copias de seguridad' porque no hay datos de protección y por lo tanto no hay nada que bloquear. El proceso se realiza a través de la conexión 5 que envía a tierra los datos de arranque de los discos originales mientras el chip se encarga de enviar su rollo.

A continuación vamos pasar todo lo explicado a un ejemplo. Imaginemos que tenemos una consola comprada en USA y queremos jugar al Fifa '99 en versión PAL. Como tenemos el MODCHIP instalado, vamos a seguir los datos que se envían a la consola a través de la conexión 5 cuando el chip se activa. El ejemplo es bastante técnico y se necesitan conocimientos muy básicos de notación hexadecimal y binaria para seguirlo correctamente, pero con saber un poquito se puede entender con facilidad.

La información que genera el chip de forma cíclica es la siguiente (sólo los datos en hexadecimal):

LINEA 1: DB 09h A9h 3Dh 2Bh A5h F4h - Playstation Asiática (NTSC)

LINEA 2: DB 09h A9h 3Dh 2Bh A5h 74h - Playstation Europea/Australiana (PAL)

LINEA 3: DB 09h A9h 3Dh 2Bh A5h B4h - Playstation Americana (NTSC)

Ahora, para arrancar con un CD Europeo los datos que se necesitan son:

0x9 0xA9 0x3D 0x2B 0xA5 0x74

Lo pasamos a binario:

1001 10101001 00111101 00101011 10100101 01110100

Lo expandimos a grupos de bits y utilizamos el primer bit (alto) como bit de inicio y dos últimos bits (bajos) como bits de parada:

1 00110101 00 1 00111101 00 1 01011101 00 1 01011101 00

Eliminamos los bits de inicio y parada:

00110101 00111101 01011101 01011101

Invertimos cada uno de los grupos que han quedado formados:

10101100 10111100 10111010 10111010

Calculamos el complemento a uno:

01010011 01000011 01000101 01000101

Y volvemos a pasar a hexadecimal:

0x53 0x43 0x45 0x45

Si ahora lo pasamos a ASCII tenemos:

S C E E, o lo que es lo mismo "Sony Computer Entertainment Europe"

E igual con el resto de líneas:

09h A9h 3Dh 2Bh A5h B4h se convierte en S C E A que es 'Sony Computer Entertainment America' y,09h A9h 3Dh 2Bh A5h F4h se convierte en S C E I que es 'Sony Computer Entertainment Inc.'

No es tan dificil, ¿verdad? ;O) Pues para engañar a la consola con el ECC y EDC se utiliza un método bastante similar basado en el bloqueo/envío de datos.


______________________________________________
La información de este artículo ha sido elaborada principalmente por ToXiC.
0 respuestas