› Foros › Xbox 360 › Exploits y homebrew
Lembo escribió:Aragan escribió:Hice los pasos del tutorial. Sin embargo en el paso de "su -", omiti el - (por que con el - puesto no me daba permisos y marcaba error en los password al querer cambiarlo).
Aparentemente todo se habia realizado correctamente... pero en el ultimo paso, marco una serie de bad blocks al final del programa, al rededor de 20 bad blocks.
Cabe mencionar que las 2 veces que he flasheado por medio de lpt no me ha dado errores la nand, ni de lectura ni escritura.
Es una placa falcon, utilize el XBR_3a. Puede cargar xell al presionar "eject". Pero al encenderla, al rededor de unos 6-8 sgundos aparecen las 3 luces rojas con error 0020.
Alguna recomendacion?
¿Estás seguro de que tu nand no tenía ningún bad block?
¿Comparaste con el degraded cuando las extraiste?
¿Fueron las dos copias de la nand totalmente iguales?
Si no es así búscate un programa que reasigna los bad blocks (no recuerdo ahora mismo el nombre)
Si estás seguro de que no tienes ningún bad block, asegúrate de haber introducido bien la kv y la config en la imagen de xbr
Después de todo esto métele por lpt el xell solamente e intenta hacer el proceso de nuevo. Si no, métele el xbr por lpt (aunque sea más lento, que le vamos a hacer... )
PD: Yo usé el comando "su" sin guión y funcionó bien, no creo que tenga nada que ver con los bad blocks
viericrespo escribió:Confirmo que la versión original de lflash funciona en Jasper de 16MB. Simplemente hay que cambiar la línea:if (sfcx_readreg(0) != 0x0119810)
por la siguiente:if (sfcx_readreg(0) != 0x00023010)
Probado con la versión del XBR XBR_Jasper16_8955_3a
Salu2
klisard escribió:hola aver si alguin me echa una mano con mis dudas pues segun yo ya actualice pero no estoi seguro ya que me comi unos pasos porque no me dejaba cambiar el pasword con el comando su - yo lo hice con estos pasos.
mount /dev/sda1 /mnt/usb (por defecto es sda1 pero en caso de tener mas particiones o unidades de almacenamiento puede que sea sda2 sdb1 etc)
cd /mnt/usb
gcc lflash.c -o lflash
./lflash backup.bin XBR.bin (o el nombre que le pusierais al XBR).
me salio 2 veces un error no recuerdo bien el error decia algo aci como error en sector xxx bueno afin de cuentas si se flasheo el xbox o eso creo porque si prende todo bien, en la memoria tenia el block de notas i mi xbr ya con mi config i key al acabar el flasheo me aparecio otra imagen pero con el nombre de xbr. i otro archivo que noce que sea noce ke tanto desbarajuste hice (lo que me interesa es saber si se actualizo bien a la vercion 3 donde puedo checar?) no tengo idea como puedo saberlo solo e corrido el mame i el emulador de super juegos de 360 no le e cargado
klisard escribió:hola lembo solo quiero saber donde veo si tengo el xbr3 donde puedo checar en el xbox=? ya que no estoi seguro si se flasheo eso es todo? saudos
yurinet escribió:ok. muchas gracias Lembo, voy a probar!
por cierto cual es la contraseña del root? cuando hago el comando "su -" y la segunda vez que me pide que reintroduzca el password y supongo que sera el root, no? por que la nueva no me la acepta.
al final como no me acepta "su -" he optado por poner sudo delante de cada comando para ejecutarlos como root, pero cuando le meto el comando:
gcc iflash.c -o iflash para compilarlo me dice:
iflash.c: in function 'ioremap'
iflash.c: warning: cast to pointer from integer of diferent size. y no lo entiendo porque el archivo lo he descargado del post.
u cuando le meto la instruccion:
./iflash XBR.bin me dice:
flashconfig 01198010
verifying flash win XBR.bin
verify error at 00000000
verify failed!
i wont flash if you dont have a full working backup, sorry.
Vamos que se niega a flashearme la nand porque dice que no tengo un backup completo funcional, y yo lo he contruido con las kv y config que ponen el el txt del XBR. no se si sera porque no me deja compilar el iflash.
A ver si algunos habeis tenido estos problemas y los ha conseguido solucionar y me puede echar una mano.
saludos,
yurinet escribió:pero cuando le meto el comando "gcc lflash.c -o lflash" me da el mismo mensaje de error
Lembo escribió:elroma escribió:una duda como se pone el simbolo | en gentoo k no puedo.
vale ya lo e encontrao.
Creo recordar que era pulsando Shift + çspainfer escribió:Una curiosidad, ¿cuánto tiempo tarda el flasheo con este método? supongo que menos que por medio del cable paralelo
Pues no tarda casi nada, cuestión de segundos lo que es escribir la nand. Lo que mas tiempo lleva es esperar a que cargue el Gentoo.
elroma escribió:Lembo escribió:elroma escribió:una duda como se pone el simbolo | en gentoo k no puedo.
vale ya lo e encontrao.
Creo recordar que era pulsando Shift + çspainfer escribió:Una curiosidad, ¿cuánto tiempo tarda el flasheo con este método? supongo que menos que por medio del cable paralelo
Pues no tarda casi nada, cuestión de segundos lo que es escribir la nand. Lo que mas tiempo lleva es esperar a que cargue el Gentoo.
yo tenia la misma duda si buscaras un poko triple xxx.
saludos
PotajiTo escribió:Alguno de los que se pasea por xbox hacker y demás tiene noticias si el lflash para jasper grandes lo van a actulizar para que pueda escribir? Es que si hay que esperarse se espera
/* placed in public domain, written by Felix Domke <tmbinc@elitedvb.net> */
/* USE ON YOUR OWN RISK. */
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <byteswap.h>
#include <string.h>
int nandsize;
extern void *mmap64 (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset) __THROW;
volatile void * ioremap(unsigned long long physaddr, unsigned size, int sync)
{
int axs_mem_fd = -1;
unsigned long long page_addr, ofs_addr, reg, pgmask;
void* reg_mem = NULL;
/*
* looks like mmap wants aligned addresses?
*/
pgmask = getpagesize()-1;
page_addr = physaddr & ~pgmask;
ofs_addr = physaddr & pgmask;
/*
* Don't forget O_SYNC, esp. if address is in RAM region.
* Note: if you do know you'll access in Read Only mode,
* pass O_RDONLY to open, and PROT_READ only to mmap
*/
if (axs_mem_fd == -1) {
axs_mem_fd = open("/dev/mem", O_RDWR|(sync ? O_SYNC : 0));
if (axs_mem_fd < 0) {
perror("AXS: can't open /dev/mem");
return NULL;
}
}
/* memory map */
reg_mem = mmap64(
(caddr_t)reg_mem,
size+ofs_addr,
PROT_READ|PROT_WRITE,
MAP_SHARED,
axs_mem_fd,
page_addr
);
if (reg_mem == MAP_FAILED) {
perror("AXS: mmap error");
close(axs_mem_fd);
return NULL;
}
reg = (unsigned long )reg_mem + ofs_addr;
return (volatile void *)reg;
}
int iounmap(volatile void *start, size_t length)
{
unsigned long ofs_addr;
ofs_addr = (unsigned long)start & (getpagesize()-1);
/* do some cleanup when you're done with it */
return munmap((unsigned char*)start-ofs_addr, length+ofs_addr);
}
#define STATUS 1
#define COMMAND 2
#define ADDRESS 3
#define DATA 4
#define LOGICAL 5
#define PHYSICAL 6
volatile unsigned int *flash;
void sfcx_writereg(int reg, int value)
{
flash[reg] = bswap_32(value);
}
unsigned int sfcx_readreg(int reg)
{
return bswap_32(flash[reg]);
}
void readsector(unsigned char *data, int sector, int raw)
{
int status;
sfcx_writereg(STATUS, sfcx_readreg(STATUS));
sfcx_writereg(ADDRESS, sector);
sfcx_writereg(COMMAND, raw ? 3 : 2);
while ((status = sfcx_readreg(STATUS))&1);
if (status != 0x200)
{
if (status & 0x40)
printf(" * Bad block found at %08x\n", sector);
else if (status & 0x1c)
printf(" * (corrected) ECC error %08x: %08x\n", sector, status);
else if (!raw)
printf(" * illegal logical block %08x\n", sector);
else
printf(" * Unknown error at %08x: %08x. Please worry.\n", sector, status);
}
sfcx_writereg(ADDRESS, 0);
int i;
for (i = 0; i < 0x210; i+=4)
{
sfcx_writereg(COMMAND, 0);
*(int*)(data + i) = bswap_32(sfcx_readreg(DATA));
}
}
void flash_erase(int address)
{
sfcx_writereg(0, sfcx_readreg(0) | 8);
sfcx_writereg(STATUS, 0xFF);
sfcx_writereg(ADDRESS, address);
while (sfcx_readreg(STATUS) & 1);
sfcx_writereg(COMMAND, 0xAA);
sfcx_writereg(COMMAND, 0x55);
while (sfcx_readreg(STATUS) & 1);
sfcx_writereg(COMMAND, 0x5);
while (sfcx_readreg(STATUS) & 1);
int status = sfcx_readreg(STATUS);
if (status != 0x200)
printf("[%08x]", status);
sfcx_writereg(STATUS, 0xFF);
sfcx_writereg(0, sfcx_readreg(0) & ~8);
}
void write_page(int address, unsigned char *data)
{
sfcx_writereg(STATUS, 0xFF);
sfcx_writereg(0, sfcx_readreg(0) | 8);
sfcx_writereg(ADDRESS, 0);
int i;
for (i = 0; i < 0x210; i+=4)
{
sfcx_writereg(DATA, bswap_32(*(int*)(data + i)));
sfcx_writereg(COMMAND, 1);
}
sfcx_writereg(ADDRESS, address);
sfcx_writereg(COMMAND, 0x55);
while (sfcx_readreg(STATUS) & 1);
sfcx_writereg(COMMAND, 0xAA);
while (sfcx_readreg(STATUS) & 1);
sfcx_writereg(COMMAND, 0x4);
while (sfcx_readreg(STATUS) & 1);
int status = sfcx_readreg(STATUS);
if (status != 0x200)
printf("[%08x]", status);
sfcx_writereg(0, sfcx_readreg(0) & ~8);
}
extern volatile void * ioremap(unsigned long long physaddr, unsigned size, int sync);
extern int iounmap(volatile void *start, size_t length);
int dump_flash_to_file(const char *filename)
{
printf(" * Dumping to %s...\n", filename);
FILE *f = fopen(filename, "wb");
int i;
for (i = 0; i < nandsize; i += 0x200)
{
unsigned char sector[0x210];
readsector(sector, i, 1);
if (!(i&0x3fff))
{
printf("%08x\r", i);
fflush(stdout);
}
if (fwrite(sector, 1, 0x210, f) != 0x210)
return -1;
}
printf("done! \n");
fclose(f);
return 0;
}
int verify_flash_with_file(const char *filename, int raw)
{
FILE *f = fopen(filename, "rb");
if (!f)
return -1;
if (raw == -1) /* auto */
{
fseek(f, 0, SEEK_END);
if (ftell(f) == nandsize / 0x200 * 0x210)
{
raw = 1;
printf(" * detected RAW nand file, verifying in raw mode.\n");
} else
{
raw = 0;
printf(" * detected short nand file, verifying in cooked mode.\n");
}
fseek(f, 0, SEEK_SET);
}
printf(" * Verifying flash with %s...\n", filename);
int i;
for (i = 0; i < nandsize; i += 0x200)
{
unsigned char sector[0x210], sector_flash[0x210];
if (!(i&0x3fff))
{
printf("%08x\r", i);
fflush(stdout);
}
if (fread(sector, 1, 0x210, f) != 0x210)
return i;
readsector(sector_flash, i, raw);
if (sector_flash[0x200] != 0xFF) /* bad sector */
{
printf(" * ignoring bad sector at %08x\n", i);
continue;
}
if (memcmp(sector, sector_flash, 0x210))
{
printf(" * VERIFY error at %08x\n", i);
return -2;
}
}
printf("done! \n");
fclose(f);
return i;
}
int flash_from_file(const char *filename, int raw)
{
printf(" * Flashing from %s...\n", filename);
FILE *f = fopen(filename, "rb");
if (!f)
return -1;
if (raw == -1) /* auto */
{
fseek(f, 0, SEEK_END);
if (ftell(f) == nandsize / 0x200 * 0x210)
{
raw = 1;
printf(" * detected RAW nand file, flashing in raw mode.\n");
} else
{
raw = 0;
printf(" * detected short nand file, flashing in cooked mode.\n");
}
fseek(f, 0, SEEK_SET);
}
int i;
for (i = 0; i < nandsize; i += 0x4000)
{
unsigned char sector[0x210*32], sector_flash[0x210*32];
memset(sector, 0xFF, sizeof(sector));
if (!fread(sector, 1, 0x210*32, f))
return i;
printf("%08x\r", i);
fflush(stdout);
readsector(sector_flash, i, 0);
int phys_pos;
if (!raw)
{
phys_pos = sfcx_readreg(PHYSICAL);
if (!(phys_pos & 0x04000000)) /* shouldn't happen, unless the existing image is broken. just assume the sector is okay. */
{
printf(" * Uh, oh, don't know. Reading at %08x failed.\n", i);
phys_pos = i;
}
phys_pos &= 0x3fffe00;
if (phys_pos != i)
printf(" * relocating sector %08x to %08x...\n", i, phys_pos);
} else
phys_pos = i;
flash_erase(phys_pos);
int j;
for (j = 0; j < 32; ++j)
write_page(phys_pos + j * 0x200, sector + j * 0x210);
}
return 0;
}
int main(int argc, char **argv)
{
flash = ioremap(0xea00c000, 0x1000, 1);
printf(" * flash config: %08x\n", sfcx_readreg(0));
sfcx_writereg(0, sfcx_readreg(0) &~ (4|8|0x3c0));
int reg = sfcx_readreg(0);
switch(reg)
{
case 0x00AA3020:
nandsize = 512 * 1024 * 1024;
break;
case 0x008A3020:
nandsize = 256 * 1024 * 1024;
break;
case 0x00023010:
nandsize = 16 * 1024 * 1024;
break;
case 0x01198010:
nandsize = 16 * 1024 * 1024;
break;
default:
printf(" * unknown flash config %08x\n", reg);
return 1;
}
if (argc != 2 && argc != 3)
{
printf("usage: %s <current> [<new>]\n", *argv);
return 2;
}
const char *orig = argv[1];
int res = verify_flash_with_file(orig, 1);
if (res == -1)
{
dump_flash_to_file(orig);
res = verify_flash_with_file(orig, 1);
}
if (res != nandsize)
{
if (res == -2)
printf(" * verify failed!\n");
else if (res > 0)
printf(" * verified correctly, but only %d bytes.\n", res);
else
printf(" * original image invalid\n");
printf(" * I won't flash if you don't have a full, working backup, sorry.\n");
return 1;
}
printf(" * verify ok.\n");
if (argc > 2)
{
const char *image = argv[2];
flash_from_file(image, -1);
res = verify_flash_with_file(image, -1);
if (res > 0)
printf(" * verified %d bytes ok\n", res);
else
printf(" * verify failed! (%d)\n", res);
}
return 0;
}
davidx escribió:probe el metodo con una falcon virgen, lei la nand con nandpro me asegure que saliera sin errores, grabe el xell meti en usb el XBR preparado para mi placa y el lflash.c segui los demas pasos y instale y se instalo correctamente el XBR_3, es mas rapido y como je je y lo graba con 0 errores.
DazMalaga escribió:Osea que el iflash y el xbr en el mimo usb,no?
LeonSG escribió:Tengo un problema:
Actualize el xell y ahora cuando la consola arranca siempre entra al xell...
Aun no he podido actualizar debido a que no tengo un teclado usb.
¿Alguien sabe que puede ser el problema?
LeonSG escribió:Tengo un problema:
Actualize el xell y ahora cuando la consola arranca siempre entra al xell...
Aun no he podido actualizar debido a que no tengo un teclado usb.
¿Alguien sabe que puede ser el problema?
tapraxis escribió:
Hola. Como tienes cargado el Xell en la consola lo único que tienes que hacer es lo que ha puesto Hail_Mary...
Respecto a lo del teclado, algún compañero ha comentado que bien se podría usar el teclado virtual que pudiera llevar la versión del Gentoo (yo no lo he probado).
Un saludo.
LeonSG escribió:tapraxis escribió:
Hola. Como tienes cargado el Xell en la consola lo único que tienes que hacer es lo que ha puesto Hail_Mary...
Respecto a lo del teclado, algún compañero ha comentado que bien se podría usar el teclado virtual que pudiera llevar la versión del Gentoo (yo no lo he probado).
Un saludo.
Gracias Hail_Mary y tapraxis por la informacion, pense que al momento de actualizar el XELL solo se actualizaba esa parte y no que se iba a iniciar automaticamente.
Ahora, quisiera saber ¿Alguien sabe como instalar un paquete al Gentoo? La distribucion LIVECD no incluye los paquetes de accesibilidad para mostrar el teclado en pantalla, y buscando en internet encontre uno que se llama "Gok" pero no tengo ni la menor idea de como instalarlo... ¿Alguien me puede ayudar?
Lamentablemente estoy en un pueblo y no encuentro un teclado usb por aca
PotajiTo escribió:No se si funciona la red en el gentoo de 360, pero si funciona, con poner la direccion de este hilo en un pendrive y pegarla en el navegador solo es cuestion de copiar y pegar.
LeonSG escribió:PotajiTo escribió:No se si funciona la red en el gentoo de 360, pero si funciona, con poner la direccion de este hilo en un pendrive y pegarla en el navegador solo es cuestion de copiar y pegar.
Ya intente algo parecido, el problema es que en la Terminal no puedo pegar nada
PotajiTo escribió:LeonSG escribió:PotajiTo escribió:No se si funciona la red en el gentoo de 360, pero si funciona, con poner la direccion de este hilo en un pendrive y pegarla en el navegador solo es cuestion de copiar y pegar.
Ya intente algo parecido, el problema es que en la Terminal no puedo pegar nada
Edicion->pegar o algo parecido
jertocvil escribió:Shift + Insert también vale
PotajiTo escribió:LeonSG escribió:PotajiTo escribió:No se si funciona la red en el gentoo de 360, pero si funciona, con poner la direccion de este hilo en un pendrive y pegarla en el navegador solo es cuestion de copiar y pegar.
Ya intente algo parecido, el problema es que en la Terminal no puedo pegar nada
Edicion->pegar o algo parecido
LeonSG escribió:Eso es la forma que intente, al igual que con el click derecho, pero no pega nada en la Terminal...
Analisa escribió:Alguien puede confirmar si este metodo funciona en las jasper 256/512? me gustaria poder desoldar el nandumper y trabajar solo desde gentoo.
gracias!!!
DazMalaga escribió:
Ahí que renombrarlo a iflash.c, no?
A esperar que lo prueben aquí.
El usb formateado en fat o en fat32?
Yo aun no tengo la xbox para probar.
RastaMan escribió:Le he estado echando un ojo a este ultimo source que ha puesto don pelayo y ya me tiene mucha mejor pinta que el otro posteado anteriormente por un compañero del foro y lueog retocado por mi.
Este ya controla si el fichero para las bignand es el de 64 megas para escribirlo raw cosa que el otro no hacia, y cambia un par de detalles interesantes que tienen todo el aspecto de hacerlo el arma definitiva para leer/flashear las jasper bignand desde el gentoo.
A ver si en un rato lo pruebo en la mia, aunque sea para leer en principio que ya el otro fallaba un monton.
Analisa escribió:A ver si alguien me ayuda, despues de flashear el xbr por nandumper, no me arrancaba la consola y se quedaba la luz roja de abajo a la derecha encendida. Pense que era problema de flasheo asi que volvi a inyectar el kv en el xbr.bin pero esta vez sin el config.Volvi a flashear la nand y el caso que ahora la consola me arranca pero se queda bloqueada en el logo del principio de xbox360. Si arranco desde el eject me lanza el xell sin problemas.
ALguien tiene una idea de que puedo hacer? alguien que me pueda pasar un rawconfig.bin de una jasper 512?
gracias.
Si alguien me pasa un rawconfig.bin de jasper 512 lo pruebo yo tb este nuevo lflash.c, tengo la consola abierta y con todo a punto.