Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ps5-uart — 用于与 PlayStation 5 EMC 和 EFC 交互的接口 | Kitploit
工具/GitHubGitHub/symbrkrs/ps5-uart
嵌入式系统安全漏洞利用硬件黑客硬件安全Payload 开发
GitHubsymbrkrs/ps5-uart

ps5-uart

用于与 PlayStation 5 EMC 和 EFC 交互的接口

查看仓库
7612213天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

靠近 salina 的 24 针排针(EDM-010)

root@kitploit:~
emc header
 1  5v
 2  5v
 3  gnd
 4  gnd
 5  emc gpio a1. 在 emc 启动时拉低会导致 emc rom 进入 uart shell @ 460800
 6  uart rx emc 115200
 7  uart tx emc 115200
 8  3v3,当 emc 复位时变为低电平
 9  0v?
10  gnd
11  titania uart0 tx(efc 固件:460800,eap 固件:691200)
12  titania uart0 rx(efc 固件:460800,eap 固件:691200)
13  titania uart1 rx(bootrom:460800,apu:230400)
14  titania uart1 tx(bootrom:460800,apu:230400)
15  gnd
16  emc gpio c5("GPI SW"(仅在 devif_det# 激活时使用))
17  0v?
18  5v?
19  emc gpio a49(devif_det#)
20  emc gpio a27。主电源开关
21  i2c data(i2c_bus_4)
22  i2c clock(i2c_bus_4)
23  gnd
24  emc reset#

i2c_bus_4 主要包含电源管理相关器件:
(7 位地址,400khz)
1f      pca9557_gpioexpander    CP/开发板专用
2c      ad5272_nand             titania nand
2e      ad5272_g6_2             gddr6
2f      ad5272_g6_1             gddr6
51      rt5127_pmic             titania pmic
58      ds80pci102_redriver
64      rt5069_pmic             salina pmic。在 ps5 上实际为 rt5126(EDM-010)或 da9081(EDM-020)

emc gpio a 4,5,6,7(cs0:efc),8(cs1:floyd) - emc-efc spi 总线(与 floyd 共享)

emc gpio a16 连接到 rt5126 引脚 13/rt5127 引脚 44。与 pg2 一起置高

emc gpio a29 - efc reset#
emc gpio a30 - titania 启动模式(0:nand,1:uart)
    要修补掉 emc 的 efc irq 处理程序:emc.fcddr_write(0xa0113200, bytes.fromhex('7047'))
        防止 eventflg 8 被发送到任务
    uart 启动位于 uart1 @ 460800。
    已知命令:
        info:从 efc 打印 "t2.0.100.041\nEC5E98BF84CC.C.1",从 eap 打印 "t2.0.100.043\nEC5E98BF84CC.C.1"
        down:进入 xmodem1k/crc
            当 hdr.cpu 为 0x99 时返回 0x03060000
        run:(签名校验/解密?)下载的数据并执行
            如果未先执行 down 则返回 0x030B0000
            如果传入完全无效的数据则返回 0x06020000
            如果 hdr.cpu 为 4 则返回 0x06020001。奇怪!!
            如果 hdr.cpu 不在 (1,2,4) 中则返回 0x010100xx。xx 为 hdr.cpu 值(可能是通用的"无效值"错误码)
    未知命令返回 0x030D0000
    错误会被记录到 titania spi 的 "fw0" 区域
        注意:读取 spi 似乎会杀死 rom
emc gpio a31 - titania cpu 选择(0:efc,1:eap)
emc gpio a38 - efc 到 emc 的命令 irq(emc 在 efc 从复位释放后等待其被触发)

rt5126 - rt5127 连接
13      44  (emc gpio a16)
14      45
15      46

titania rom 错误码

uart 上的错误码格式为:

root@kitploit:~
位
31-28       cpu 来源
27-16       错误主码
15-0        错误子码

通常错误码的子码部分为违规值或例如要记录的寄存器值。

主码

root@kitploit:~
0x001   无效的 rom 校验和高位(命令 1)
0x002   无效的 rom 校验和低位(命令 1)
0x004   无效的 ipcfifo src/dst cpu(读取)
0x006   无效的 ipcfifo src/dst cpu(写入)
0x007   无效的 ipcfifo 寄存器组索引
0x008   ipcfifo 消息长度过大(读取)
0x009   ipcfifo 消息长度过大(写入)
0x011   DFSR
0x012   IFSR
0x013   ADFSR 高位
0x014   ADFSR 低位
0x015   AIFSR 高位
0x016   AIFSR 低位
0x017   DFAR 高位
0x018   DFAR 低位
0x019   IFAR 高位
0x01a   IFAR 低位
0x201   期望 ipcfifo 0x55
0x202   未知的 ipcfifo 命令
0x203   无法回复命令 1(校验和)。只有在 src/dst cpu 无效时才可能发生。
0x204   子码 0:无法读取跳转地址。子码 1:无法确认跳转地址。
0x205   无法确认命令 4,或 wfi 被唤醒。
0x206   (子码 0)__stack_chk_fail
0x207   (子码 3)__stack_chk_fail
0x30E   子码 1:等待向 uart1 写入字节超时

来自 bootrom 的代码

root@kitploit:~
0x101   无效的 hdr.cpu 字段值。子码为违规值。
0x306   尝试 "down" 具有 hdr.cpu=0x99 且其他字段无效的镜像
0x30B   在没有有效 "down" 状态的情况下执行 "run"
0x30D   未知的 uart 命令
0x602   镜像验证失败。子码 0:efc/eap,子码 1:bcm

rom ipcfifo 路由

rom 仅使用 6 个 ipcfifo 组(cpu0 <-> 其他)。固件使用 12 个(全部 <-> 全部)

root@kitploit:~
src dst bank
    1   1
    2   3
    3   5
1       0
2       2
3       4

即

root@kitploit:~
bank
0       1 -> 0
1       0 -> 1
2       2 -> 0
3       0 -> 2
4       3 -> 0
5       0 -> 3

rom ipcfifo 命令

cpu 1-3 处理:

root@kitploit:~
1   校验和验证自身 rom
2   设置 SCTLR.V=0 并跳转到地址
4   wfi(如果被唤醒,ipcfifo 命令分发会继续运行)

pico 接线

root@kitploit:~
pico        emc header
1           6
2           7
3           4
4           5
5           24
11          12
12          11

emc reset# 用于检测存活状态并在崩溃时复位 emc。

pico 上的按钮会将其复位到刷写模式。

注意:如果你只需要访问 EMC,可以使用靠近 bt/wifi 模块的连接器:
emc_header_dupe_near_wifi
(标记与上述 "emc header" 引脚排列相关)

主机 PC 设置

如果设置了 ENABLE_DEBUG_STDIO cmake 选项,cdc 接口 0 将被 pico sdk 的 stdout/stdin 占用。标准为 115200 波特率 8n1。可用于调试 pcio 固件。

其他接口为 emc 和 titania。emc 的 uart 端口设置(cdc 线路编码)会被忽略 - pico 会以正确方式设置实际的 uart。对于 titania,波特率可从主机配置。

注意:
emc 将 \n 视为命令结束符(可配置)。回显输入
efc 将 \r 视为命令结束符。对输入 \r 回显 \r\n

salina(第一接口)

emc 接口在 pico 上是行缓冲的。pico 负责校验和。只需以 <cmd> [args..]\n 的形式发送普通的 umcd 命令即可。发送到主机 PC 的此接口上的所有数据都会被帧化,以便更容易编写客户端代码(参见 Result::to_usb_response)。

目前有以下特殊命令:

titania(第二接口)

这只是原始 uart,数据在主机和 titania 之间按字节可用性直接传递。

下载工具
cmd说明
unlock在需要时执行 emc 漏洞利用
picoreset将 pico 复位到刷写模式
picoemcreset通过 emc reset# 复位 emc
picoemcrom将 emc 复位进入/退出 rom(uart 引导加载程序)模式并按需配置 pico
picochipconst安装用于某个 emc 硬件版本的常量
picofwconst安装用于某个 emc 固件版本的常量/shellcode