» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[新闻] 开源 PSJailbreak Clone

http://ps3jailbreak.com/?p=261

Homebrew Devs, Mathieulh and Team Release Open Source PSJailbreak Clone
作者:admin

As reported earlier, Mathieulh and his team of devs have successfully cloned the PSJailbreak.  Today they have updated their PS3 Wiki site with the full open source exploit code  http://github.com/psgroove/ In lamens terms this will be enough for the average user to replicate the psjailbreak. Let the floodgates open!


开源了


本帖最近评分记录
  • sfczhw 激骚 +1 Rated by wap for mark 1 Point(s) 2010-9-2 12:44

TOP

这个的意义在于,马上就会有铺天盖地的山寨,而且价格不会高于200



TOP

at90 可不是30块能买的,又少又贵

等原理文出来,我回头用cypress的芯片做一个


TOP

没仔细看

好像是一个有限状态机,模拟一个6口hub然后6个设备插插拔拔,还有延时,似乎

另外我没用68013做过复合设备,得看看资料怎么说的

TOP

从目前的公开资料可以推断,这是PS3 系统USB栈被异常USB描述符buffer overflow,导致了shell code attack

所以完全可以用系统升级来修补

TOP

商品开发板,自然带各种外设,在这里都是用不到的

TOP

早起瞄了几眼USB 集线器的描述符和配置资料还有传输控制字,挺简单

晚上回家开始试着移植一下,毕竟68013要便宜也更容易买到

TOP

抽空把descriptor.h作了简单的注释,只有前面几个写了,后面的类推:

const uint8_t PROGMEM HUB_Device_Descriptor[] =
{
        0x12,                //bLength                        描述符大小.固定为0x12
        0x01,                //bDescriptorType        设备描述符类型.固定为0x01
        0x00, 0x02,        //bcdUSB                        USB 规范发布号.表示了本设备能适用于那种协议,如2.0=0200,1.1=0110等
        0x09,                //bDeviceClass                类型代码(由USB指定)。当它的值是0时,表示所有接口在配置描述符里,并且所有接口是独立的。当它的值是1到FEH时,表示不同的接口关联的。当它的值是FFH时,它是厂商自己定义的
        0x00,                //bDeviceSubClass        子类型代码(由USB分配).如果bDeviceClass值是0,一定要设置为0.其它情况就跟据USB-IF组织定义的编码
        0x01,                //bDeviceProtol                协议代码(由USB分配).如果使用USB-IF组织定义的协议,就需要设置这里的值,否则直接设置为0。如果厂商自己定义的可以设置为FFH
        0x08,                //bMaxPacketSize0        端点0最大分组大小(只有8,16,32,64有效)
        0xAA, 0xAA,        //idVender                        供应商ID(由USB分配
        0xCC, 0xCC,        //idProduct                        产品ID(由厂商分配).由供应商ID和产品ID,就可以让操作系统加载不同的驱动程序
        0x00, 0x01,        //bcdDevice                        设备出产编码.由厂家自行设置
        0x00,                //iManufacturer                厂商描述符字符串索引.索引到对应的字符串描述符. 为0则表示没有
        0x00,                //iProduct                        产品描述符字符串索引.同上
        0x00,                //iSerialNumber                设备序列号字符串索引.同上
        0x01,                //iNumConfiguations        可能的配置数.指配置字符串的个数
};

const uint8_t PROGMEM HUB_Config_Descriptor[] = {
        // Config
        0x09,                //bLength                                描述符大小.固定为0x09
        0x02,                //bDescriptorType                配置描述符类型.固定为0x02
        0x19, 0x00,        //wTotalLength                        返回整个数据的长度.指此配置返回的配置描述符,接口描述符以及端点描述符的全部大小
        0x01,                //bNumInterfaces                配置所支持的接口数.指该配置配备的接口数量,也表示该配置下接口描述符数量
        0x01,                //bConfigurationValue        作为Set Configuration的一个参数选择配置值
        0x00,                //iConfiguration                用于描述该配置字符串描述符的索引
        0xe0,                //bmAttributes                        供电模式选择.Bit4-0保留,D7:总线供电,D6:自供电,D5:远程唤醒
        0x32,                //MaxPower                                总线供电的USB设备的最大消耗电流.以2mA为单位
        // Interface
        0x09,                //bLength                                描述符大小.固定为0x09
        0x04,                //bDescriptorType                接口描述符类型.固定为0x04
        0x00,                //bInterfaceNumber                该接口的编号
        0x00,                //bAlternateSetting                用于为上一个字段选择可供替换的位置.即备用的接口描述符标号
        0x01,                //bNumEndpoint                        使用的端点数目.端点0除外
        0x09,                //bInterfaceClass                类型代码(由USB分配)
        0x00,                //bInterfaceSunClass        子类型代码(由USB分配).
        0x00,                //bInterfaceProtocol        协议代码(由USB分配).
        0x00,                //iInterface                        字符串描述符的索引
        // Endpoint (interrupt in)
        0x07,                //bLength                        描述符大小.固定为0x07
        0x05,                //bDescriptorType        接口描述符类型.固定为0x05
        0x81,                //bEndpointType                USB设备的端点地址.Bit7,方向,对于控制端点可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端点号
        0x03,                //bmAttributes                端点属性.Bit7-2,保留.BIt1-0:00控制,01同步,02批量,03中断
        0x01, 0x00,        //wMaxPacketSize        本端点接收或发送的最大信息包大小
        0x0c,                //bInterval                        轮训数据传送端点的时间间隔.对于批量传送和控制传送的端点忽略.对于同步传送的端点,必须为1,对于中断传送的端点,范围为1-255
};

const uint8_t PROGMEM HUB_Hub_Descriptor[] = {
        0x09,                //bLength                                描述符大小.固定为0x09
        0x29,                //bDescriptorType                接口描述符类型.固定为0x29 hub
        0x06,                //bNbrPorts                                Hub接口数量 这里是6口
        0xa9, 0x00,        //
        0x32,                //bPwrOn2PwrGood                100ms
        0x64,                //bHubContrCurrnet                200mA
        0x00,                //bRemovablePortFlags        bit        可移出标志,0表示都能拔掉
        0xff,                //bPwrCtlPortFlags                兼容性,2.0设置为全1
};

TOP

发新话题
     
官方公众号及微博