¿Algún experto en la programación de drivers USB?

Estaba yo pensando en nuevas maneras de exploitear la PSP y se me ha ocurrido una que pienso que podría funcionar, a ver qué os parece:

La idea se basa en realizar un exploit por USB, utilizando algún juego que tenga esta función. Yo tengo el Daxter, que permite usar la conexión USB para conectarlo con el JAK X de PS2 y desbloquear algunos secretos. Ignoro si hay más juegos con conexión USB. El caso es que se me ha ocurrido que si se conecta la PSP con el juego a un PC en lugar de una PS2 y se implementa un driver, tal vez sería posible enviarle paquetes de datos al juego que provoquen un desbordamiento y nos permitan ejecutar código incluso en las 2.7. La teoría creo que es bonita, aunque ahora llegan los problemas:

1.- Se requiere de alguien con muchos conocimientos, que sepa programar un driver USB.
2.- Tal vez incluso sea necesario estudiar el protocolo con que se comunican los juegos (Daxter y J&D X). Para ello sería necesario utilizar un analizador de protocolos USB, los cuáles son extremadamente caros y muy probablemente nadie del foro tenga acceso a uno. Por suerte yo creo que esto puede que no sea necesario.

Yo ya he probado a enchufar la PSP al PC con el Daxter puesto, y al darle a la opción para conectar con la PS2, el PC detecta la PSP como "PSP Type D" y pide un driver. Al no tener el driver no se puede hacer nada :(.

También he ojeado el VID y PID. Cuando conectas la PSP utilizando el modo USB para pasar archivos, se identifica con un VID=0x054C y un PID=0x01C8. Sin embargo al conectarla con el Daxter, el VID sigue siendo el mismo pero el PID cambia: PID=0x01CB.

A ver si hay suerte y tenemos a algún experto en USB que pueda opinar sobre la posibilidad del exploit.
La idea no es mala, pero de todos modos si necesitaras de un PC para utilizar el exploit perderías la portabilidad :S (Salvo que esto, claro está, llevará a otro exploit...)
Cierto que la portabilidad no sería ninguna maravilla, pero aún así seguro que todos los poseedores de una 2.70 lo agradeceríamos. Además tal vez podría hacer uno el exploit en casa, arrancar algún emulador, poner la consola en suspensión y luego llevársela y jugar con ella sin necesidad de PC (hasta que quiera cambiar a otra cosa).

Y bueno, nunca se sabe si podría valer para hacer algo más gordo ;).

Venga, a ver si algún entendido en el tema de los drivers se anima y llegamos a algo...
El Crash Tag Team Racing tambien tiene conexion USB a PS2
He hecho una búsqueda en Google de "PSP Type D" y he descubierto que como era de esperar, no soy el único al que se le ha ocurrido esta idea :p. He encontrado un hilo al respecto en el foro de pspupdates. El problema es que parece ser que ahí nadie sabe tampoco programar drivers...

Mencionan algunos juegos que también tienen conexión USB con PS2, por si alguno los tiene y quiere probar, por ahora que yo conozca están:

- Daxter
- Crash Team Racing
- Winning Eleven 9
- Socom

Creo que mencionaban alguno más en el hilo, como algún Metal Gear, pero no se aclaraban con si tenía o no conexión.

Venga, alguien tiene que haber que nos pueda echar una mano, esto puede ser importante, no lo podemos dejar pasar sin investigar ;). Además como hay varios juegos que soportan esto, podría abrir muchas más posibilidades para exploitear la PSP sin tener que estar limitados a un único juego.
no creo que eso sea posible llevarlo a cabo pero bueno... yo no soy programador...

Salu2
CLu$
clus escribió:no creo que eso sea posible llevarlo a cabo pero bueno... yo no soy programador...

Salu2
CLu$


Di que sí, ese es el espíritu XD. Al menos por intentar no se pierde nada.
Tengo entendido que la libreria usb de la PSP no permite intercomunicacion con la flash de la PSP, claro que si mientras esta el juego activo te permite desbloquear "secretos"... tambien supongo que eso sera a un nivel muy alto y que trabaja con la RAM y poco mas.

En fin, es una idea [360º]

Salu2
De todas maneras si yo detectara un xploit seguro, no lo diria hasta que saliera la 3.0 y asi tener mas utilidades que la 1.5, seria el doble [sati] .

Si averigüarais un xploit, yo no lo diria la verdad esperaria, ya que estos de sony son mas rapidos cambiando los firmwares, sino mirad lo que paso con la 2.01.

Saludos!
Inotalas escribió:Tengo entendido que la libreria usb de la PSP no permite intercomunicacion con la flash de la PSP, claro que si mientras esta el juego activo te permite desbloquear "secretos"... tambien supongo que eso sera a un nivel muy alto y que trabaja con la RAM y poco mas.

En fin, es una idea [360º]

Salu2


Mi idea es provocar un desbordamiento de buffer o bien en el driver USB de la "PSP Type D" (que no creo que se pueda, pero bueno) o bien en el juego (que creo que es más probable), y con esto ejecutar código.

He probado una cosa que aunque no me lleva a ninguna parte, creo que es bastante interesante. He modificado el fichero "usbstor.inf", añadiendo el VID y PID de la "PSP Type D", para que cuando se inserte la PSP se cargue el driver de "Dispositivo de almacenamiento masivo". Pues bien, Windows la reconoce, instala el driver e intenta inicializarlo, tras lo cuál falla y en el Daxter sale un mensaje de error. He hecho una captura de paquetes por el USB utilizando una versión de prueba del Source USB y este es el descriptor de configuración que la "PSP type D" devuelve:

Imagen

Se puede ver que la clase es "Vendor Specific", así que efectivamente es distinto de la clase de "Dispositivo de almacenamiento masivo", y por tanto no parece que se trate de un simple acceso a la tarjeta de memoria (como muchos habéis dicho).

Después de esto, el PC manda un URB SELECT_CONFIGURATION (con la configuración que la PSP pasó), a lo que esta responde correctamente con este paquete:

Imagen

Se aprecia que esta configuración utiliza 3 pipes (aparte del de control), un pipe tipo Bulk de entrada, otro de salida y un pipe tipo Interrupt de entrada. Los "dispositivos de almacenamiento masivo" únicamente utilizan 2 pipes de tipo Bulk además del de control.

Después de este URB, el PC envía uno de selección de clase (0x21) que supongo que será la de "dispositivo de almacenamiento masivo", lo cuál no le gusta a la PSP que bloquea el pipe de control (STALLED) y se desconecta del puerto.

Llegado a este punto, creo que no puedo seguir investigando hasta que encuentre a alguien que sepa programar drivers USB, pero creo que la cosa pinta bien.
doragausu: ¿Cómo se activa este modo en el Daxter? Yo podría echar un vistazo también, aunque me da que esto no va a ninguna parte en cuanto a tocar la flash, porque los juegos se ejecutan siempre en user mode :(

Otra cosa sería ejecutar en plan GTA, pero como dicen por ahí arriba, la portabilidad no sería ninguna maravilla xD
Por si sirve de algo el Metal gear Ac!d tb tiene cosas con el MGS3 de ps2 via USB
melado escribió:doragausu: ¿Cómo se activa este modo en el Daxter?

Cargas una partida, le das a la pausa (START) luego a SECRETOS y luego a CONECTARSE A JAK X.
Si, pinta muy bien.

Estas haciendo eso en Linux?

Un saludo y animo.
Joder, buena investigacion...

Sigue asi, que yo me quedao a cuadros!!
No se si llegara a puerto o no, pero lo importante es que hay gente que aun se anima a trabajar en lugar de criticar, etc.

Animo y suerte. ;-)
Los datos son interesantes, claro que es de suponer que aunque el PC le envie una respuesta que a la PSP le guste, esta esperara recibir datos de la supuesta transaccion con la PS2, otro dato a tener en cuenta es si la PS2 lleva incluida la intercomunicacion con la PSP o si por lo contrario, la PSP intenta detectar si el juego que hay en la PS2 es el JAK... es decir, si la PSP maneja todo o si simplemente se queda a la espera de recibir datos...

A ver si alguien que tenga mas conocimientos en este aspecto puede desvelar algo... encontrar una vulnerabilidad en el modulo del USB seria cojonudo.

Salu2
Alomejor la ps2 tiene tb otro driver de reconocimiento del usb.

En estos casos es cuando la scene de ps2 y la de psp deberian investigar juntas [+risas]
dudo mucho que sony en el momento de lanzar PS2 tubiera en cuenta la PSP... Así que bajo mi punto de vista la PS2 solo devuelve una instrucción para "confirmar" la conexión. A partir de ahí la PSP se lo trabaja todo
Creo que debe tratarse de un protocolo "standard" por asi decirlo...
En ese caso, deberia ser "mas" facil... pero vamos, nada de coser y cantar, que averiguar el supuesto protocolo estandar tiene miga.

Bueno, ya se vera.

Salu2
No es un protocolo estándar. En la captura que he puesto en la 1ª página, el descriptor de configuración devuelve un código de clase del tipo "Vendor Specific" (digamos que las clases son algo así como los progocolos). Los protocolos estándar sin embargo devuelven un código de clase conocido (por ejemplo el de HID, el de Mass Storage, el de Printer, etc...). A diferencia del que la PSP utiliza para gestionar la tarjeta de memoria (que es de tipo Mass Storage), este protocolo es propietario de Sony.

Cuando Sony sacó la PS2 efectivamente no debía de tener la PSP en mente, pero con el desarrollo de la PSP seguramente habrá desarrollado un driver USB para comunicar ambas consolas. Ese driver la PSP posiblemente lo lleve en el firmware, mientras que en la PS2 seguramente que el driver lo llevan incorporado los propios juegos.

¿Alguien tiene acceso a los SDKs oficiales de Sony para PS2 y PSP? Si alguien los tiene, le agradecería que echase un vistazo a los APIs del USB y contase a ver qué encuentra. Me interesa sobretodo el API de la PSP, pero tal vez el de la PS2 nos pueda dar información importante también.
a ver... es una buena idea (vamos, totalmente viable)...

puede que sea una chorrada...

cuando busca el driver para la psp en modo D, habeis mirado en la lista de dispositivos del programa everest? es como el Sisoft sandra, que, mediante las id's del hardware se sabe qué es el dispositivo, a quien pertenece y demás.


Un saludo
Y digo yo...

El juego Jak X es un juego bastante actual, de octubre de 2005 según IGN, con lo que ya tenían en cuenta a la PSP.

El Gran Turismo 4 trae unos drivers para impresoras Epson, para imprimir las capturas del modo foto. ¿Esto no podría ser lo mismo? Es decir, que los drivers estuvieran en el propio Jak X... El GT4 de hecho tenía una carpeta llamada EPSON con algunos IRX dentro, al estilo del ya famoso USBD.IRX para Mass Storage, por ejemplo.

Ese USBD.IRX lo utilizan programas como el KeyLauncher y similares. ¿No es posible que haya algo similar? Yo no tengo el Jak X para mirar.
Cuando decia que era un protocolo standard, me referia a que "Vendor Specific" es un standard fuera del standard, o dicho de manera mas clara, Sony se acoge a la normativa USB que contempla ese protocolo y que no se ha montado su propio protocolo con el USB.

vaya lio. Si descubro algo te comento doragasu.

Saludos
Oye y si se coge un iso del jak x y se miran los archivos que tienen que ver con la psp digo yo que estaria ahi no????????
Bueno a ver si esto llega a buen puerto lo mas interesante seria un downgrade, creo yo, porque lo mejor de la psp es su portabilidad y si se la quitas... [+risas]
Gandaldorf escribió:Bueno a ver si esto llega a buen puerto lo mas interesante seria un downgrade, creo yo, porque lo mejor de la psp es su portabilidad y si se la quitas... [+risas]


No se quita la portabilidad, tu imaginte que la suspendes con el irshell, de todos modos se haria algo, no sufras.
Bueno, se han dicho un montón de cosas, vamos a ver si no me dejo nada en el tintero.

Sobre los que comentan que los drivers pueden estar en el JAK X, pues sí, eso pienso yo también, de hecho en mi anterior post ya dije claramente que los drivers de seguro van en el juego. Si alguien lo tiene (yo tampoco lo tengo) a ver si puede comprobarlo. El problema es que estos drivers no son utilizables en un PC, ya que están compilados para PS2. Otra cosa sería hacer que el exploit se hiciese con una PS2 en lugar de con un PC. De ese modo *tal vez* no habría que hacer el driver USB, ya que *tal vez* se podría usar el del juego, sin embargo tendría varios inconvenientes:
1.- Supongo que hay más gente con PC que con PS2 chipeada o "exploiteada".
2.- Desarrollar para PS2 es más complicado que desarrollar para PC, y menos gente sabe.
No obstante la idea es buena, y si alguien sabe programar para PS2 y sabe cómo usar el driver, creo que podría ser una manera estupenda de empezar a intentarlo.

aGGeLoS, no creo que ese programa sepa nada de la PSP Type D, porque para ello primero Sony debería hacer público algún driver, cosa que de seguro no ha ocurrido ni ocurrirá.

Refused, el protocolo que utiliza es un protocolo propietario de Sony que funciona sobre el protocolo USB. Es algo así como si yo me hago un protocolo de red que funcione sobre TCP/IP. TCP/IP está muy bien documentado, pero el protocolo que yo haga, sólo yo lo conozco. Pues aquí igual, USB está documentado, pero el protocolo que Sony se ha hecho para comunicar la PS2 con la PSP es un misterio para mí.

Gandaldorf, esto si saliese, podría tener ventajas muy importantes sobre el downgrade, ya que permitiría utilizar homebrewn sin tener que renunciar a los juegos recientes que sólo funcionan en los nuevos firmwares.
Hay bajo nivel y alto nivel, si se pretende programar un driver especifico para un dispositivo concreto se usa el bajo nivel, las funciones, si PSP se acoje como he dicho antes a USB no deberia haber problema, evidentemente Sony no distruira las API de alto nivel...

Bueno, seguire investigando el tema...

Saludos
Soy nuevo por aki, pero me parece muy interesante esto, he de decir que estais avanzando mucho, ojala se consiga algo, pero creo que deveriamos olvidar programar el usb de la PS2 porque ya es meterse en demasiados lios. Pero animo, investigare haber hasta donde soy capaz de llegar.
Y no seria posible conseguir informacion sobre el driver usb de la ps2 conectando esta al pc?
Otra cosa de la cual hablo sin conocimiento... seria posible crear algo tipo action replay en pc que conectado a la psp mediante usb (usando el daxz 0.62) pudiese enviar informacion al juego daxter (creyendo este que es el juego de ps2) y provocar asi un overflow? Y mediante un emulador de ps2 conectado a la psp via usb?

Repito que no tengo ni idea de informatica
Webon_PSP escribió:Y no seria posible conseguir informacion sobre el driver usb de la ps2 conectando esta al pc?


No es posible, en USB hay 2 tipos de aparatos: Host y Device. Un Host siempre se conecta con un Device, no puedes conectar Host con Host ni Device con Device directamente. La PS2 es un Host y el PC es otro Host. La PSP es un Device. Hay una excepción a todo esto, que son los dispositivos USB "On the go", pero ni la PS2 ni los PCs son dispositivos "On the go".

Webon_PSP escribió:Otra cosa de la cual hablo sin conocimiento... seria posible crear algo tipo action replay en pc que conectado a la psp mediante usb (usando el daxz 0.62) pudiese enviar informacion al juego daxter (creyendo este que es el juego de ps2) y provocar asi un overflow?


No entiendo bien lo que quieres decir con esto, pero tiene pinta de que no, porque el daxz no se puede usar en PSPs que no sean 1.50.

Webon_PSP escribió:Y mediante un emulador de ps2 conectado a la psp via usb?


Desconozco si el PCSX2 emula los puertos USB, pero me parece poco probable. Si alguien puede verificarlo, que lo ponga.
doragasu escribió:Desconozco si el PCSX2 emula los puertos USB, pero me parece poco probable. Si alguien puede verificarlo, que lo ponga.

Poco factible. Con una búsqueda rápida aparecen dos plugins: el USB Null, inservible por razones obvias, y el USB Linuz, en fase de desarrollo y no muy utilizable (según esto).
Gracias por la info. Ya me imaginaba yo que iba a ser que no...
Holas

Me estoy fijando en el "DAXZISO Loader 0.62 RunUMD + mode USB" no puede ese programa ayudar a resolver dudas sobre el USB

Salu2

Ok gracias por la respuesta!
Lo del Action Replay era porque de algun modo afectaba directamente al juego en uso, creo yo que de la misma forma que el J&D de ps2 afecta al Daxter de psp, y podria ser util. (No se si existe un AR para psp, pero me suena que iba a salir uno). Entonces lo suyo seria hacer una modificacion en dicho AR (dicho asi parece facil, pero seguro que no) para que en vez de modificar el juego ejecutase codigo
Tengo alguna novedad:

He estado consultando con algun compañero de trabajo, uno de ellos me ha dicho que el tenia el mismo problema con un walkman de HD Sony, no se podia acceder a dicho HD sin el software especifico de Sony, me comento que el pudo esnifar el USB con SnoopyPro, es el mismo sniffer que se usa para usar la camara EyeToy como web cam en el PC...

Alguien con Daxter podria intentar mirar que tal snifando el puerto USB con el daxter?
Eso es lo que hice yo el primer día, primero probé con el Snoopy Pro y luego utilicé una versión de evaluación del SourceUSB (de SourceQuest), que es más completo y muestra más cosas. Las capturas que puse de hecho son del SourceUsb. El problema es que sólo con esnifar no vale, ahora hay que hacerse un driver con funcionalidad básica, que pueda dialogar con la PSP. Otro problema es que con el Snoopy o cualquier otro sniffer de este tipo, sólo se ve el proceso de enumeración, y no el protocolo propietario que usa el juego. Para poder ver el protocolo habría que utilizar un analizador de protocolos hardware, y estos cuestan una pasta gansa.

Lo del DAXZISO a ver si tengo tiempo y le echo un vistazo...
Como un millon de pelas... (el analizador)
Refused escribió:Como un millon de pelas... (el analizador)


También los hay bastante más caros :Ð

EDIT: He estado echando un vistazo al Dax ZISO y veo que utiliza el driver libusb. Es posible que se pueda utilizar. A ver si hay suerte. Le echaré un vistazo, si alguien que sepa programar para Windows se anima a echarme un cable que me mande un privado, que se me están ocurriendo algunas cosas.
Te refieres a drivers? Yo me dedico a programar en Windows, aunque no drivers... si te puedo servir de ayuda ya sabes...
Quiero insistir en la idea de Swimg, creo que muchas respuestas a lo que se esta comentando en este hilo puede estar en "DAXZISO Loader 0.62 RunUMD + mode USB"

Gracias por estar ahí ;)


Edito: es un hilo de carga de backups (no he puesto el enlace directo dado que he copiado/pegado del correo de Swing)
43 respuestas