Teoria; eCOS como S.O base en Ps3

16, 7, 8, 9, 10, 11
otia xD bueno no eran para mi eran para LuzbelFullHD
devnul escribió:Pues no... no hace eso. Lo que hace es lo siguiente:

Power-On Reset Sequence

2.1.1 POR Sequence Summary [...]

LuzbelFullHD --> Ahi esta :) (hay icono d aplausos?) :P


Pero ahí se describe una secuencia de arranque más o menos estándar: inicializar dispositivos, copiarse de la ROM a la RAM , etc.

En ningún momento habla de que el contenido de la ROM está encriptado con una hardware key ni nada similar.

Podemos aplicar esa misma descripción al arranque de un sistema clásico con hypervisor , que puede ser comprometido.
Buenas devnull

Quisiera comentarte lo de tu trono por dos bits


Because the HID1 SPR defaults to all zeros during POR, the PPE takes a system reset interrupt
and starts thread 0 from the address specified in the PPE SReset Vector field of the configuration
ring. As a result of the system reset interrupt, the hypervisor and 64-bit-mode bits, MSR[HV] and
MSR[SF], are both set to ‘1’, so that the PPE comes up in hypervisor mode.

Que yo sepa, existen dos vias de inicializacion para la secuencia de arranque.

Para poder cojer el camino cero, tendriamos que poder escribir en x'000' y eso lo tenemos bastante dificl, creo. aun que si pudieramos cambiar el 1 que simpre coje en nuestras consolas, por ese 0, hoy mismo se acabaria ps3 como consola y enpezaria como supercomputador en muchas empresas.

Imagen





He leido un poco mas abajo de pdf, la inicializacion de los buses de transporte de datos y sus controladoras para la ram de la consola.

2.2.2 Initialization of MIC, R I/O Cells, and R DRAM



He podido apreciar en el pdf, que la cpu central y los spu, comparte memoria cache para la carga del Rambus en sus dos canales, y tambien lo puede hacer con hypervision y un SO a la vez, virtualizandolos paralelamente pero trabajando en en mismo bloque LS, esto me ha parecido curioso, ya que esta en el procedimioento de arranque, justo despues de que nuestra negrita coja el camino 1 .


Tambien me ha creado cierta espectacion el punto 3 del pdf

3. Serial Peripheral Interface
The external configuration bus for the Cell Broadband Engine (CBE) processor is based on the
serial peripheral interface (SPI) specification. The SPI interface is a serial bus that has a mastersubordinate
relationship. The CBE processor is primarily targeted to participate on the SPI interface
as a subordinate device. The external system controller accessing the SPI interface acts as
the SPI master.

y tambien que CBS tiene un jtag, si jtag para entrar en modo debug

IEEE 1149 test access port ( lo tendra insolado en la placa? )

Si se pudiera entrar por el test access port, y tocar algo del MIC, como por ejemplo, alterar un threat de los que comparte el PPU y los SPU, se podria hacer algo, no?

Bueno, gracias por el pdf, me lo estoy leyendo y no difiere mucho de cuando estudie todos estos tema, por suerte para mi.

Hay cosas que no me quedan claras, pero estoy tirando de manuales de antaño.

Por favor devnul, tendrias el datasheet de la programacion en asm para la secuencia de inicio del ppu del bcs?

Un saludo

PD; utilza un pastebin para meter 3 paginaas seguidas de un pdf :D
Joder, un J-TAG en PS3? no puede ser cierto xDDDD.

Muy interesante todo :)

Salu2
Acabo de llamar a un amigo que tiene un osciloscopi/regenerador de señal digital, cual me dejo en su dia para poder meterle mano al motorola dvi 3xxx

Este aparatito puede ayudar a encontrar dicho puerto de datos.

Un saludo

PD: no se ssi el llamado chip infectus utiliza dicho puerto + puntos de datos de la nand flash o utiliza la nandflash a palo seco, ya que para leer una flash necesitas poner el procesador que la ontrola en modo debug.
/*********************************************************************
© Copyright International Business Machines Corporation, Sony Computer Entertainment
Incorporated, Toshiba Corporation 2005
All Rights Reserved
FILENAME : spi_lib.h
DESCRIPTION : Support library for SPI/MMIO register accesses
*********************************************************************/
#ifndef _SPI_LIB_H
#define _SPI_LIB_H
#include "types.h"
typedef unsigned int uint32;
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned short uint16;
typedef unsigned char uint8;
typedef int int32;
typedef short int16;
#define uint64 struct UINT64
/***************************************************/
/* SPI Commands and Addresses */
/* Ref: Pervasive-functional, ver 0.91, Table 5-13 */
/* - extended to add XDR clock generator and VRM */
/***************************************************/
#define CHIP_ID0 0x00
#define CHIP_ID1 0x04
#define CHIP_ID2 0x08
#define CHIP_ID3 0x0C
#define CHIP_BE 0x10
#define CHIP_BE0 CHIP_BE | CHIP_ID0
#define CHIP_BE1 CHIP_BE | CHIP_ID1
#define SPI_READ 0x00
#define SPI_WRITE 0x01
#define BE_PERVASIVE 0x0000
#define BE_MIC 0xA000
#define BEI_BIC0_NCLK 0xD000
#define BEI_BIC1_NCLK 0xD400
#define BEI_EIB 0xD800
#define BEI_IOC 0xDC00
#define BEI_BIC0 0xE000
#define BEI_BIC1 0xF000
/**************************************************/
/* CBE Pervasive Registers */
/* */
/**************************************************/
#define BE_ICB_POLL 0x0002
#define BE_RD_ICB_DATA 0x0010
/********************/
/* CBE bus interface controller (BIC) Registers */
/********************/
#define BED_RRAC_REGCTL 0x620
#define BED_RRAC_REGRDDAT 0x628
#define BIC_IF0INIT 0xe200
#define BIC_IF1INIT 0xe300
/************************/
/* FlexIO Bus Registers */
/************************/
#define BED_Lnk0_TransBytTrngCntl 0xf600
#define BED_Lnk1_TransBytTrngCntl 0xf608
#define BED_RecBytTrngCntl_Lnk0 0xf610
#define BED_RecBytTrngCntl_Lnk0 0xf618
/**********************************/
/* Rambus FlexIO (RRAC) Registers */
/**********************************/
#define RR_BLK0 0x000
#define RR_BLK1 0x100
#define RR_BLK2 0x200
#define RR_BLK3 0x300
#define RR_BLK4 0x400
#define RR_BLK5 0x500
#define RR_BLK6 0x600
#define RR_BLK7 0x700
#define RR_BLK8 0x800
#define RR_BLK9 0x900
#define RR_BLK10 0xA00
#define RR_BLK11 0xB00
#define RR_BLK12 0xC00
#define RR_BLK13 0xD00
#define RR_ALL_RX 0xE00
#define RR_ALL_TX 0xF00
#define RR_TX0 0x000
#define RR_TX1 0x100
#define RR_TX2 0x200
#define RR_TX3 0x300
#define RR_BX0 0x700
#define RR_BX1 0x800
#define RR_RX0 0x900
#define RR_RX1 0xA00
#define RR_RX2 0xB00
#define RR_RX3 0xC00
#define RR_PIN0 0x00
#define RR_PIN1 0x10
#define RR_PIN2 0x20
#define RR_PIN3 0x30
#define RR_PIN4 0x40
#define RR_PIN5 0x50
#define RR_PIN6 0x60
#define RR_PIN7 0x70
#define RR_GLOBAL 0x80
#define RR_PIN_ALL 0xE0
#define RR_G2_0_3 0x90
#define RR_G2_4_7 0xA0
#define RR_G2_0_7 0xB0
#define RR_RSRV 0xF0
/* Transmit (TX) */
#define TX_PRBS_CTL 0x0
#define TX_CAL_CONFIG 0x1
#define TX_EQ1 0x2
#define TX_EQ2 0x3
#define TX_EQ3 0x4
/* TX GLOBAL */
#define TX_PLL_CONFIGA 0x80
#define TX_PLL_CONFIGB 0x81
#define TX_PLL_STATUS 0x82
#define TX_ODT_MAN 0x83
#define TX_ODT_STATUS 0x84
#define TX_CONFIG 0x85
#define TX_FLNGTH 0x86
#define TX_BCTL 0x87
#define TXCLK_EQ1 0x88
#define TXCLK_EQ2 0x89
#define TXCLK_EQ3 0x8A
#define TX_CTL 0x8C
/* Receive (RX) */
#define RX_PHASE_ADJ 0x0
#define RX_TCTL 0x1
#define RX_PHASE 0x2
#define RX_ALIGN 0x3
/* RX GLOBAL */
#define RX_PLL_CONFIGA 0x80
#define RX_PLL_CONFIGB 0x81
#define RX_PLL_STATUS 0x82
#define RX_ODT_MAN 0x83
#define RX_ODT_STATUS 0x84
#define RX_CONFIG 0x85
#define RX_BCTL 0x86
#define RX_ZPD_CONFIG 0x87
#define RX_CTL 0x8C
#define RX_STATUS 0x8E
/* RX GLOBAL (G2) */
#define RX_TCAL_RANGE 0x0
#define RX_TCAL_CONTROL 0x1
#define RX_TCAL_STATUS 0x2
#define RX_TCAL_PF 0x3
#define RX_OS_COUNT 0x4
#define RX_FLNGTH 0x6
/* BX */
#define RRAC_ID 0x0
#define BX_MAN 0x1
#define BX_STATE 0x2
#define BX_CONFIG 0x5
#define BX_CTL 0xC
#define BX_STATUS 0xE
/* DEBUG */
#define TX_DBG_00 0xF0
#define TX_DBG_01 0xF1
#define TX_DBG_02 0xF2
#define TX_DBG_03 0xF3
#define RX_DBG_00 0xF0
#define RX_DBG_01 0xF1
#define RX_DBG_02 0xF2
#define RX_DBG_03 0xF3
#define RX_DBG_09 0xF4
int delay_us(int n);
int delay_ms(int n);
int spi_write64(uint8 cmd, uint16 address, uint32 data_hi, uint32 data_lo );
uint8 spi_read8(uint8 cmd, uint16 address);
uint16 spi_read16(uint8 cmd, uint16 address);
uint32 spi_read32(uint8 cmd, uint16 address);
uint64 spi_read64(uint8 cmd, uint16 address);
int spi_poll8(uint8 cmd, uint16 address, uint8 mask, uint8 test);
int spi_poll16(uint8 cmd, uint16 address, uint16 mask, uint16 test);
int spi_poll64(uint8 cmd, uint16 address, uint32 mask_hi, uint32 mask_lo, uint32
test_hi, uint32 test_lo);
int spi_write_rrac(uint8 cmd, uint16 address, uint16 data );
uint16 spi_read_rrac(uint8 cmd, uint16 address);
int spi_poll_rrac(uint8 cmd, uint16 address, uint16 mask, uint16 test);
#endif /* _SPI_LIB_H */

/*********************************************************************
© Copyright International Business Machines Corporation, Sony Computer Entertainment
Incorporated, Toshiba Corporation 2005
All Rights Reserved
FILENAME : be2be.c
DESCRIPTION : Bit Calibration for CBE processor<-->CBE processor interface
**************************************************************************/
#include "spi_lib.h"
int IOIF0_bit_training(void)
{
int rc;
int chip_bex, be_chip;
for (be_chip = 0; be_chip < 2; be_chip++) {

chip_bex = (CHIP_BE | (be_chip << 2)) << 16;
/* Set VDD core = 1.15V (CBE Only) */
spi_write_rrac( chip_bex, RR_ALL_TX | RR_RSRV | TX_DBG_01, 0x001e);
spi_write_rrac( chip_bex, RR_ALL_RX | RR_RSRV | RX_DBG_01, 0x001e);
/* Pseudorandom binary sequence (PRBS) seed value for each pin 0 on TX 0-3
channel in CBE */
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN0 | TX_PRBS_CTL, 0xaaa0);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN1 | TX_PRBS_CTL, 0x1110);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN2 | TX_PRBS_CTL, 0x2220);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN3 | TX_PRBS_CTL, 0x3330);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN4 | TX_PRBS_CTL, 0x4440);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN5 | TX_PRBS_CTL, 0x5550);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN6 | TX_PRBS_CTL, 0x6660);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN7 | TX_PRBS_CTL, 0x7770);
/* TX Equalization Adjustment 1, 2 and 3 */
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN_ALL | TX_EQ1, 0x7f87);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN_ALL | TX_EQ2, 0x3ae3);
spi_write_rrac(chip_bex, RR_ALL_TX | RR_PIN_ALL | TX_EQ3, 0x01fe);
/* Bits (1:0) = 00 = 2:1 Serialization */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_TX | TX_CONFIG, 0x0000);
/* Frame Pattern Length */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_TX | TX_FLNGTH, 0x0040);
/* TX Bias Control (15:8) TX PreDriver Bias, (7:0) TX Driver Bias Control */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_TX | TX_BCTL, 0x0808);
/* TX Clk Equalization Adjustment 1 */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_TX | TXCLK_EQ1, 0x001C);
/* TX Ctl Reg - Driver enable, ODT Enable, Pattern transmit,
Input - Output (IO) On */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX0 | TX_CTL, 0x0039);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX1 | TX_CTL, 0x0039);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX2 | TX_CTL, 0x0039);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX3 | TX_CTL, 0x0039);
/* TX Pll Configuration A at default */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_TX | TX_PLL_CONFIGA, 0x0000);
/* TX Pll Configuration B at default 0x0000 is full rate mode */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_TX | TX_PLL_CONFIGB, 0x0040);
/* RX Pll Configuration B at default 0x0040 is for Full Rate Mode */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_RX | RX_PLL_CONFIGB, 0x0000);
/* RX Configuration at default - 2:1 Serialization Mode */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_RX | RX_CONFIG, 0x0000);
/* RX Receiver Gain Control */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_ALL_RX | RX_BCTL, 0x00B4);
/* RX Ctl Reg - ODT enable, wait after phase cal, IO on */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX0 | RX_CTL, 0x0029);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX1 | RX_CTL, 0x0029);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX2 | RX_CTL, 0x0029);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX3 | RX_CTL, 0x0029);
/* RX Tcal Ctl - Single Step Enable, Single Step, byte count enable, 7 bit PRBS
select, Level calibration enabled, parallel calibration enabled, phase
calibration enabled, all RX channels enabled */
spi_write_rrac(chip_bex, RR_ALL_RX | RR_G2_0_7 | RX_TCAL_CONTROL, 0x00FE);
/* 128 parallel calibration compares, pass/fail of 40% UI */
spi_write_rrac(chip_bex, RR_ALL_RX | RR_G2_0_7 | RX_TCAL_PF, 0x8033);
/* 256 samples at each phase offset */
spi_write_rrac(chip_bex, RR_ALL_RX | RR_G2_0_7 | RX_OS_COUNT, 0x0100);
/* Frame Pattern Length */
spi_write_rrac(chip_bex, RR_ALL_RX | RR_G2_0_7 | RX_FLNGTH, 0x0040);
}
for (be_chip = 0; be_chip < 2; be_chip++) {
chip_bex = (CHIP_BE | (be_chip << 2)) << 16;
/* ODT and Current Calibration */
spi_write_rrac(chip_bex, RR_BX0 | BX_CTL, 0x0005);
spi_write_rrac(chip_bex, RR_BX1 | BX_CTL, 0x0005);
/* Check for BX Block Ready */
spi_poll_rrac(chip_bex, RR_BX0 | BX_STATUS, 0x0800, 0x0800);
spi_poll_rrac(chip_bex, RR_BX1 | BX_STATUS, 0x0800, 0x0800);
/* Deassert reset and BX current and ODT enable */
spi_write_rrac(chip_bex, RR_BX0 | BX_CTL, 0x0003);
spi_write_rrac(chip_bex, RR_BX1 | BX_CTL, 0x0003);
/* Check RX calibration for complete and pass */
spi_poll_rrac(chip_bex, RR_BX0 | BX_STATUS, 0x0003, 0x0003);
spi_poll_rrac(chip_bex, RR_BX1 | BX_STATUS, 0x0003, 0x0003);
/* Driver enable */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX0 | TX_CTL, 0x003b);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX1 | TX_CTL, 0x003b);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX2 | TX_CTL, 0x003b);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX3 | TX_CTL, 0x003b);
/* Check for PLL Lock */
spi_poll_rrac(chip_bex, RR_GLOBAL | RR_TX0 | TX_PLL_STATUS, 0x0001, 0x0001);
spi_poll_rrac(chip_bex, RR_GLOBAL | RR_TX1 | TX_PLL_STATUS, 0x0001, 0x0001);
spi_poll_rrac(chip_bex, RR_GLOBAL | RR_TX2 | TX_PLL_STATUS, 0x0001, 0x0001);
spi_poll_rrac(chip_bex, RR_GLOBAL | RR_TX3 | TX_PLL_STATUS, 0x0001, 0x0001);
/* Receiver enable */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX0 | RX_CTL, 0x002b);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX1 | RX_CTL, 0x002b);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX2 | RX_CTL, 0x002b);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX3 | RX_CTL, 0x002b);
/* Check for PLL Lock */
spi_poll_rrac(chip_bex, RR_GLOBAL | RR_RX0 | RX_PLL_STATUS, 0x0001, 0x0001);
spi_poll_rrac(chip_bex, RR_GLOBAL | RR_RX1 | RX_PLL_STATUS, 0x0001, 0x0001);
spi_poll_rrac(chip_bex, RR_GLOBAL | RR_RX2 | RX_PLL_STATUS, 0x0001, 0x0001);
spi_poll_rrac(chip_bex, RR_GLOBAL | RR_RX3 | RX_PLL_STATUS, 0x0001, 0x0001);
}
for (be_chip = 0; be_chip < 2; be_chip++) {
chip_bex = (CHIP_BE | (be_chip << 2)) << 16;
/* TX Digital Reset */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX0 | TX_CONFIG, 0x0020);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX0 | TX_CONFIG, 0x0000);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX1 | TX_CONFIG, 0x0020);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX1 | TX_CONFIG, 0x0000);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX2 | TX_CONFIG, 0x0020);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX2 | TX_CONFIG, 0x0000);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX3 | TX_CONFIG, 0x0020);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_TX3 | TX_CONFIG, 0x0000);
/* RX Digital Reset */
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX0 | RX_CONFIG, 0x0020);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX0 | RX_CONFIG, 0x0000);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX1 | RX_CONFIG, 0x0020);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX1 | RX_CONFIG, 0x0000);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX2 | RX_CONFIG, 0x0020);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX2 | RX_CONFIG, 0x0000);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX3 | RX_CONFIG, 0x0020);
spi_write_rrac(chip_bex, RR_GLOBAL | RR_RX3 | RX_CONFIG, 0x0000);
}
/* RX Ctl Reg – ODT enable, wait after phase cal, RX Block Enable, IO on */
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_RX0 | RX_CTL, 0x002f);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_RX1 | RX_CTL, 0x002f);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_RX2 | RX_CTL, 0x002f);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_RX3 | RX_CTL, 0x002f);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_RX0 | RX_CTL, 0x002f);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_ RX1 | RX_CTL, 0x002f);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_ RX2 | RX_CTL, 0x002f);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_ RX3 | RX_CTL, 0x002f);
/* Check for phase calibration completion. Phase calibration passed. */
spi_poll_rrac(CHIP_BE0, RR_GLOBAL | RR_RX0 | RX_STATUS, 0x0003, 0x0003);
spi_poll_rrac(CHIP_BE0, RR_GLOBAL | RR_RX1 | RX_STATUS, 0x0003, 0x0003);
spi_poll_rrac(CHIP_BE0, RR_GLOBAL | RR_RX2 | RX_STATUS, 0x0003, 0x0003);
spi_poll_rrac(CHIP_BE0, RR_GLOBAL | RR_RX3 | RX_STATUS, 0x0003, 0x0003);
spi_poll_rrac(CHIP_BE1, RR_GLOBAL | RR_RX0 | RX_STATUS, 0x0003, 0x0003);
spi_poll_rrac(CHIP_BE1, RR_GLOBAL | RR_RX1 | RX_STATUS, 0x0003, 0x0003);
spi_poll_rrac(CHIP_BE1, RR_GLOBAL | RR_RX2 | RX_STATUS, 0x0003, 0x0003);
spi_poll_rrac(CHIP_BE1, RR_GLOBAL | RR_RX3 | RX_STATUS, 0x0003, 0x0003);
for (be_chip = 0; be_chip < 2; be_chip++) {
chip_bex = (CHIP_BE | (be_chip << 2)) << 16;
/* Manual Skip Select On */
spi_write_rrac(chip_bex, RR_RX0 | RR_PIN_ALL | RX_TCTL, 0x0002);
/* Manual Skip Select Off */
spi_write_rrac(chip_bex, RR_RX0 | RR_PIN_ALL | RX_TCTL, 0x0000);
/* Manual Skip Select On */
spi_write_rrac(chip_bex, RR_RX1 | RR_PIN_ALL | RX_TCTL, 0x0002);
/* Manual Skip Select Off */
spi_write_rrac(chip_bex, RR_RX1 | RR_PIN_ALL | RX_TCTL, 0x0000);
/* Manual Skip Select On */
spi_write_rrac(chip_bex, RR_RX2 | RR_PIN_ALL | RX_TCTL, 0x0002);
/* Manual Skip Select Off */
spi_write_rrac(chip_bex, RR_RX2 | RR_PIN_ALL | RX_TCTL, 0x0000);
/* Manual Skip Select On */
spi_write_rrac(chip_bex, RR_RX3 | RR_PIN_ALL | RX_TCTL, 0x0002);
/* Manual Skip Select Off */
spi_write_rrac(chip_bex, RR_RX3 | RR_PIN_ALL | RX_TCTL, 0x0000);
}
/* Driver enable, ODT Enable, Calibration Framing Pattern transmit, enable
TX BClk, IO On */
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_TX0 | TX_CTL, 0x003f);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_TX1 | TX_CTL, 0x003f);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_TX2 | TX_CTL, 0x003f);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_TX3 | TX_CTL, 0x003f);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_TX0 | TX_CTL, 0x003f);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_TX1 | TX_CTL, 0x003f);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_TX2 | TX_CTL, 0x003f);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_TX3 | TX_CTL, 0x003f);
/* ODT enable, proceed with parallel cal, RX Block Enable, IO on */
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_RX0 | RX_CTL, 0x0027);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_RX1 | RX_CTL, 0x0027);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_RX2 | RX_CTL, 0x0027);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_RX3 | RX_CTL, 0x0027);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_RX0 | RX_CTL, 0x0027);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_RX1 | RX_CTL, 0x0027);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_RX2 | RX_CTL, 0x0027);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_RX3 | RX_CTL, 0x0027);
/* check parallel calibration and slice levelization is complete and passed */
spi_poll_rrac(CHIP_BE0, RR_GLOBAL | RR_RX0 | RX_STATUS, 0x003f, 0x003f);
spi_poll_rrac(CHIP_BE0, RR_GLOBAL | RR_RX1 | RX_STATUS, 0x003f, 0x003f);
spi_poll_rrac(CHIP_BE0, RR_GLOBAL | RR_RX2 | RX_STATUS, 0x003f, 0x003f);
spi_poll_rrac(CHIP_BE0, RR_GLOBAL | RR_RX3 | RX_STATUS, 0x003f, 0x003f);
spi_poll_rrac(CHIP_BE1, RR_GLOBAL | RR_RX0 | RX_STATUS, 0x003f, 0x003f);
spi_poll_rrac(CHIP_BE1, RR_GLOBAL | RR_RX1 | RX_STATUS, 0x003f, 0x003f);
spi_poll_rrac(CHIP_BE1, RR_GLOBAL | RR_RX2 | RX_STATUS, 0x003f, 0x003f);
spi_poll_rrac(CHIP_BE1, RR_GLOBAL | RR_RX3 | RX_STATUS, 0x003f, 0x003f);
/* Driver enable, ODT Enable, enable core data, enable TX BClk, IO On */
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_TX0 | TX_CTL, 0x0037);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_TX1 | TX_CTL, 0x0037);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_TX2 | TX_CTL, 0x0037);
spi_write_rrac(CHIP_BE0, RR_GLOBAL | RR_TX3 | TX_CTL, 0x0037);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_TX0 | TX_CTL, 0x0037);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_TX1 | TX_CTL, 0x0037);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_TX2 | TX_CTL, 0x0037);
spi_write_rrac(CHIP_BE1, RR_GLOBAL | RR_TX3 | TX_CTL, 0x0037);
}

/*********************************************************************
© Copyright International Business Machines Corporation, Sony Computer Entertainment
Incorporated, Toshiba Corporation 2005
All Rights Reserved
FILENAME : rrac_be_byte_training.c
DESCRIPTION : Byte Calibration for CBE processor<-->CBE processor interface
***************************************************************************/
#include "spi_lib.h"
int IOIF0_byte_training(void)
{
int rc=0;
/* Enable CBE RX byte training */
spi_write64(CHIP_BE0, BED_RecBytTrngCntl_Lnk0, 0x86000000, 0x00000000);
spi_write64(CHIP_BE1, BED_RecBytTrngCntl_Lnk0, 0x86000000, 0x00000000);
/* Transmit latency set to 2. Enable CBE TX byte training */
spi_write64(CHIP_BE0, BED_Lnk0_TransBytTrngCntl, 0xc2000000, 0x00000000);
spi_write64(CHIP_BE1, BED_Lnk0_TransBytTrngCntl, 0xc2000000, 0x00000000);
rc = spi_poll64(CHIP_BE0, BED_RecBytTrngCntl_Lnk0, 0xff000000, 0x00000000,
0xe6000000, 0x00000000);
rc += spi_poll64(CHIP_BE1, BED_RecBytTrngCntl_Lnk0, 0xff000000, 0x00000000,
0xe6000000, 0x00000000);
/* turn off Byte Training Pattern XMIT_EN */
spi_write64(CHIP_BE0, BED_Lnk0_TransBytTrngCntl, 0x82000000, 0x00000000);
spi_write64(CHIP_BE1, BED_Lnk0_TransBytTrngCntl, 0x82000000, 0x00000000);

/* turn off Byte Training Pattern RCV_EN */
spi_write64(CHIP_BE0, BED_RecBytTrngCntl_Lnk0, 0x66000000, 0x00000000);
spi_write64(CHIP_BE1, BED_RecBytTrngCntl_Lnk0, 0x66000000, 0x00000000);
/* Enable Reception/Transmission Layer */
/* These next few command will start the CBE code execution */
/* Enable Link Layer */
spi_write64(CHIP_BE0, BIC_IF0INIT, 0x80000000, 0x00000000);
spi_write64(CHIP_BE1, BIC_IF0INIT, 0x80000000, 0x00000000);
/* enable Transport_Layer_Transmission_Enable */
spi_write64(CHIP_BE0, BIC_IF0INIT, 0xc0000000, 0x00000000);
spi_write64(CHIP_BE1, BIC_IF0INIT, 0xc0000000, 0x00000000);
return rc;
}

y me canso de pastear codigo :) porque de todos modos, aparte de que no tenemos acceso al interior del procedure, y como mucho podrias intentar hacer un BOF en alguna de ellas, no serviria de nada, ya que no tenemos la key para firmar y que sea valido de nuevo el codigo, asi que.....
Gracias.

Y por el test port? se podria monitorizar el arranque directamente supongo.

Digo yo que el procedure de inicio del procesador que figura en el datasheet, no sera exactamente igual, ya que he visto que se puede programar la secuencia de arranque en asm, al gusto del usuario por asi decirlo.

Quizas podriamos ver algo que no sale en los manuales.

La untima vez que utilice un regenerador de señal, solde mas de 1500 cables y prometi no volver hacer algo asi. pero si los puntos de dicho test port estan insolados, no me importaria volver hacer algo parecido.

Hechame una manita si lo tienes localizado por favor.

Un saludo
Soldar 1500 cables????????

Hombre te podríamos ayudar y tal

Devnul confirmas la hipótesis del JTAG?
No podrias ver nada porque esta absolutamente todo cifrado, durante todo el camino, todo cifrado
Hasta el arranque antes de los dos bits del deseo?

Recuerdo que cuando utilice el regenerador de señal en un motorola dvi 3xxx, tampoco podia ver nada legible, pero si podia interpretar cambios de veoltaje/intesidad en ciclos y post ciclos de arranque , y eso me ayudo mucho.


sssO

Soldar 1500 cables????????

Hombre te podríamos ayudar y tal

Devnul confirmas la hipótesis del JTAG?


Esto no es una hipotesis, esta documentado en el datasheet del procesador .
Si, todo.
El unico punto donde la informacion es "legible" es dentro del propio spe en el momento de operar y la operacion ni se coloca en cache, solo los operandos, por lo que ni teniendo acceso directo sacariamos info

Dudo mucho que tenga el puerto JTAG integrado.. Postea la imagen, porque yo no lo veo o_O
El procesador viene prepadaro con dicho puerto, bueno, casi todos los procesadores tienen un puerto y modo debug, para poder programar flash, eeproms, etc


Imagen
No se ve una leche xDDDDDDDDDDDDDDDDd podrias colocar bien el enlace ? :)
JTAG Joint Test Action Group. A test-access port defined by the IEEE 1149
standard. (que no lo encontraba en el glosario)

La comunicacion HA DE IR cifrada :)
Buenas, veo que el tema se pone interesante... toda esa info es oficial de IBM Corp. En las zonas de CellBE de la W3. Puede leerlo quien lo guste.


Vamos allá, que tengo a los 2 frikis a mano XDD

Bueno, como sabemos por la documentación oficial de IBM sobre sus CELLS:

- Arranque Power On Reset --> La BIOS checkea RAM, Busses, CPU, y lanza el MBR para que se inicie el SO.

- Arranque por FIRMWARE ( Implementación del CELLBE en la PS3 ) --> El FW checkea RAM, Busses y BANG!!!, desde una instrucción que solo el ensamblador ( que no assembler de lenguaje ) del CELLBE sabe ( SONY ) junto a un metodo de cifrado al gusto del consumidor ( SONY ) lanza la IMAGEN del HyperVisor a un SPU en modo ISOLATION. SI se toca esa imagen, si se toca la master key, el SPU no lanza la Imagen ni entra en Isolation.

Según la documentación, existe un MODO DEBUG del CELLBE... estará implementado en el CELLBE de la PS3???

Volvemos a la pregunta comprometida... Queremos videoconsolas o supercomputadores?????

Un Saludoooooo!
Enhorabuena por vuestra investigación, realmente se nota que sabeis.

una sugerencia: Podriais poner un resumen de cómo va la cosa en la primera página.

Salu2 [tadoramo]
Si , ya se lo que es un jtag, pero que me quieres decir con el link?


Fijate en el esquema, que tambien lo denominan (TCU) Test Tontrol Unit

Digo yo, que algo se podria hacer, no?

geodesico

Según la documentación, existe un MODO DEBUG del CELLBE... estará implementado en el CELLBE de la PS3???

cmhacks: existe un puerto de diagnostico, y doy por hecho que si esta integrado en el procesador como pinta el esquema, se tendria que poner en modo debug

Volvemos a la pregunta comprometida... Queremos videoconsolas o supercomputadores?????

Por mi parte un supercomputador a un precio ridiculo :)

Un Saludoooooo!


que sean dos :)
geodesico escribió:Buenas, veo que el tema se pone interesante... toda esa info es oficial de IBM Corp. En las zonas de CellBE de la W3. Puede leerlo quien lo guste.


Vamos allá, que tengo a los 2 frikis a mano XDD

Bueno, como sabemos por la documentación oficial de IBM sobre sus CELLS:

- Arranque Power On Reset --> La BIOS checkea RAM, Busses, CPU, y lanza el MBR para que se inicie el SO.

- Arranque por FIRMWARE ( Implementación del CELLBE en la PS3 ) --> El FW checkea RAM, Busses y BANG!!!, desde una instrucción que solo el ensamblador ( que no assembler de lenguaje ) del CELLBE sabe ( SONY ) junto a un metodo de cifrado al gusto del consumidor ( SONY ) lanza la IMAGEN del HyperVisor a un SPU en modo ISOLATION. SI se toca esa imagen, si se toca la master key, el SPU no lanza la Imagen ni entra en Isolation.

Según la documentación, existe un MODO DEBUG del CELLBE... estará implementado en el CELLBE de la PS3???

Volvemos a la pregunta comprometida... Queremos videoconsolas o supercomputadores?????

Un Saludoooooo!



Weeeeeeeeeeeeeeeeno por fin alguien que lee manuales :D

PD: Cmhack, lo del sniffer fue una de mis primeras ideas hace tiempo.. y esta descartada.
Devnul, podrias por favor darme tu opinion sobre mi ultimo post?

Gracias


geodesico


Por que no te traes a ese par de frikis ^^ y te quedas por aqui tambien, seria de agradecer.

Un saludo
Si tio XDDD soy un jodido TROLL de IBM :'(


Bueno... pues entonces....

El JTAG sería viable para colgar el arranque o interrumpir la secuencia de alguna manera???

Tendremos que abrir la Consola para acceder a dicho puerto?? /Cry

Yo apuesto porque si, el cell de la ps3 tiene el modo debug implementado, como un CELLBE más :D:D

Soy Cristiano!!! Tengo FE!!!!!! Hopeeeeeeeeee

Venga, que esto me huele biennnnnnnnnnn

Un saludo!!!!
Hombre de buena fe!!!!

heheh

Segun el esquema lo tiene, y todos los jtag que he tocado, me han abierto sus puertas.

Ojala y si la ps3 lo tiene insolado, pueda encontrarlo.

Como ya he comentado anteriormente, ya le he pedido a un amigo que me preste un osciloscopio/regenerador de señal

me veo arreglando la bomba de vacion de la estacion de soldar smd [flipa] hehe

A ver si devnul nos puede iluminar con un pdf de los suyos con algo de documentacion tecnica del jtag del cell.

Un saludo
geodesico escribió:Buenas, veo que el tema se pone interesante... [...]esde una instrucción que solo el ensamblador ( que no assembler de lenguaje ) del CELLBE sabe ( SONY ) junto a un metodo de cifrado al gusto del consumidor ( SONY ) lanza la IMAGEN del HyperVisor a un SPU en modo ISOLATION. SI se toca esa imagen, si se toca la master key, el SPU no lanza la Imagen ni entra en Isolation.


"junto aun método de cifrado a gusto del consumidor"

X.509 certificates según http://www-128.ibm.com/developerworks/forums/thread.jspa?messageID=13964175�


Hasta aquí os sigo, con el "Cell Security SDK" preparas un ejecutable para que se pueda ejecutar en un SPU en modo aislado
( y la comprobación se hará a la imagen entera que intentas cargar, no instrucción por instrucción de código máquina como se da a entender en posts anteriores )
Lo que sigo sin ver por ningún documento es que el resto de programas , que no son la imagen del hypervisor que va a la SPU, tengan que ir encriptados/firmados. Ni siquiera el firmware , ya que el doc. de "Hardware initiliazation Guide" habla de saltar a una dirección de memoria de la ROM, pero en ningún caso de que ese código de la ROM esté encriptado. Que se que es lógico que sea así, pero que no lo veo por ningún sitio ESCRITO.
Estamos hablado del "arranque" que funcoina diferente que cuando carga "lo que sea"

En analogia con el pc, seria cuando enciendes tu pc, bios, sistema,etcetc sistema operativo y luego, programas. El modo de funcoinar es diferente, y de lo que se hablaba es del primer paso, no del ultimo :)

Respecto al JTAG cmhack , si vosotros os hubierais currado la seguridad tan bestia del cell, seriais tan tontos de dejar el jtag opened sin cifrar? ;) a que no? y que ademas seria por hardw??? pues eso :)
A ver, eso esta claro

No vamos a encontrar una consolita con algo como, bienvenido a la scene de ps3 :D

Por eso he pedido prestado el regenerador , etc.

Si encuentro/amos el puerto ( algo que me esta inquientando desde hace un rato) se necesitara un programador, eso esta claro, y la comunicacion sera cifrada, tambien esta claro, pero asi son la mayoria de los jtag.

Por eso insisto en que si alguien sabe a ciencia cierta si el jtag va insolado en la placa, que lo diga sin dilacion.

Tambien estoy buscando un datasheet tecnico sobre el encapsulado del patillaje del cell, para poder tener una refencia sobre su distribucion.

Un saludo
devnul escribió:Estamos hablado del "arranque" que funcoina diferente que cuando carga "lo que sea"

En analogia con el pc, seria cuando enciendes tu pc, bios, sistema,etcetc sistema operativo y luego, programas. El modo de funcoinar es diferente, y de lo que se hablaba es del primer paso, no del ultimo :)

Respecto al JTAG cmhack , si vosotros os hubierais currado la seguridad tan bestia del cell, seriais tan tontos de dejar el jtag opened sin cifrar? ;) a que no? y que ademas seria por hardw??? pues eso :)


Pero al menos habría que comprobar si el jtag es accesible o no.

Tiene todas las papeletas para que este protegido,pero al menos hay que comprobar que realemente lo este.
devnul escribió:Estamos hablado del "arranque" que funcoina diferente que cuando carga "lo que sea"

En analogia con el pc, seria cuando enciendes tu pc, bios, sistema,etcetc sistema operativo y luego, programas. El modo de funcoinar es diferente, y de lo que se hablaba es del primer paso, no del ultimo :)

Respecto al JTAG cmhack , si vosotros os hubierais currado la seguridad tan bestia del cell, seriais tan tontos de dejar el jtag opened sin cifrar? ;) a que no? y que ademas seria por hardw??? pues eso :)



¡¡¡ Pero esto es lo que yo decía al principio y decías que no ... !!!

Cuando arrancas, tiras de la ROM ( que yo diría que no va encriptada, porque sino ya me dirás como la interpreta el Cell ... ) y aparte de inicializar buses y demás, y lanzas la imagen del hypervisor en modo "isolated SPU" .La SPU en este modo comprueba toda la imagen y si es correcta, la desencripta y la ejecuta tal cual.

Luego, cuando vas a cargar "lo que sea" ( el equivalente en PC a arrancar programas ) , ya no intervienen los mecanismos de seguridad del Cell , y si el ejecutable va firmado/encriptado o no dependerá de las restricciones SW que tu pongas en tu hypervisor.
( En el caso de la PS3 , pues si, son SELF ). Pero una vez que pasa tu verificación SOFTWARE, desencriptas , copias el ejecutable ya desencriptado en la RAM y se ejecuta normalmente .

Esto es lo que yo decía al principio y siempre me contestabas que no , que siempre va todo firmado y que es el Cell al ejecutar cada instrucción el que comprueba .
Y aunque este accesible desde linux, intenta leer un gpg xD pues ahora intenta leer una comunicacion cifrada donde la gpg se queda corta :P
Imagen
Imagen

Aquí tenes las fotos que mejor encontré de la placa madre, si os fijais bien, por la parte de abajo de la CPU hay unos boquetitos que parece que las líneas salen de la misma CPU pasando por unas resistencas...

Se ve un poco borroso, pero se ve claramente las líneas salir de la cpu y parecen puntos de soldadura....

¿Puede que sí este isolado?

A ver si tenemos suerte....
Si tienes el cerrojo de una puerta blindaba y no tienes la llave, da igual que la puerta tenga el cerrojo de la llave :) si miras atraves del cerrojo veras innumerables muescas, y no veras que hay detras, hasta que tengas la llave y gires todas las muescas :)
Por probar que no quede

Edit: Devnul pero y si cogemos el chicle lo pegamos en el cferrojo y lo sacamos ya tenemos la llave
dudo que la ram no vaya encriptada, no le veo sentido

Hay algun sitio donde hayas leido esto? si es asi, por favor ponme el vinculo

Por que antes de buscar el jtag, me cargo media placa metiendo memorias

Un saludo
Bueno dev... pero de momento ya hemos encontrado una posible puerta (¿Back Orifice?)...
Lo que esta claro es que todo jtag, usa las misma entrada y salidas de datos que varios puntos de la flash.

no hay alguna foto de mas calidad donde se pueda ver mejor la placa?

Un saludo
ssssO escribió:Por probar que no quede

Edit: Devnul pero y si cogemos el chicle lo pegamos en el cferrojo y lo sacamos ya tenemos la llave


La idea que conte hace meses sobre colocar un sniffer ahi , iba por ahi... pero no, no tendriamos la clave ni mucho menos, tendriamos los datos cifrados, es como si dumpeas la NAND, la NAND la tienes, si, pero completamente firmada y cifrada, es decir, ilegible :)


Bueno dev... pero de momento ya hemos encontrado una posible puerta (¿Back Orifice?)...


Si no estuviera cifrada si :) pero.... dime tu si no hubieas cifrado algo que esta a la vista de todo dios xD

Cmhack --> q el unico sitio donde no esta cifrado, es dentro de la propia spe, que lo descifra opera en cache INTERNA y vuelve a sacar la info cifrada :) es el unico punto donde esta sin cifrar, y ahi NO se puede acceder a menos que seas una nano-molecula-persona :D
te refieres a un mangler, no?

Yo tengo uno, " el regenerador de señal digital "

Por dios, no te quedes a medias, y ayudame a ver donde estan los puntos del jtag, o bien si alguien tiene una PS3 rota, se la compro y pruebo hacer todo esto.

Devnull, si tienes pensado algo con el jtag, o la flash, no te reserves ..... ><

Un saludo
ESo de comprar no cmhacks

Tiene peligro lo que vas a hacer?
cmhacks escribió:Lo que esta claro es que todo jtag, usa las misma entrada y salidas de datos que varios puntos de la flash.

no hay alguna foto de mas calidad donde se pueda ver mejor la placa?

Un saludo


El set mas completo de fotos, creo.
No hay mejores de la placa base, pero si en detalle.

http://forum.beyond3d.com/showthread.php?t=40457

Animos a todos.
Por cierto sería posible soldar al Cell y sacar la información?
Que ya lo probé hace meeeeeeeeeeeeeeses que no me lees :) que lees muy rapido :) que fue una de mis primeras ideas :) encriptacion por hardware :)

Por cierto sería posible soldar al Cell y sacar la información?


Si tienes la maquinaria que vale miles de millones (me lo invento) si :) es decir, no , no se puede :)
devnul escribió:Que ya lo probé hace meeeeeeeeeeeeeeses que no me lees :) que lees muy rapido :) que fue una de mis primeras ideas :) encriptacion por hardware :)


Me acuerdo cuando lo dijiste pero lo desestimastes por díficil
gracias por la pagina de las fotos :)

Devnulm si no es mucho preguntar, que incovenientes encontrastes?, si tienes un link con la info ya lo leo, si puedes postearlo, claro esta

por cierto, los chinos tienen ese tipo de maquinaria, y no lo desuldan, cosa que seria sencilla calentando la placa a mas no poder, si no, lo rebanan con tecnicas de laser para sacar un fotolito del procesador :O

Un saludo
El de siempre :) que necesitamos la p*** key :)
Bueno, en primer lugar agradecer a cmhacks, devnul... el trabajazo que se están pegando estos días de fiesta y decir que es el primer hilo que sigo con tanto interés al ver gente experimentada que sabe lo que hace y que lo hace con fundamentos y no con bugs inexistentes, cuentas atrás... Ánimo a todos. Por mi parte os habéis ganado mi respeto y mi admiración por la labor que hacéis de forma desinteresada (bueno, con el interés de petar la ps3, jeje).
Y ya metidos en materia deciros:(selecciónadlo para ver el enlace)

www.forosps3.com


En esta página existen videotutoriales de como desmontar la ps3 en los que podríais encontrar lo que buscáis. Si no es así creo que los usuarios de dicha página podrían proporcionaros algunas fotos propias si se lo pedís. Tienen tantas ganas como nosotros de que la scene avance. Espero que os sirva de algo.

SALUDOS.
si claro, pero estaria bien llegar a la cerradura, por si la conseguimos por aquellas de la vida

Prefiero tener un poco de faena adelantada, por eso estoy inquieto :)
cmhacks escribió:dudo que la ram no vaya encriptada, no le veo sentido
Hay algun sitio donde hayas leido esto? si es asi, por favor ponme el vinculo
Por que antes de buscar el jtag, me cargo media placa metiendo memorias
Un saludo


No lo he leído en ningún vínculo. Pero tampoco he leído lo contrario, y con toda la publicidad que le dan a todos los niveles de seguridad del Cell ¿ por qué este nivel no se menciona en ningún lado ?
Más argumentos:

- No conozco de ningún sistema en el cual toda la RAM esté encriptada y que sea el propio procesador el que lo desencripte a su entrada.
- Si esto fuese así tendría que ir "encriptada" cada instrucción por separado. No se podría encriptar todo el programa y desencriptarlo por bloques. Por lo tanto, por cada instrucción de ¿32 bits? tendríamos guardado otro valor de 32 bits ...

Aunque reconozco que no son argumentos resolutivos, y que puedo estar equivocado :-(

En temas HW estoy fuera ... ¿ qué cuesta hacer una captura de la RAM ? ¿ es más costoso que lo del JTAG ?
¿ llevaría mucho hacer una prueba para volcar y ver si la memoria X.D.R se guarda encriptada ? Como ventaja tenemos un ejecutable del WarHawk con módulos sin encriptar que se filtró: Se podría usar como referencia para comparar que lo que se ha capturado y volcado es correcto
cuesta poquito relativamente hacer un man in the midle a la ram, pero si el bus de datos esta encriptado.... lo tenemos jodidillo, aunque no se, si engancho una ps3 rota por ahi, probare lo del jtag y la ram, ademas de mas cositas que vayan saliendo
Si necesitáis traducción ingles-español de foros scene guiris, contad conmigo, es lo máximo que puedo aportar xD, así os ahorráis tiempo vosotros de ir traduciendo y tal.

Suerte, seguid así, da gusto leer
cmhacks escribió:cuesta poquito relativamente hacer un man in the midle a la ram, pero si el bus de datos esta encriptado.... lo tenemos jodidillo, aunque no se, si engancho una ps3 rota por ahi, probare lo del jtag y la ram, ademas de mas cositas que vayan saliendo


pues este usuario parece que quería vender su PS3 rota a ver que sacaba para pillarse una nueva (esta vez con garantía ):
http://www.elotrolado.net/hilo_Ayuda-No-se-ve-mi-Ps3--Desesperada-_982990
Por cierto ahora que lo recordáis

El self de Warhawk que tenía partes encriptadas y partes desencriptadas sirve de algo?
501 respuestas
16, 7, 8, 9, 10, 11