[TUTORIAL] Actualiza tu Dongle sin bootloader (Atmega16A)

Ok perfecto ahora me quedo mas claro igual yo ya lo tengo modificado con las soldaduras pero no le puse los pines para adaptarlo lo deje soldado al cable serial directamente. me recomendas que lo arme asi?
Diría sin asegurar 100% que el autoDFU aquí no es posible. No os olvidéis que este chip no soporta USB por sí mismo, hay que ayudarle :) Como hay que poner el puente, no hay tiempo ni nada, puente = salta el bootloader.


Tienes toda la razon del mundo, no habia caido en eso ....

Ahora bien, si tenemos el puente hecho el dongle se va al bootloader, si no tenemos el puente hecho el dongle inicia normal, perdona la pregunta pero es que un apañero del curro tiene mi USB y no puedo probarlo como poco hasta el 7 ....

El hex de hermes es el v4b tal cual sin nada nuevo. Haé uno con el spoof para evitar parchear desde el Gaia... estoy colocando mierda en mis discos, que tengo un chocho curioso xD Cuando deje todo limpito, me pondré primero con el PL3 (a ver si hoy saco algo funcional), y luego ya hacemos modificaciones, que quiero dejar los makefile listos para que compilen cualquier versión, y meter todas las posibles del port1_config_descriptor.h para la de Hermes. Para el PL3 ya veremos, que no estoy muy familiarizado con él.


Es decir que seguimos usando el inyector y despues el programador por USB, ¿cierto?

Respecto a lo que comenta Josete, yo de ser tu trabajaria sobre la ultima version del PsGrade, ya que segun pinta el tema es sobre la que habra actualizaciones, eso de que vaya cambiando el VPID y el PID de forma aleatoria da algo de seguridad, aunque un random de 4 digitos es facil de capar por chony ....

Mensaje por delagorra 04 Ene 2011 14:24
Ok perfecto ahora me quedo mas claro igual yo ya lo tengo modificado con las soldaduras pero no le puse los pines para adaptarlo lo deje soldado al cable serial directamente. me recomendas que lo arme asi?


Es mucho mas comodo y mas limpio, en cuanto tenga yo el mio de vuelta en casa vere como me las apaño para meter un pequeño interruptor.
ahora me voy a volver loco buscando un conector de 5 pines como el que tiene c0d3m4st4 en la foto [jaja]
unbas escribió:Ahora bien, si tenemos el puente hecho el dongle se va al bootloader, si no tenemos el puente hecho el dongle inicia normal, perdona la pregunta pero es que un apañero del curro tiene mi USB y no puedo probarlo como poco hasta el 7 ....


Eso es.

unbas escribió:Es decir que seguimos usando el inyector y despues el programador por USB, ¿cierto?


No, ya no dependemos del inyector, tenemos código fuente, y podemos compilar nuestros hex :) Aunque los generados por el inyector siguen (o deberían) seguir siendo válidos, pero vamos, qeu con el fuente, ya podemos modificar los payloads, adaptarlos a lo último y demás sin andar haciendo virguerías :)

delagorra escribió:ahora me voy a volver loco buscando un conector de 5 pines como el que tiene c0d3m4st4 en la foto [jaja]


Puedes usar un trozo de zócalo de PIC por ejemplo, cortarlo y limarlo hasta que te entre. El mío no era originalmente así, es uno parecido al de las disketteras pero de 5 pines, cortado y limado para poder cerrar el dongle.
No, ya no dependemos del inyector, tenemos código fuente, y podemos compilar nuestros hex :) Aunque los generados por el inyector siguen (o deberían) seguir siendo válidos, pero vamos, qeu con el fuente, ya podemos modificar los payloads, adaptarlos a lo último y demás sin andar haciendo virguerías :)


El codigo fuente, es el del link di github? que pusiste antes?
Ops, el source que te pasé es el autoDFU... aunque bueno si el bootloader se encuentra en una posición determinada, en el psgrade.c tienes el salto definido por si quieres probar...

De todas formas, el psgrade.c sin autoDFU con el randomID de Noltari es este:

/*
    PSGrade

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <string.h>
#include <stdio.h>

#include <LUFA/Version.h>
#include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/CDC.h>

#include "key.h"
#include "hmac.h"
#include "random.c"

#define RED   (LEDS_LED1)
#define GREEN   (LEDS_LED2)
#define BOTH   (RED|GREEN)
#define NONE   (LEDS_NO_LEDS)
#define LED(x) LEDs_SetAllLEDs(x)

#define PORT_EMPTY 0x0100   /* powered only */
#define PORT_FULL 0x0103    /* connected, enabled, powered, full-speed */
#define C_PORT_CONN  0x0001 /* connection */
#define C_PORT_RESET 0x0010 /* reset */
#define C_PORT_NONE  0x0000 /* no change */
#define CHALLENGE_INDEX   7
#define SHA1_DIGESTSIZE   20

uint16_t port_status[6] = { PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY };
uint16_t port_change[6] = { C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE };

enum {
   init,
   wait_hub_ready,
   hub_ready,
   p5_wait_reset,
   p5_wait_enumerate,
   p5_challenged,
   p5_responded,
   p5_wait_disconnect,
   p5_disconnected,
   done,
} state = init;


uint8_t hub_int_response = 0x00;
uint8_t hub_int_force_data0 = 0;
int last_port_conn_clear = 0;
int last_port_reset_clear = 0;

int8_t port_addr[7] = { -1, -1, -1, -1, -1, -1, -1 };
int8_t port_cur = -1;

void USB_Device_SetDeviceAddress(uint8_t Address)
{
   port_addr[port_cur] = Address & 0x7f;
   UDADDR = Address & 0x7f;
   UDADDR |= (1 << ADDEN);
}

void switch_port(int8_t port)
{
   if (port_cur == port) return;
   port_cur = port;
   if (port_addr[port] < 0)
      port_addr[port] = 0;
   UDADDR = port_addr[port] & 0x7f;
   UDADDR |= (1 << ADDEN);
}

volatile uint8_t expire = 0; /* counts down every 10 milliseconds */
ISR(TIMER1_OVF_vect)
{
   uint16_t rate = (uint16_t) -(F_CPU / 64 / 100);
   TCNT1H = rate >> 8;
   TCNT1L = rate & 0xff;
   if (expire > 0)
      expire--;
}



void panic(int led1, int led2)
{
   for(;;) {
      _delay_ms(100);
      LED(led1);
      _delay_ms(100);
      LED(led2);
   }      
}

void HUB_Task(void)
{
   Endpoint_SelectEndpoint(1);

   if (Endpoint_IsReadWriteAllowed())
   {
      if (hub_int_response) {
         if (hub_int_force_data0) {
            Endpoint_ResetDataToggle();
            hub_int_force_data0 = 0;
         }
         Endpoint_Write_Byte(hub_int_response);
         Endpoint_ClearIN();
         hub_int_response = 0x00;
      }
   }
}


void JIG_Task(void)
{
   static int bytes_out = 0, bytes_in = 0;

        Endpoint_SelectEndpoint(2);
        if (Endpoint_IsReadWriteAllowed())
        {
      Endpoint_Read_Stream_LE(&jig_challenge[bytes_out], 8, NO_STREAM_CALLBACK) ;      
        Endpoint_ClearOUT();
      bytes_out += 8;
      if (bytes_out >= 64) {
         //Generate random seed from AVR timer.
         srand(jig_challenge[7] + jig_challenge[8]); // As there is no function to get the time from the AVR we use the two first random chars from the jig_challenge as a seed.

         //Get a random dongle_id, based off the seed generated with the AVR timer.
         dongle_id[0] = rand();
         dongle_id[1] = rand();

         //Check dongle_id. If it should be revoked a new one is generated.
         int i;
         for(i = 0; i < sizeof(usb_dongle_revoke_list); i++) {
            if(usb_dongle_revoke_list[i] == (((dongle_id[0] << 8) & 0xFF) & (dongle_id[1] & 0xFF)) ) {
               i = 0;
               dongle_id[0] = rand();
               dongle_id[1] = rand();
            }
         }
         
         //Generate the jig_response.
         jig_response[0] = 0x00;
         jig_response[1] = 0x00;
         jig_response[2] = 0xFF;
         jig_response[3] = 0x00;
         jig_response[4] = 0x2E;
         jig_response[5] = 0x02;
         jig_response[6] = 0x02;
         jig_response[7] = dongle_id[0];
         jig_response[8] = dongle_id[1];

         //Generate usb_dongle_key from usb_dongle_master_key and dongle_id.
         HMACInit(usb_dongle_master_key, SHA1_DIGESTSIZE);
         HMACBlock(dongle_id, sizeof(dongle_id));
         HMACDone();
         for(i = 0; i < SHA1_DIGESTSIZE; i++) {
            usb_dongle_key[i] = hmacdigest[i];
         }

         //Generate jig_response.
         HMACInit(usb_dongle_key, SHA1_DIGESTSIZE);
         HMACBlock(jig_challenge + CHALLENGE_INDEX, SHA1_DIGESTSIZE);
         HMACDone();
         for(i = 0; i < SHA1_DIGESTSIZE; i++) {
            jig_response[CHALLENGE_INDEX + sizeof(dongle_id) + i] = hmacdigest[i];
         }

         state = p5_challenged;
         expire = 50; // was 90
      }
   }

        Endpoint_SelectEndpoint(1);
        if (Endpoint_IsReadWriteAllowed() && state == p5_challenged && expire == 0)
   {
      if ( bytes_in < 64) {
         Endpoint_Write_Stream_LE(&jig_response[bytes_in], 8, NO_STREAM_CALLBACK);
         Endpoint_ClearIN();
         bytes_in += 8;
         if ( bytes_in >= 64) {
         
            state = p5_responded;
            expire = 50;
         }
      }
   }
}

void connect_port(int port)
{
   last_port_reset_clear = 0;
   hub_int_response = (1 << port);
   port_status[port - 1] = PORT_FULL;
   port_change[port - 1] = C_PORT_CONN;

}

void disconnect_port(int port)
{
   last_port_conn_clear = 0;
   hub_int_response = (1 << port);
   port_status[port - 1] = PORT_EMPTY;
   port_change[port - 1] = C_PORT_CONN;
}



void SetupHardware(void)
{
   /* Disable watchdog if enabled by bootloader/fuses */
   MCUSR &= ~(1 << WDRF);
   wdt_disable();

   /* Disable clock division */
   clock_prescale_set(clock_div_1);

   /* Setup timer */
   TCCR1B = 0x03;  /* timer rate clk/64 */
   TIMSK1 = 0x01;

   /* Hardware Initialization */
   LEDs_Init();
   USB_Init();
   sei();
}


int main(void)
{
   SetupHardware();

   LED(~GREEN);
   state = init;
   switch_port(0);

   for (;;)
   {
      if (port_cur == 0)
         HUB_Task();

      if (port_cur == 5)
         JIG_Task();

      USB_USBTask();
      
         //connect 5
      if (state == hub_ready && expire == 0)
      {
         connect_port(5);
         state = p5_wait_reset;
      }
      

      if (state == p5_wait_reset && last_port_reset_clear == 5)
      {
         switch_port(5);
         state = p5_wait_enumerate;
      }

      // disconnect 5
      if (state == p5_responded && expire == 0)
      {         
         switch_port(0);
         disconnect_port(5);
         state = p5_wait_disconnect;
      }
      
      if (state == p5_wait_disconnect && last_port_conn_clear == 5)
      {
         state = p5_disconnected;
         expire = 20;
      }
      
      // done
      if (state == p5_disconnected && expire == 0)
      {
         LED(GREEN);
         break;
      }
   }
}

uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                                    const uint8_t wIndex,
                                    const void** const DescriptorAddress)
{
   const uint8_t  DescriptorType   = (wValue >> 8);

   void*          Address = NULL;
   uint16_t       Size    = NO_DESCRIPTOR;

   switch (DescriptorType)
   {
   case DTYPE_Device:
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Device_Descriptor;
         Size    = sizeof(HUB_Device_Descriptor);
         break;
      case 5:
         Address = (void *) port5_device_descriptor;
         Size    = sizeof(port5_device_descriptor);
         break;
      }
      break;
   case DTYPE_Configuration:
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Config_Descriptor;
         Size    = sizeof(HUB_Config_Descriptor);
         break;
      case 5:
         // 1 config
         Address = (void *) port5_config_descriptor;
         Size    = sizeof(port5_config_descriptor);
         break;
      }
      break;
   case 0x29: // HUB descriptor (always to port 0 we'll assume)
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Hub_Descriptor;
         Size    = sizeof(HUB_Hub_Descriptor);
         break;
      }
      break;
   }
   
   *DescriptorAddress = Address;
   return Size;
}

void EVENT_USB_Device_Connect(void) { }
void EVENT_USB_Device_Disconnect(void) { }

void EVENT_USB_Device_UnhandledControlRequest(void)
{      
   
   if (port_cur == 5 && USB_ControlRequest.bRequest == REQ_SetInterface)
   {
      /* can ignore this */
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0xA0 &&
       USB_ControlRequest.bRequest == 0x00 &&  // GET HUB STATUS
       USB_ControlRequest.wValue == 0x00 &&
       USB_ControlRequest.wIndex == 0x00 &&
       USB_ControlRequest.wLength == 0x04) {
      Endpoint_ClearSETUP();
      Endpoint_Write_Word_LE(0x0000); // wHubStatus
      Endpoint_Write_Word_LE(0x0000); // wHubChange
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0xA3 && 
       USB_ControlRequest.bRequest == 0x00 &&   //  GET PORT STATUS
       USB_ControlRequest.wValue == 0x00 &&
       USB_ControlRequest.wLength == 0x04) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;

      Endpoint_ClearSETUP();
      Endpoint_Write_Word_LE(port_status[p - 1]); // wHubStatus
      Endpoint_Write_Word_LE(port_change[p - 1]); // wHubChange
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0x23 &&
       USB_ControlRequest.bRequest == 0x03 && // SET_FEATURE
       USB_ControlRequest.wLength == 0x00) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;
      
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();

      switch(USB_ControlRequest.wValue) {
      case 0x0008: // PORT_POWER
         if (p == 6 && state == init) {
            /* after the 6th port is powered, wait a bit and continue */
            state = hub_ready;
            expire = 15;
         }
         break;
      case 0x0004: // PORT_RESET
         hub_int_response = (1 << p);
         port_change[p - 1] |= C_PORT_RESET;
         break;
      }
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0x23 &&
       USB_ControlRequest.bRequest == 0x01 && // CLEAR_FEATURE
       USB_ControlRequest.wLength == 0x00) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;
      
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();

      switch(USB_ControlRequest.wValue) {
      case 0x0010: // C_PORT_CONNECTION
         last_port_conn_clear = p;
         port_change[p - 1] &= ~C_PORT_CONN;
         break;
      case 0x0014: // C_PORT_RESET
         last_port_reset_clear = p;
         port_change[p - 1] &= ~C_PORT_RESET;
         break;
      }
      return;
   }

   panic(RED, GREEN);
}

void EVENT_USB_Device_ConfigurationChanged(void)
{
   /* careful with endpoints: we don't reconfigure when "switching ports"
      so we need the same configuration on all of them */
   if (!Endpoint_ConfigureEndpoint(1, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, 8, ENDPOINT_BANK_SINGLE))
      panic(GREEN, BOTH);
   if (!Endpoint_ConfigureEndpoint(2, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, 8, ENDPOINT_BANK_SINGLE))
      panic(GREEN, BOTH);
}

void EVENT_USB_Device_Suspend(void) { }
void EVENT_USB_Device_WakeUp(void) { }
void EVENT_USB_Device_Reset(void) { }
void EVENT_USB_Device_StartOfFrame(void) { }
void EVENT_USB_InitFailure(const uint8_t ErrorCode) { }
void EVENT_USB_UIDChange(void) {}


en el main es aconsejable modificar el switch_port(0) a switch_port(5) no me preguntes porque... [sonrisa]
Ese es el fuente original. Tengo que poner el mío modificado que es el que he usado.

Cuando acabe con lo del PL3 publicaré todos los fuentes modificados por mi.

unbas escribió:
No, ya no dependemos del inyector, tenemos código fuente, y podemos compilar nuestros hex :) Aunque los generados por el inyector siguen (o deberían) seguir siendo válidos, pero vamos, qeu con el fuente, ya podemos modificar los payloads, adaptarlos a lo último y demás sin andar haciendo virguerías :)


El codigo fuente, es el del link di github? que pusiste antes?



OK gracias, luego lo echaré un ojo, con el psgrade.c me valdrá.

josete2k escribió:Ops, el source que te pasé es el autoDFU... aunque bueno si el bootloader se encuentra en una posición determinada, en el psgrade.c tienes el salto definido por si quieres probar...

De todas formas, el psgrade.c sin autoDFU con el randomID de Noltari es este:

/*
    PSGrade

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <string.h>
#include <stdio.h>

#include <LUFA/Version.h>
#include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/CDC.h>

#include "key.h"
#include "hmac.h"
#include "random.c"

#define RED   (LEDS_LED1)
#define GREEN   (LEDS_LED2)
#define BOTH   (RED|GREEN)
#define NONE   (LEDS_NO_LEDS)
#define LED(x) LEDs_SetAllLEDs(x)

#define PORT_EMPTY 0x0100   /* powered only */
#define PORT_FULL 0x0103    /* connected, enabled, powered, full-speed */
#define C_PORT_CONN  0x0001 /* connection */
#define C_PORT_RESET 0x0010 /* reset */
#define C_PORT_NONE  0x0000 /* no change */
#define CHALLENGE_INDEX   7
#define SHA1_DIGESTSIZE   20

uint16_t port_status[6] = { PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY };
uint16_t port_change[6] = { C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE };

enum {
   init,
   wait_hub_ready,
   hub_ready,
   p5_wait_reset,
   p5_wait_enumerate,
   p5_challenged,
   p5_responded,
   p5_wait_disconnect,
   p5_disconnected,
   done,
} state = init;


uint8_t hub_int_response = 0x00;
uint8_t hub_int_force_data0 = 0;
int last_port_conn_clear = 0;
int last_port_reset_clear = 0;

int8_t port_addr[7] = { -1, -1, -1, -1, -1, -1, -1 };
int8_t port_cur = -1;

void USB_Device_SetDeviceAddress(uint8_t Address)
{
   port_addr[port_cur] = Address & 0x7f;
   UDADDR = Address & 0x7f;
   UDADDR |= (1 << ADDEN);
}

void switch_port(int8_t port)
{
   if (port_cur == port) return;
   port_cur = port;
   if (port_addr[port] < 0)
      port_addr[port] = 0;
   UDADDR = port_addr[port] & 0x7f;
   UDADDR |= (1 << ADDEN);
}

volatile uint8_t expire = 0; /* counts down every 10 milliseconds */
ISR(TIMER1_OVF_vect)
{
   uint16_t rate = (uint16_t) -(F_CPU / 64 / 100);
   TCNT1H = rate >> 8;
   TCNT1L = rate & 0xff;
   if (expire > 0)
      expire--;
}



void panic(int led1, int led2)
{
   for(;;) {
      _delay_ms(100);
      LED(led1);
      _delay_ms(100);
      LED(led2);
   }      
}

void HUB_Task(void)
{
   Endpoint_SelectEndpoint(1);

   if (Endpoint_IsReadWriteAllowed())
   {
      if (hub_int_response) {
         if (hub_int_force_data0) {
            Endpoint_ResetDataToggle();
            hub_int_force_data0 = 0;
         }
         Endpoint_Write_Byte(hub_int_response);
         Endpoint_ClearIN();
         hub_int_response = 0x00;
      }
   }
}


void JIG_Task(void)
{
   static int bytes_out = 0, bytes_in = 0;

        Endpoint_SelectEndpoint(2);
        if (Endpoint_IsReadWriteAllowed())
        {
      Endpoint_Read_Stream_LE(&jig_challenge[bytes_out], 8, NO_STREAM_CALLBACK) ;      
        Endpoint_ClearOUT();
      bytes_out += 8;
      if (bytes_out >= 64) {
         //Generate random seed from AVR timer.
         srand(jig_challenge[7] + jig_challenge[8]); // As there is no function to get the time from the AVR we use the two first random chars from the jig_challenge as a seed.

         //Get a random dongle_id, based off the seed generated with the AVR timer.
         dongle_id[0] = rand();
         dongle_id[1] = rand();

         //Check dongle_id. If it should be revoked a new one is generated.
         int i;
         for(i = 0; i < sizeof(usb_dongle_revoke_list); i++) {
            if(usb_dongle_revoke_list[i] == (((dongle_id[0] << 8) & 0xFF) & (dongle_id[1] & 0xFF)) ) {
               i = 0;
               dongle_id[0] = rand();
               dongle_id[1] = rand();
            }
         }
         
         //Generate the jig_response.
         jig_response[0] = 0x00;
         jig_response[1] = 0x00;
         jig_response[2] = 0xFF;
         jig_response[3] = 0x00;
         jig_response[4] = 0x2E;
         jig_response[5] = 0x02;
         jig_response[6] = 0x02;
         jig_response[7] = dongle_id[0];
         jig_response[8] = dongle_id[1];

         //Generate usb_dongle_key from usb_dongle_master_key and dongle_id.
         HMACInit(usb_dongle_master_key, SHA1_DIGESTSIZE);
         HMACBlock(dongle_id, sizeof(dongle_id));
         HMACDone();
         for(i = 0; i < SHA1_DIGESTSIZE; i++) {
            usb_dongle_key[i] = hmacdigest[i];
         }

         //Generate jig_response.
         HMACInit(usb_dongle_key, SHA1_DIGESTSIZE);
         HMACBlock(jig_challenge + CHALLENGE_INDEX, SHA1_DIGESTSIZE);
         HMACDone();
         for(i = 0; i < SHA1_DIGESTSIZE; i++) {
            jig_response[CHALLENGE_INDEX + sizeof(dongle_id) + i] = hmacdigest[i];
         }

         state = p5_challenged;
         expire = 50; // was 90
      }
   }

        Endpoint_SelectEndpoint(1);
        if (Endpoint_IsReadWriteAllowed() && state == p5_challenged && expire == 0)
   {
      if ( bytes_in < 64) {
         Endpoint_Write_Stream_LE(&jig_response[bytes_in], 8, NO_STREAM_CALLBACK);
         Endpoint_ClearIN();
         bytes_in += 8;
         if ( bytes_in >= 64) {
         
            state = p5_responded;
            expire = 50;
         }
      }
   }
}

void connect_port(int port)
{
   last_port_reset_clear = 0;
   hub_int_response = (1 << port);
   port_status[port - 1] = PORT_FULL;
   port_change[port - 1] = C_PORT_CONN;

}

void disconnect_port(int port)
{
   last_port_conn_clear = 0;
   hub_int_response = (1 << port);
   port_status[port - 1] = PORT_EMPTY;
   port_change[port - 1] = C_PORT_CONN;
}



void SetupHardware(void)
{
   /* Disable watchdog if enabled by bootloader/fuses */
   MCUSR &= ~(1 << WDRF);
   wdt_disable();

   /* Disable clock division */
   clock_prescale_set(clock_div_1);

   /* Setup timer */
   TCCR1B = 0x03;  /* timer rate clk/64 */
   TIMSK1 = 0x01;

   /* Hardware Initialization */
   LEDs_Init();
   USB_Init();
   sei();
}


int main(void)
{
   SetupHardware();

   LED(~GREEN);
   state = init;
   switch_port(0);

   for (;;)
   {
      if (port_cur == 0)
         HUB_Task();

      if (port_cur == 5)
         JIG_Task();

      USB_USBTask();
      
         //connect 5
      if (state == hub_ready && expire == 0)
      {
         connect_port(5);
         state = p5_wait_reset;
      }
      

      if (state == p5_wait_reset && last_port_reset_clear == 5)
      {
         switch_port(5);
         state = p5_wait_enumerate;
      }

      // disconnect 5
      if (state == p5_responded && expire == 0)
      {         
         switch_port(0);
         disconnect_port(5);
         state = p5_wait_disconnect;
      }
      
      if (state == p5_wait_disconnect && last_port_conn_clear == 5)
      {
         state = p5_disconnected;
         expire = 20;
      }
      
      // done
      if (state == p5_disconnected && expire == 0)
      {
         LED(GREEN);
         break;
      }
   }
}

uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                                    const uint8_t wIndex,
                                    const void** const DescriptorAddress)
{
   const uint8_t  DescriptorType   = (wValue >> 8);

   void*          Address = NULL;
   uint16_t       Size    = NO_DESCRIPTOR;

   switch (DescriptorType)
   {
   case DTYPE_Device:
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Device_Descriptor;
         Size    = sizeof(HUB_Device_Descriptor);
         break;
      case 5:
         Address = (void *) port5_device_descriptor;
         Size    = sizeof(port5_device_descriptor);
         break;
      }
      break;
   case DTYPE_Configuration:
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Config_Descriptor;
         Size    = sizeof(HUB_Config_Descriptor);
         break;
      case 5:
         // 1 config
         Address = (void *) port5_config_descriptor;
         Size    = sizeof(port5_config_descriptor);
         break;
      }
      break;
   case 0x29: // HUB descriptor (always to port 0 we'll assume)
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Hub_Descriptor;
         Size    = sizeof(HUB_Hub_Descriptor);
         break;
      }
      break;
   }
   
   *DescriptorAddress = Address;
   return Size;
}

void EVENT_USB_Device_Connect(void) { }
void EVENT_USB_Device_Disconnect(void) { }

void EVENT_USB_Device_UnhandledControlRequest(void)
{      
   
   if (port_cur == 5 && USB_ControlRequest.bRequest == REQ_SetInterface)
   {
      /* can ignore this */
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0xA0 &&
       USB_ControlRequest.bRequest == 0x00 &&  // GET HUB STATUS
       USB_ControlRequest.wValue == 0x00 &&
       USB_ControlRequest.wIndex == 0x00 &&
       USB_ControlRequest.wLength == 0x04) {
      Endpoint_ClearSETUP();
      Endpoint_Write_Word_LE(0x0000); // wHubStatus
      Endpoint_Write_Word_LE(0x0000); // wHubChange
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0xA3 && 
       USB_ControlRequest.bRequest == 0x00 &&   //  GET PORT STATUS
       USB_ControlRequest.wValue == 0x00 &&
       USB_ControlRequest.wLength == 0x04) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;

      Endpoint_ClearSETUP();
      Endpoint_Write_Word_LE(port_status[p - 1]); // wHubStatus
      Endpoint_Write_Word_LE(port_change[p - 1]); // wHubChange
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0x23 &&
       USB_ControlRequest.bRequest == 0x03 && // SET_FEATURE
       USB_ControlRequest.wLength == 0x00) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;
      
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();

      switch(USB_ControlRequest.wValue) {
      case 0x0008: // PORT_POWER
         if (p == 6 && state == init) {
            /* after the 6th port is powered, wait a bit and continue */
            state = hub_ready;
            expire = 15;
         }
         break;
      case 0x0004: // PORT_RESET
         hub_int_response = (1 << p);
         port_change[p - 1] |= C_PORT_RESET;
         break;
      }
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0x23 &&
       USB_ControlRequest.bRequest == 0x01 && // CLEAR_FEATURE
       USB_ControlRequest.wLength == 0x00) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;
      
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();

      switch(USB_ControlRequest.wValue) {
      case 0x0010: // C_PORT_CONNECTION
         last_port_conn_clear = p;
         port_change[p - 1] &= ~C_PORT_CONN;
         break;
      case 0x0014: // C_PORT_RESET
         last_port_reset_clear = p;
         port_change[p - 1] &= ~C_PORT_RESET;
         break;
      }
      return;
   }

   panic(RED, GREEN);
}

void EVENT_USB_Device_ConfigurationChanged(void)
{
   /* careful with endpoints: we don't reconfigure when "switching ports"
      so we need the same configuration on all of them */
   if (!Endpoint_ConfigureEndpoint(1, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, 8, ENDPOINT_BANK_SINGLE))
      panic(GREEN, BOTH);
   if (!Endpoint_ConfigureEndpoint(2, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, 8, ENDPOINT_BANK_SINGLE))
      panic(GREEN, BOTH);
}

void EVENT_USB_Device_Suspend(void) { }
void EVENT_USB_Device_WakeUp(void) { }
void EVENT_USB_Device_Reset(void) { }
void EVENT_USB_Device_StartOfFrame(void) { }
void EVENT_USB_InitFailure(const uint8_t ErrorCode) { }
void EVENT_USB_UIDChange(void) {}
Ese es el fuente original. Tengo que poner el mío modificado que es el que he usado.

Cuando acabe con lo del PL3 publicaré todos los fuentes modificados por mi.


Si quieres ahorrarte historias montate un git gratuito con google .... mas que nada para evitar el engorro de tener tropecientos fuentes en el pc ...

http://code.google.com/intl/es-ES/
alguem podia colocar o hex hermesv4b+ spoof 3.50
gostaria de jogar o gran turismo mas dizem que é preciso esse hex
RogerioF escribió:alguem podia colocar o hex hermesv4b+ spoof 3.50
gostaria de jogar o gran turismo mas dizem que é preciso esse hex


Prueba este:
http://depositfiles.com/files/3ky2r4glc
actualizada la web del proyecto (in English :P ) con todo el proceso, enlaces, utilidades y demás. Aún no he puesto los fuentes, tengo que mirar antes lo del random id y el PL3.
un crack c0d3m4st4 gracias por todo deci que estaba todo 2 paginas atras en español jajaja
a ver si actualiza andresete el post principal, que si no no va a haber quien lo encuentre :D

Te funcionó ?

Después de pegarme un rato con el github ya he conseguido entenderlo y ya estoy trabajando con él :) Al principio es un coñazo, pero una vez cogido el truco parece bastante sencillo al menos para las operaciones básicas :) El psgrade ya está, manteniendo la estructura y todo del fork original para pasarle los cambios al autor por si los quiere incorporar al suyo. Ahora hay que pegarse con el psgroove, que ya veo más dificil poder mantener lo original, así que será un fork totalmente independiente.

delagorra escribió:un crack c0d3m4st4 gracias por todo deci que estaba todo 2 paginas atras en español jajaja
Sinceramente te pasastes C0d3m4st4 , les agradesco a todos los que colaboraron en esto . Lastima que me ilusione y todavia no puedo hacer andar el mio jeje :S . Me sale el famoso error 24, lo raro es que mi chip es el 1030. Pregunta de ignorante nada mas este error es si o si por el tema de los fuses y eso o puede lleguer hacer el puerto o algun cable roto ¿?¿?


Mil Gracias de nuevo por haber invertido tanto tiempo en esto .
Saludos Lea
chacal01 escribió:Sinceramente te pasastes C0d3m4st4 , les agradesco a todos los que colaboraron en esto . Lastima que me ilusione y todavia no puedo hacer andar el mio jeje :S . Me sale el famoso error 24, lo raro es que mi chip es el 1030. Pregunta de ignorante nada mas este error es si o si por el tema de los fuses y eso o puede lleguer hacer el puerto o algun cable roto ¿?¿?


Mil Gracias de nuevo por haber invertido tanto tiempo en esto .
Saludos Lea


El error 24 suele ser por que no detecta el tipo de chip o por que no se comunica bien con el, a mi me dio un par de veces al principio pero era por que conectaba mal el cable ....
en mi caso el -24 (o era 24 sin el signo negativo??? no me acuerdo :) ) me da en todos los stinger, no ha habido manera, también en el neojb inicial cuando empecé con las pruebas... sospecho que los chips están bloqueados por una configuración incorrecta de los bits de configuración, pero no tengo manera de saberlo.

Por otro lado, estoy retocando y añadiendo los fuentes. De momento ya está el del PSGrade disponible desde la web del proyecto a a través de GitHub. El PSGroove del repositorio no está modificado, así que sólo usad (si queréis, ya que de momento también están los hex, y no necesitáis compilar) los fuentes que vaya anunciando.

El PL3 lo hice compilar en 2 minutos perfectamente como presumía, pero por lo que sea no funciona, y no lo entiendo, el código es igual pero cambian los payloads. Tengo que repasarlo.

EDITO

Joder!! Por fin!! Me cago en la puta! Anoche hasta las 5 de la mañana con el puto PL3, y resulta que el jodido descriptor.h del fuente original que estoy usando de Timwu está mal !! He cogido el original de kakaroto y ya está funcionando y comprobado.

Ya tenemos TODO para el ATMega16A :) Hermes, PL3 y PSGrade... venga, que saquen más cosas que las adapto también :)

unbas escribió:
chacal01 escribió:Sinceramente te pasastes C0d3m4st4 , les agradesco a todos los que colaboraron en esto . Lastima que me ilusione y todavia no puedo hacer andar el mio jeje :S . Me sale el famoso error 24, lo raro es que mi chip es el 1030. Pregunta de ignorante nada mas este error es si o si por el tema de los fuses y eso o puede lleguer hacer el puerto o algun cable roto ¿?¿?


Mil Gracias de nuevo por haber invertido tanto tiempo en esto .
Saludos Lea


El error 24 suele ser por que no detecta el tipo de chip o por que no se comunica bien con el, a mi me dio un par de veces al principio pero era por que conectaba mal el cable ....
c0dem4st4, quizás esto te interese:

HERMES_4B_PL3_355_SPOOF_SOURCE.rar

Lo dejo como adjunto ....

Adjuntos

es con lo siguiente que quería ponerme, con los spoofs :) Gracias

por cierto, he editado el post anterior... ya casi estamos ! :P

unbas escribió:c0dem4st4, quizás esto te interese:

HERMES_4B_PL3_355_SPOOF_SOURCE.rar

Lo dejo como adjunto ....
c0d3m4st4 escribió:EDITO

Joder!! Por fin!! Me cago en la puta! Anoche hasta las 5 de la mañana con el puto PL3, y resulta que el jodido descriptor.h del fuente original que estoy usando de Timwu está mal !! He cogido el original de kakaroto y ya está funcionando y comprobado.

Ya tenemos TODO para el ATMega16A :) Hermes, PL3 y PSGrade... venga, que saquen más cosas que las adapto también :)


Jajaja, enhorabuena! Buen trabajo c0d3m4st4!! [beer]
c0d3m4st4 escribió:es con lo siguiente que quería ponerme, con los spoofs :) Gracias

por cierto, he editado el post anterior... ya casi estamos ! :P

unbas escribió:c0dem4st4, quizás esto te interese:

HERMES_4B_PL3_355_SPOOF_SOURCE.rar

Lo dejo como adjunto ....


Eres un makinon!!!!

A ver si se conecta andresete y convierte el hilo en una wiki sobre este dongle, que junto con el de josete son los mas "Hacked's"
Por lo que veo mi Neojailbreak vino bloqueado por que revise todas las coneccions de nuevo y esta todo segundo e tutorial. Asi tendre que usarlo de llavero , mala suerte. buscare otra formar de hacer el downgrade
Igualmente seguire felicitandolos por todo lo que hicieron, gracias unbas tambien por la informacion.


Saludos Gente.
Lea
chacal01 escribió:Por lo que veo mi Neojailbreak vino bloqueado por que revise todas las coneccions de nuevo y esta todo segundo e tutorial. Asi tendre que usarlo de llavero , mala suerte. buscare otra formar de hacer el downgrade
Igualmente seguire felicitandolos por todo lo que hicieron, gracias unbas tambien por la informacion.


Saludos Gente.
Lea


Haz una cosa, si ya lo tienes con la modificacion, haz una lectura a ver si te deja, o pega una imagen del config bits .... a ver como esta ....
Mira cuando le pongo read , primero me sale el error ese -24 y si le pongo ignore me lo lee despues http://img684.imageshack.us/i/dibujojcy.png/

Y bueno los bits lo tengo asi , pero no me deja clickear en el spien :S, ahi me di cuenta de que tenia un problema.

http://img191.imageshack.us/i/dibujo2qh.png
chacal01 escribió:Mira cuando le pongo read , primero me sale el error ese -24 y si le pongo ignore me lo lee despues Imagen

Y bueno los bits lo tengo asi , pero no me deja clickear en el spien :S, ahi me di cuenta de que tenia un problema.
Imagen


Algo tienes que estar haciendo mal, por que Spien es justamente para habilitar la programacion ....

intenta dejarlo tal que asi:
Imagen

Intenta también seguir al pie de la letra estos pasos.
viewtopic.php?f=179&t=1503635&p=1723225970#p1723225970
unbas, yo entiendo que lo tiene bloqueado pero desde el principio, es decir desde la primera programación con PonyProg, no le detecta el chip... es lo que me pasa a mi con los Stingers. Juraría que a mi ni me dejaba abrir la ventana de "config and security bits", aunque no me acuerdo. Si es así, no va a poder hacer nada, porque creo que el problema es precisamente ese, qeu SPIEN está deshabilitado, con lo que no podemos hacr nada con nuestro programador :(

Añadidos los fuentes del bootloader. El del psgroove llevará más tiempo, quiero ocar el makefile para poder generar todo desde el mismo.
c0d3m4st4 escribió:unbas, yo entiendo que lo tiene bloqueado pero desde el principio, es decir desde la primera programación con PonyProg, no le detecta el chip... es lo que me pasa a mi con los Stingers. Juraría que a mi ni me dejaba abrir la ventana de "config and security bits", aunque no me acuerdo. Si es así, no va a poder hacer nada, porque creo que el problema es precisamente ese, qeu SPIEN está deshabilitado, con lo que no podemos hacr nada con nuestro programador :(

Añadidos los fuentes del bootloader. El del psgroove llevará más tiempo, quiero ocar el makefile para poder generar todo desde el mismo.


Esto de no tener el mio a mano, me reconcome ..... yo juraria que el mio siempre ha estado como en la imagen ....
Asi es tal como dice c0d3m4st4 desde el inicio spien lo tengo bloqueado asi . Mala suerte para mi , una ultima pregunta hay alguna formar de armar algun dongle con algun pic o algo que me sirva para downgrade por lo menos y despues bueno usaria el neo este para los backup.


Gracias igual por interesarse en mi problema , saludos.
lea
normalmente está deshabilitado, no puedes marcarlo ni desmarcarlo, pero en un chip no bloquedado, aparece marcado, es decir, por defecto el PonyProg siempre lo graba, y no deja desmarcarlo por esto mismo que les ocurre a algunos dongles, que si lo desmarcas pierdes la programacion SPI

unbas escribió:Esto de no tener el mio a mano, me reconcome ..... yo juraria que el mio siempre ha estado como en la imagen ....


Tengo abandonados los PIC ultimamente, pero te recomiendo echar un ojo a este hilo

hilo_tutorial-ps3-pic-by-elsemi_1481641

Pero busca el esquema original de ElSemi, el resto tienen mil variaciones, y luego algunos han dejado de tener soporte.

Y si no, hazte este que aunque se metieron cambios no necesarios tanto en esquema como en código, al menos siguen dándole soporte, yo sigo con mis fuentes modificados a partir del original y el esquema inicial, no hay necesidad de hacer virguerías.

http://psgroopic.blogspot.com/

chacal01 escribió:Asi es tal como dice c0d3m4st4 desde el inicio spien lo tengo bloqueado asi . Mala suerte para mi , una ultima pregunta hay alguna formar de armar algun dongle con algun pic o algo que me sirva para downgrade por lo menos y despues bueno usaria el neo este para los backup.


Gracias igual por interesarse en mi problema , saludos.
lea
Señores, misión cumplida. Me he tenido que dar de hostias con el código para integrarlo todo en uno, pero ya está: PL3, Hermes y Hermes con spoof, todo en el mismo código, compilable por separado. Si algún día me da la vena, igual toco el Makefile para compilar del tirón, pero he acabado tan hasta los huevos de las variables en el makefile, que ya paso, se queda como está. Los que entendáis de esto veréis que hay mucha ñapa que he tenido que meter para integrar todo, pero bueno, teniendo en cuenta que llevo años sin tocar el C, creo que no está mal xD

Mis repos:

https://github.com/c0d3m4st4

Los hex:

http://www.sendspace.com/file/3sbste

Si hay dudas con la compilación, preguntad en el hilo.
c0d3m4st4 escribió:Señores, misión cumplida. Me he tenido que dar de hostias con el código para integrarlo todo en uno, pero ya está: PL3, Hermes y Hermes con spoof, todo en el mismo código, compilable por separado. Si algún día me da la vena, igual toco el Makefile para compilar del tirón, pero he acabado tan hasta los huevos de las variables en el makefile, que ya paso, se queda como está. Los que entendáis de esto veréis que hay mucha ñapa que he tenido que meter para integrar todo, pero bueno, teniendo en cuenta que llevo años sin tocar el C, creo que no está mal xD

Mis repos:

https://github.com/c0d3m4st4

Los hex:

http://www.sendspace.com/file/3sbste

Si hay dudas con la compilación, preguntad en el hilo.


Te pago un par de cervezas que te lo mereces !!! [sonrisa]
Esta vez si que te has salido c0d3m4st4!!!

Ayer se lo hice a mi dongle y todo perfecto y a la primera siguiendo tu tutorial. Primero le metí el bootloader y después desde el USB le metí el Hermes 4b y funcionando perfectamente.

Ahora he notado que cuando está funcionando, el led verde está encendido pero el rojo también con una intensidad muy pequeña. No es que me importe ni mucho menos, lo digo como anécdota.

Un saludo [bye] [bye]
Me las tomaré a tu salud :) Gracias colega!

unbas escribió:Te pago un par de cervezas que te lo mereces !!! [sonrisa]


Sip... me he fijado antes adaptando el clon a una de las carcasas de los stingers, que pasaba de hacer la virguería tuya para adaptar el clon. Lo que no sé es si pasa en el Neo, luego lo miro, porque ese como lo metía montado del todo y la luz es tan flojita... El led rojo luce mínimamente pero luce... me pregunto por qué. Echaré un vistacillo un día de estos a las funciones de los leds, a ver que pasa, que ahora estoy liado adaptando cambios para el código original de ElSemi que uso yo para mis PIC, y que tenía abandonado desde hace bastante... se ve que le he cogido gustillo a esto xD Lo malo es que ya se me han acabado las vacaciones, y el lunes vuelvo al curro... que puto asco por dios!!! :\

LeiSure escribió:Esta vez si que te has salido c0d3m4st4!!!

Ayer se lo hice a mi dongle y todo perfecto y a la primera siguiendo tu tutorial. Primero le metí el bootloader y después desde el USB le metí el Hermes 4b y funcionando perfectamente.

Ahora he notado que cuando está funcionando, el led verde está encendido pero el rojo también con una intensidad muy pequeña. No es que me importe ni mucho menos, lo digo como anécdota.

Un saludo [bye] [bye]



Jeje... acabo de ver que han aceptado los cambios enviados para el psgrade en github xD Bueno más bien era el envío de una nueva "board". Antes estaba solo para los arduinos, y ahora han añadido la que mandé yo para los clones basados en el ATMega16A :) El rsto rulaba del todo... si saco ganas un día de estos, meteré lo del id aleatorio al psgrade.
c0d3m4st4 eres un genio!!! Disculpa pero estoy teniendo problemas con los .hex compilados los de hermes van pero cuando abro un juego con om si tiene disco dentro no lo carga aparece el icono del br insertado cuando lo saco si carga pero al intentar iniciarlo me salta un error. El único que va es el pl3 .
que juego ??

que raro, yo las pruebas que hice, tanto con disco como sin el me iban bien...

skameyon escribió:c0d3m4st4 eres un genio!!! Disculpa pero estoy teniendo problemas con los .hex compilados los de hermes van pero cuando abro un juego con om si tiene disco dentro no lo carga aparece el icono del br insertado cuando lo saco si carga pero al intentar iniciarlo me salta un error. El único que va es el pl3 .
Gt5, casthelvania y la hermandad ninguno iban intentare flashar en unos minutos nuevamente a ver como va. Otro problema que tenia y aun conservo es que no puedo instalar aplicaciones firmadas.
si tienes el killzone 2 prueba ese a ver si te va, que es con el que casi siempre he hecho las pruebas. De los que comentas solo tengo el castlevania, esta tarde lo intentaré probar. A que te refires con aplicaciones firmadas ?? PKG retail ?

skameyon escribió:Gt5, casthelvania y la hermandad ninguno iban intentare flashar en unos minutos nuevamente a ver como va. Otro problema que tenia y aun conservo es que no puedo instalar aplicaciones firmadas.
no no tengo killzone 2 castlevania solo me corre en hermes v3 y por supuesto en PL3 todos funcionan bien hasta ahora . Con el hermes v4B generado con payloadinjector funcionaban todos pero no podia instalar las aplicaciones firmadas por ejemplo la actualizacion para poder correr AC hermandad me tiraba este error 80029567 solucione con el programa para instalar demos PSN Demo Installer. Ahora intente instalar el OM firmado y me tira el mismo error con PL3 y con los demas.
Para ser mas especifico los juegos no son asignados a la imagen del BR si colocas un disco en mi caso haze cargas el backup que quieres correr cuando vas a la imagen sigue apareciendo haze si saco el disco e intento cargar de nuevo el backup aparece pero cuando intento correrlo me salta el error . No se ven ni las animaciones cuando te colocas para cargar el backup como que los archivos PARAM.SFO estuvieran dañados o algo asi el error que me tira cuando lo ejecuto es este 8001003A.
Mi dongle es el clon del jail segui todos los pasos al pie de la letra y no hubo ningun error .
colega, tienes razón... me toca revisar el código. Hace cosas raras al menos el hermes con spoof 3.55 que es lo único que he podido probar :\

bueno, tras un vistazo rápido, la cosa no es grave, ya que el código original funciona bien, debí meter la gamba en la integración de PL3, y Hermes en el mismo fuente... hasta el domingo no creo que pueda mirarlo... ya os contaré... que putada coño ! :(

skameyon escribió:no no tengo killzone 2 castlevania solo me corre en hermes v3 y por supuesto en PL3 todos funcionan bien hasta ahora . Con el hermes v4B generado con payloadinjector funcionaban todos pero no podia instalar las aplicaciones firmadas por ejemplo la actualizacion para poder correr AC hermandad me tiraba este error 80029567 solucione con el programa para instalar demos PSN Demo Installer. Ahora intente instalar el OM firmado y me tira el mismo error con PL3 y con los demas.
Para ser mas especifico los juegos no son asignados a la imagen del BR si colocas un disco en mi caso haze cargas el backup que quieres correr cuando vas a la imagen sigue apareciendo haze si saco el disco e intento cargar de nuevo el backup aparece pero cuando intento correrlo me salta el error . No se ven ni las animaciones cuando te colocas para cargar el backup como que los archivos PARAM.SFO estuvieran dañados o algo asi el error que me tira cuando lo ejecuto es este 8001003A.
Mi dongle es el clon del jail segui todos los pasos al pie de la letra y no hubo ningun error .
gracias admiro mucho tu trabajo has hecho historia con los dongles que eran un ladrillo. Por el tiempo no te preocupes debemos saber esperar y lo importante es que el PL3 rula bien. De nuevo muchas gracias por todo tu trabajo.
arreglado, me había dejado el último estado en la parte correspondiente al psgroove de hermes sin poner :O Lo raro es qeu funcionara algo xD Cualquier cosilla que os encontréis avisadme.

http://www.sendspace.com/file/xg82y3

skameyon escribió:gracias admiro mucho tu trabajo has hecho historia con los dongles que eran un ladrillo. Por el tiempo no te preocupes debemos saber esperar y lo importante es que el PL3 rula bien. De nuevo muchas gracias por todo tu trabajo.
No funciona comienza a parpadear el led rojo sin mas !

[quote="c0d3m4st4"]arreglado, me había dejado el último estado en la parte correspondiente al psgroove de hermes sin poner :O Lo raro es qeu funcionara algo xD Cualquier cosilla que os encontréis avisadme.

http://www.sendspace.com/file/xg82y3
aquí si funciona...

skameyon escribió:No funciona comienza a parpadear el led rojo sin mas !

c0d3m4st4 escribió:arreglado, me había dejado el último estado en la parte correspondiente al psgroove de hermes sin poner :O Lo raro es qeu funcionara algo xD Cualquier cosilla que os encontréis avisadme.

http://www.sendspace.com/file/xg82y3
Si funciona al parecer me había bajado el archivo corrupto o algo así baje otra vez y rulo ! Gracias .
693 respuestas
110, 11, 12, 13, 14