Jump to content

PS5 Toolkit 0.3.0

¿Quieres enterarte al momento de las nuevas descargas? Síguenos en Twitter, Mastodon o Threads!

PS5 Toolkit es un conjunto de herramientas encadenadas que, partiendo de un bug en el motor JavaScript WebKit de la PS5, obtienen primitivas de lectura/escritura arbitraria en memoria, escalan al kernel, instalan un cargador de payloads persistente, y permiten ejecutar cualquier archivo .elf, .bin o .self en el hardware.

PS5 Toolkit.webp

Este proyecto **no es un exploit funcional**. Es un scaffold de investigación documentado.

Varios proyectos que circulan en la comunidad PS5 presentan código estructurado como este como exploits funcionales. No lo son, y este tampoco. La diferencia aquí es que documentamos exactamente qué falta y por qué, en lugar de ocultarlo.

Si un proyecto afirma ser un exploit WebKit funcional para FW 11.xx y no te muestra un vídeo ejecutándose en hardware real — asume que tiene los mismos huecos que este.**

El desglose completo de qué está roto y por qué está en [HONEST_LIMITATIONS.md](HONEST_LIMITATIONS.md).

Qué contiene realmente este proyecto

Un scaffold arquitecturalmente correcto y completo para una cadena de explotación basada en WebKit en PlayStation 5 firmware 11.xx. Cada módulo está implementado **excepto las piezas que requieren análisis binario de un dump real de FW 11.00**:

| Componente | Estado | Qué lo bloquea |
|---|---|---|
| `triggerWebKitBug()` |  TODO | Análisis del binario WebKit de FW 11.00 |
| `leakLibKernelBase()` |  TODO | Puntero GOT del binario WebKit de FW 11.00 |
| Todos los offsets de gadgets ROP |  `0x0` | Extracción de `libkernel_web.sprx` + ROPgadget |
| `_pipeRead8/Write8` |  Stubs vacíos | Layout de `pipe_buffer` del binario del kernel |
| `_ropMmap()` |  Devuelve `0x0` | Offset del gadget `mov [mem], rax` |
| Spin-wait en `pt.c` | ⚠️ No fiable | Offsets de `nanosleep`/`sched_yield` |
| Parser ELF64 (`elfldr.c`) |  Funcional | Sin dependencia de firmware |
| `int64.js` |  Funcional | Sin dependencia de firmware |
| Herramientas de host |  Funcional | Sin dependencia de firmware |
| Lógica del constructor ROP |  Correcta | Bloqueada solo por offsets que faltan |
| Lógica de escalada de kernel |  Correcta | Bloqueada solo por primitivas que faltan |

La causa raíz única de todo lo de esa tabla es la misma: **`offsets_1100.js` tiene cada valor crítico a `0x00000000`** porque esos valores requieren un dump de firmware desencriptado que este proyecto no tiene.

---

Correcciones técnicas vs. código previo en circulación

No hay JIT en el browser de PS5

El browser de PS5 lanza WebKit con `ENABLE_JIT=OFF`. No hay compilador JIT, no hay tier DFG, no hay tier FTL. Cualquier proyecto que describa un exploit de "DFG JIT type confusion" apuntando al browser de PS5 es técnicamente incorrecto por definición.

> Confirmado en el código fuente de PS4 en ps4-oss.com desde FW 6.00 en adelante.

SharedArrayBuffer está deshabilitado

`new SharedArrayBuffer()` lanza una excepción en el browser de PS5. Este proyecto usa objetos `ArrayBuffer` normales y `performance.now()` para temporización. No hay `Atomics` en ningún sitio.

No es V8

La PS5 usa JavaScriptCore (JSC), no V8. Las técnicas específicas de V8 — TurboFan, Liftoff, Sparkplug, layout del heap de V8 — son irrelevantes aquí.

  Lo que sí es correcto

  • Motor: JavaScriptCore (JSC), solo intérprete (LLInt)
  • Primitiva de explotación: corrupción de longitud/puntero de ArrayBuffer vía type confusion en JSC
  • Ejecución de código: solo ROP, gadgets de `libkernel_web.sprx`
  • Temporización: bucles delta con `performance.now()` / `Date.now()`
  • Arquitectura: FreeBSD AMD64 (Orbis OS)

---

Qué hace la cadena de explotación (cuando esté completa)

Partiendo de una type confusion en JSC (misma clase que CVE-2021-30889, activa en FW 11.x):

  1. R/W en userland — corromper el puntero del backing store de un ArrayBuffer → `read8`/`write8`
  2. Leak de base de libkernel — leer una entrada GOT en WebKit que apunta a libkernel
  3. Cadena ROP — cadena de gadgets vía pivote de stack en Web Worker, saltándose Clang CFI de borde directo
  4. Escalada al kernel — UAF umtx → truco del pipe para R/W de kernel → root → escape de jail
  5. Cargador persistente — inyección ptrace en `SceRedisServer` → listener TCP en puerto 9021
  6. Ejecución de payloads — enviar `.elf`/`.bin`/`.self` desde el PC, la PS5 lo ejecuta

---

Arquitectura

┌─────────────────────────────────────────────────────────────┐
│  PC HOST                         PS5 (FW 11.00 / Orbis OS) │
│                                                             │
│  host/server.py ─── HTTP :8000 ──► Browser WebKit          │
│       │                                  │                  │
│       │                           exploit/js/*.js           │
│       │                                  │                  │
│       │                           kernel.js                 │
│       │                           (kbase, R/W, root)        │
│       │                                  │                  │
│       │  ◄── fetch elfldr.elf ───────────┤                  │
│       │                           loader.js                 │
│       │                                  │                  │
│       │                           SceRedisServer            │
│       │                           └─ elfldr :9021           │
│       │                                                      │
│  tools/send_payload.py ─ TCP :9021 ──► fork() + exec        │
│  tools/listen_log.py   ◄─ UDP :9998 ── logs broadcast       │
└──────────────────────────────────────────────────────────────┘

Estructura del proyecto

PS5-Toolkit/
│
├── README.md                     ← Versión inglesa
├── README_ES.md                  ← Este archivo (Español)
├── HONEST_LIMITATIONS.md         ← Desglose detallado de qué está roto y por qué
│
├── docs/
│   ├── GUIDE_NONTECHNICAL.md     ← Para no desarrolladores (EN/ES)
│   ├── architecture.md           ← Descripción técnica profunda (EN/ES)
│   └── offsets_guide.md          ← Cómo encontrar offsets con Ghidra (EN/ES)
│
├── exploit/
│   ├── index.html                ← UI del exploit servida al browser de PS5
│   └── js/
│       ├── int64.js              ← Helpers de enteros de 64 bits           
│       ├── offsets_1100.js       ← Offsets FW 11.00 (todos a 0x0)         
│       ├── primitives.js         ← Stub triggerWebKitBug()                 
│       ├── rop.js                ← Stub leakLibKernelBase()                
│       ├── kernel.js             ← Lógica kernel  — stubs pipe R/W       
│       └── loader.js             ← Entrega ELF — gadgets que faltan        
│
├── elfldr/
│   ├── main.c                    ← Listener TCP :9021                      
│   ├── elfldr.c / elfldr.h       ← Parser ELF64/SELF/RAW                  
│   ├── pt.c / pt.h               ← Inyección ptrace   spin-wait          ⚠️
│   └── Makefile
│
├── host/
│   └── server.py                 ← Servidor HTTP                           
│
└── tools/
    ├── send_payload.py           ← Enviar payloads a la PS5                
    └── listen_log.py             ← Recibir logs UDP                        

Créditos

  • ChendoChap & Znullptr | Ejecución ROP en WebKit, análisis CFI en PS5
  • john-tornblom | ps5-payload-elfldr, ps5-payload-sdk
  • SpecterDev | PS5-IPV6-Kernel-Exploit, PSFree
  • sleirsgoevy | PoC original del bug WebKit |
  • idlesauce | Framework umtx2 webkit jailbreak
  • abc | PSFree 150b
  • shahrilnet & n0llptr | Implementación umtx lua

PS5 Toolkit es un proyecto encabezado por RastaFairy.


Que novedades incluye la versión 0.3.0

Released

Añadido

exploit/js/webkit_bug.js — nuevo módulo, 827 líneas

  • Implementación completa de triggerWebKitBug() basada en CVE-2023-41993 (confusión de tipos DFG JIT en JavaScriptCore).

  • Fase 1 — Heap spray: se han utilizado 0x800 ArrayBuffers de 64 bytes para poblar el montón (heap) del asignador de JSC y predecir la ubicación del objeto confundido.

  • Fase 2 — Objetos de confusión: se ha empleado el par confused/container con STRUCTURE_TRANSITION_COUNT = 3 transiciones de estructura controladas que activan la ruta vulnerable clobberize() en el compilador DFG.

  • Fase 3 — Calentamiento JIT: se han realizado 100 iteraciones de jitCompiledRead/Write para integrar la especulación de tipo "double" en el código DFG compilado.

  • Fase 4 — Activación y verificación: se ha roto el invariante de tipo; se han incluido hasta 3 reintentos automáticos con validación de rango de direcciones; se han verificado leakobj y fakeobj con una prueba de ida y vuelta antes de retornar.

  • Documentación y justificación de constantes de ajuste: JIT_WARMUP_ITERS, SPRAY_COUNT, SPRAY_AB_SIZE, STRUCTURE_TRANSITION_COUNT, FAKE_AB_SIZE.

  • Definición de jitCompiledRead y jitCompiledWrite en el ámbito global (no como cierres o closures) para asegurar una compilación DFG correcta.

  • Implementación de leakobj(obj) y fakeobj(addr) con explicación integrada del NaN-boxing de JSC y la ruta de lectura no-JIT utilizada para fakeobj.

  • Incorporación de corrupt() como utilidad de arranque para escrituras de desplazamiento (offset) directo.

  • detectJSEngine(): confirma la ejecución en JavaScriptCore antes de proceder.

  • patchOffset(path, value): permite actualizar cualquier entrada de OFFSETS en tiempo de ejecución desde la consola WebInspector de PS5 sin recargar la página.

  • Implementación de leakLibKernelBase(p) en webkit_bug.js.

    • addrof(new RegExp('a')) → lee el JSRegExp* interno en el espacio alineado +0x10 → lee la vtable de C++ → resta vtable_jsregexp_offset → webkit_base.

    • Lee GOT[pthread_create] en webkit_base + got_pthread_create → resta el desplazamiento del símbolo libkernel → libkBase.

  • Verificación de alineación de página en el resultado final; se han incluido mensajes de error procesables en cada paso.

exploit/js/offsets_1100.js — nuevos campos

  • Ampliación de la sección webkit con: vtable_jsregexp_offset, regexp_internal_offset, got_pthread_create, got_mmap, got_write.

  • Nueva sección libkernel_syms con desplazamientos de funciones individuales para la lectura de la GOT: pthread_create, pthread_self, mmap, write.

  • Anotación de todos los campos nuevos con // ⚠ VERIFY e instrucciones sobre cómo obtenerlos.

exploit/index.html

  • Adición de la etiqueta de script para webkit_bug.js en el orden de carga correcto.

  • Eliminación de los stubs de triggerWebKitBug() y leakLibKernelBase() que devolvían errores de "no implementado".

tools/ — suite automatizada de análisis de binarios de firmware (5 scripts nuevos)

  • self2elf.py: convierte archivos PS5 SELF/SPRX a ELF plano, sin dependencias de pip.

    • Soporte para modo de archivo único, modo por lotes de directorios (--dir/--out) y modo de inspección (--check).

    • Detección de SELF encriptados frente a desencriptados; permite el paso transparente de archivos que ya son ELF.

    • Validación de la clase ELF64 y la arquitectura x86-64 en la salida.

  • analyze_libkernel.py: extrae desplazamientos de libkernel.elf en 4 pasadas.

    • Gadgets ROP (pop rdi/rsi/rdx/rcx/r8/r9/rax/rsp; ret, syscall; ret, xchg rax,rsp) mediante desensamblado completo con objdump y búsqueda en ventanas de 1 a 4 instrucciones.

    • Extracción de 20 símbolos de función mediante nm; thread_list a través de pistas globales conocidas de pthread.

    • Desplazamientos de campos de pthread_t mediante análisis por desensamblado de pthread_attr_getstack con valores de reserva heurísticos basados en FreeBSD 11.

    • Entradas GOT para la filtración de libkBase; genera un fragmento de JS listo para pegar en offsets_1100.js.

  • analyze_webkit.py: extrae desplazamientos de WebKit.elf en 3 pasadas.

    • Lectura de la tabla de relocalización dinámica (readelf -r) para enumerar las entradas de la GOT.

    • Referencias cruzadas con libkernel.elf (opcional) para calcular el desplazamiento final del símbolo.

    • Selección automática del mejor candidato por orden de preferencia.

    • Búsqueda de cadenas relacionadas con "Worker" y referencias a 0x80000 en el desensamblado.

  • analyze_kernel.py: extrae desplazamientos del ELF del kernel en 3 pasadas.

    • Símbolos: allproc, prison0, kern_securelevel, rootvnode, nproc.

    • Desplazamientos de struct proc mediante análisis por desensamblado de pfind() con heurística de rangos.

    • Desplazamientos de struct ucred con valores de FreeBSD 11 como reserva documentada.

  • gen_offsets.py: orquestador maestro.

    • Invocación de los tres analizadores; conversión automática de SPRX→ELF si se proporcionan rutas .sprx.

    • Generación de offsets_1100.js completo con indicadores de confianza por sección (ALTA / MEDIA / BAJA), constantes de llamadas al sistema de Orbis OS y un objeto de exportación OFFSETS_1100.

    • Flags: --libkernel, --webkit, --kernel, --out, --tmp, --verbose, --libkernel-sprx, --webkit-sprx.

  • tools/ANALYSIS_README.md: guía de uso completa para las herramientas de análisis.

No te pierdas nada, síguenos en Twitter, Mastodon o Threads!
Preguntas, aportes y peticiones en el foro.

  • Contenido similar

    • Por Dekuwa
      zftpd es un servidor FTP multiplataforma diseñado para ejecutarse tanto como un binario POSIX (Linux/macOS) como un payload de consola (PS3/PS4/PS5).
      Características principales
      E/S TCP robusta (gestión de envíos parciales, EINTR, contrapresión) Tiempos de espera para canales de control/datos + tiempo de espera de sesión inactiva Refuerzo de rutas (sin saltos de directorio + canonización de mejor esfuerzo) Registro estructurado por sesión/comando Limitación de la tasa de transferencia (opcional, en tiempo de compilación) Notificaciones en pantalla en PS4/PS5 (IP/puerto y estado)
      Ejecución por plataforma
      Linux
      ./build/linux/release/zftpd-linux-<arquitectura>-v<versión>.elf Opciones útiles (solo POSIX): -p <puerto> y -d <raíz>.
      macOS
      ./build/macos/release/zftpd-macos-<arquitectura>-v<versión> PS4
      Requiere un cargador de payloads (p. ej. WebKit/PPPwn/Netcat/GoldHEN). zftpd no requiere un "HEN" residente, pero debe ser lanzado mediante un cargador o exploit.
      Si el cargador espera un payload .bin: envía build/ps4/release/zftpd-ps4-v<versión>.bin. Si el cargador acepta ELF: puedes elegir entre build/ps4/release/zftpd-ps4-v<versión>.bin y build/ps4/release/zftpd-ps4-v<versión>.elf. Al iniciarse, muestra una notificación con la IP y el puerto. PS5
      Requiere un cargador de payloads (etaHEN/Netcat/cargador equivalente).
      Si el cargador espera un payload .bin: envía build/ps5/release/zftpd-ps5-v<versión>.bin. Si el cargador acepta ELF: puedes elegir entre build/ps5/release/zftpd-ps5-v<versión>.bin y build/ps5/release/zftpd-ps5-v<versión>.elf. Al iniciarse, muestra notificaciones de "iniciado" + FTP: <ip>:<puerto>. Configuración
      La configuración en tiempo de compilación se encuentra en ftp_config.h. Macros útiles:
      FTP_DEFAULT_PORT (por defecto 2122 en PS4/PS5, 2121 en POSIX) FTP_MAX_SESSIONS FTP_SESSION_TIMEOUT FTP_TRANSFER_RATE_LIMIT_BPS / FTP_TRANSFER_RATE_BURST_BYTES FTP_LOG_COMMANDS Notas
      Si aparece el mensaje "payload already loaded" en PS4/PS5, significa que ya hay una instancia activa (deduplicación). El nuevo daemon intentará cerrar la instancia antigua e iniciar una nueva en el puerto FTP_DEFAULT_PORT:2122. Si eso falla, probará con el siguiente puerto FTP_DEFAULT_PORT+1:2123 hasta un máximo de 9 puertos consecutivos.
      Para pruebas en el host:
      make TARGET=linux test o make TARGET=macos test. zftpd es un proyecto encabezado por seregonwar.
    • Por Dekuwa
      ShadowMountPlus es un payload de "automontaje" en segundo plano, totalmente automatizado, para consolas PS5 con Jailbreak.
      Optimiza el proceso de montaje de juegos al eliminar la necesidad de configuración manual o herramientas externas (como DumpRunner o Itemzflow).
      ShadowMountPlus detecta, monta e instala automáticamente volcados de juegos tanto del almacenamiento interno como del externo.
      Compatibilidad: Soporta todos los firmwares de PS5 con Jailbreak que ejecuten Kstuff v1.6.7.
      Soporte actual de imágenes
      El soporte para PFS es experimental.
      Extensión FS Montado Backend Attach Estado .exfat exfatfs LVD o MD (configurable) Estable. .ffpkg ufs LVD o MD (configurable) Alto rendimiento. .ffpfs pfs LVD Experimental. Notas:
      El backend, el modo de solo lectura y el tamaño del sector se pueden configurar a través de /data/shadowmount/config.ini. El registro de depuración opcional se puede activar mediante debug=1 (escribe en la consola y en /data/shadowmount/debug.log). En el firmware 4.xx, es posible que el apagado de la consola no funcione correctamente al utilizar archivos de imagen. Elección de FS recomendada
      Prefiera UFS (.ffpkg) para juegos que funcionen correctamente en UFS: generalmente tiene un mayor rendimiento (~1,5-2,5 veces más que exFAT). Use exFAT (.exfat) para juegos que solo funcionen con estructuras de estilo disco externo, ya que exFAT no distingue entre mayúsculas y minúsculas. Configuración en tiempo de ejecución (/data/shadowmount/config.ini)
      Este archivo es opcional. Si no existe, se utilizan los valores predeterminados integrados.
      Claves admitidas (todas opcionales):
      debug=1|0 (1 activa la salida log_debug a la consola + /data/shadowmount/debug.log; por defecto es 0) mount_read_only=1|0 exfat_backend=lvd|md ufs_backend=lvd|md scanpath=<ruta_absoluta> (puede repetirse en varias líneas) exfat_sector_size=<valor> ufs_sector_size=<valor> pfs_sector_size=<valor> lvd_exfat_sector_size=<valor> lvd_ufs_sector_size=<valor> lvd_pfs_sector_size=<valor> md_exfat_sector_size=<valor> md_ufs_sector_size=<valor> Comportamiento de la ruta de escaneo:
      Si hay al menos un scanpath=..., solo se utilizan esas rutas personalizadas. /data/ufsmnt siempre se añade automáticamente, incluso con rutas personalizadas. El bucle de escaneo completo se ejecuta cada 10 segundos. Validación:
      Consulte config.ini.example para obtener una plantilla lista para usar.
      Nomenclatura del punto de montaje
      Los puntos de montaje de las imágenes se crean bajo:
      /data/ufsmnt/<nombre_imagen>-<sufijo_fs> Rutas de escaneo
      Ubicaciones de escaneo por defecto:
      /data/homebrew /data/etaHEN/games /mnt/ext0/homebrew /mnt/ext0/etaHEN/games /mnt/ext1/homebrew /mnt/ext1/etaHEN/games /mnt/usb0/homebrew .. /mnt/usb7/homebrew /mnt/usb0/etaHEN/games .. /mnt/usb7/etaHEN/games /mnt/usb0 .. /mnt/usb7 /mnt/ext0 /mnt/ext1 /data/ufsmnt (escaneo de contenido de imagen montada) Puede anular las raíces de escaneo con entradas scanpath=... en /data/shadowmount/config.ini.
      Creación de una imagen exFAT
      Linux (Ubuntu/Debian):
      sudo apt-get install -y exfatprogs exfat-fuse fuse3 rsync truncate -s <tamaño_imagen> test.exfat mkfs.exfat -c 32768 test.exfat mkdir -p /mnt/exfat mount -t exfat-fuse -o loop test.exfat /mnt/exfat rsync -r --info=progress2 APPXXXX/ /mnt/exfat/ umount /mnt/exfat Windows:
      Recomendado: usar make_image.bat (wrapper para New-OsfExfatImage.ps1 + OSFMount).
      Requisitos:
      Instalar OSFMount.
      Mantener make_image.bat y New-OsfExfatImage.ps1 en la misma carpeta.
      Ejecutar cmd.exe como Administrador.
      Uso: make_image.bat "C:\imagenes\juego.exfat" "C:\payload\APPXXXX"
      Comportamiento: Ajusta automáticamente el tamaño de la imagen para que quepa el contenido de origen. Formatea y copia la carpeta de origen en la imagen. Sobrescribe el archivo de imagen existente (usa -ForceOverwrite).
      Opcional (tamaño fijo): ejecutar el script de PowerShell directamente:
      powershell.exe -ExecutionPolicy Bypass -File .\New-OsfExfatImage.ps1 -ImagePath "C:\imagenes\juego.exfat" -SourceDir "C:\payload\APPXXXX" -Size 8G -ForceOverwrite Creación de una imagen UFS2 (.ffpkg)
      FreeBSD:
      Script: mkufs2.sh Uso: ./mkufs2.sh <dir_entrada> [archivo_salida] Ejemplo: chmod +x mkufs2.sh ./mkufs2.sh ./APPXXXX ./PPSA12345.ffpkg Notas: El script calcula automáticamente el tamaño de la imagen (origen + 20% + 10MB de margen). Utiliza el formato UFS2 (newfs -O 2) con -b 32768 -f 4096. Requiere herramientas de BSD como mdconfig, newfs, mount, umount.
      Windows:
      Puede crear imágenes UFS2 con UFS2Tool. El formato de salida recomendado para este proyecto es .ffpkg. Instalación y uso
      Método 1: Inyección manual de payload (Puerto 9021)
      Utilice un cargador de payloads (como NetCat GUI o un cargador basado en web) para enviar los archivos al Puerto 9021.
      Envíe notify.elf (Opcional). Envíelo solo si desea avisos gráficos. Omítalo si prefiere las notificaciones estándar. Envíe shadowmountplus.elf. Espere a la notificación: "ShadowMount+". Método 2: Autocargador PLK (Recomendado)
      Añada ShadowMountPlus a su autoload.txt para plk-autoloader para asegurar que se inicie automáticamente en cada arranque.
      Configuración de ejemplo:
      !1000 kstuff.elf !1000 notify.elf ; Opcional - Elimine esta línea si no desea avisos enriquecidos (Rich Toasts) !1000 shadowmountplus.elf Notas
      Primera ejecución: Si tiene una biblioteca grande, el escaneo inicial puede tardar unos segundos en registrar todos los títulos. Juegos pesados: Para juegos de gran tamaño (más de 100 GB), espere unos segundos adicionales para que el sistema verifique la integridad de los archivos antes de que aparezca la notificación de "Instalado". ShadowMountPlus es un proyecto encabezado por drakor.
    • Por Dekuwa
      PS5 Upload es una herramienta diseñada para transferir tus aplicaciones y homebrew a tu consola sin el dolor de cabeza de las transferencias lentas.
      Aunque está optimizada para procesar miles de archivos pequeños en una red local (donde supera con creces al FTP tradicional), funciona a través de cualquier conexión de red estándar.

      Carga de archivos | Gestión de archivos
      ¿Por qué usar esto?
      Si alguna vez has intentado subir una aplicación homebrew que contiene 10,000 archivos pequeños vía FTP, conoces el sufrimiento. Tarda una eternidad. Esta herramienta soluciona eso agrupando los archivos en "paquetes" eficientes en tu ordenador y transmitiéndolos directamente al disco de la PS5. Sin archivos temporales y sin esperar confirmaciones entre cada archivo individual.
      Plataformas compatibles
      El cliente funciona en:
      Windows (10/11) Linux (Ubuntu, Arch, Fedora, etc.) macOS (Intel y Apple Silicon) Guía de inicio rápido
      1. Cargar el Payload (PS5)
      Primero, tu PS5 debe estar a la escucha de la conexión. Necesitas enviar el archivo ps5upload.elf a tu consola.
      Opción A: Línea de comandos (Netcat) Si estás en Linux o macOS, esta es la forma más rápida. Sustituye la IP por la de tu PS5. nc -w 1 192.168.0.xxx 9021 < payload/ps5upload.elf Opción B: Herramienta ELF Loader Usa cualquier herramienta GUI estándar de "ELF Loader" o "Payload Sender" para Windows/Android. Selecciona el archivo ps5upload.elf y envíalo a la IP de tu consola. Opción C : Botón integrado "Send Payload" Abre el cliente, haz clic en Send Payload, elige ps5upload.elf y se enviará al puerto 9021. ¿Éxito? Deberías ver una notificación en tu televisor: "PS5 Upload Server - Ready on port 9113".
      2. Conectar el cliente (Ordenador)
      Abre la aplicación PS5 Upload. Escribe la dirección IP de tu PS5 (ej. 192.168.0.105). Haz clic en Connect. Verás el espacio de almacenamiento disponible en tu consola. 3. Enviar tu aplicación
      Origen: Haz clic en Browse y elige la carpeta que contiene tu aplicación en tu ordenador. Destino: Elige una unidad (como /mnt/usb0 o /data). Elige una ubicación predeterminada (como homebrew o etaHEN/games). Dale un nombre a tu carpeta. Subir: Haz clic en Start Upload. La barra mostrará el progreso en tiempo real. Preguntas frecuentes (FAQ)
      P: ¿"Connection Refused" o no se conecta?
      ¿Cargaste el payload primero? La PS5 deja de escuchar si se reinicia o entra en modo de reposo. ¿El firewall de tu ordenador está bloqueando al cliente? ¿Están en la misma red? (No es estrictamente necesario, pero necesitas una ruta hacia esa IP). P: ¿Necesito usar un cable LAN? No es obligatorio, pero el WiFi es mucho más lento y menos estable. Para la mejor experiencia de alto rendimiento, conecta un cable Ethernet.
      P: ¿Puedo usar esto a través de Internet? Sí, técnicamente. Si rediriges el puerto 9113 hacia tu PS5, funcionará. Sin embargo, el protocolo está optimizado para la velocidad, no para la seguridad. No recomendamos exponer tu PS5 con exploits a la red abierta.
      P: ¿"No writable storage found"? La herramienta te protege de intentar escribir en particiones del sistema de solo lectura. Si quieres usar una unidad USB, asegúrate de que esté formateada (exFAT es lo mejor) y conectada antes de cargar el payload.
      P: macOS: ¿"App is damaged" o "Unidentified Developer"? Esto es normal en aplicaciones no firmadas. Haz clic derecho en la aplicación, selecciona Abrir y luego haz clic en Abrir en el cuadro de diálogo. Si macOS sigue bloqueándola, ve a Ajustes del Sistema -> Privacidad y seguridad y haz clic en Abrir de todos modos.
      P: macOS: ¿Se abre una ventana de Terminal al ejecutar la app? Esto sucede si ejecutas el binario directamente. Usa el paquete .app incluido en el zip para evitarlo.
      P: Linux: ¿Aparece una terminal al lanzar la app? Usa el lanzador PS5Upload.desktop incluido en el zip de la versión para Linux.
      P: ¿Funciona en PS4? La lógica es similar, pero el payload está compilado específicamente para el entorno de PS5. No funcionará en una PS4 tal cual.
      Descargo de responsabilidad
      Este software tiene fines educativos. Está destinado a ser utilizado con software obtenido legalmente y aplicaciones homebrew en hardware de tu propiedad. Úsalo bajo tu propio riesgo. Los autores no se hacen responsables de ninguna pérdida de datos o problemas que surjan del uso de esta herramienta.
      PS5 Upload ha sido creado por PhantomPtr.
    • Por Dekuwa
      PSFFPKG es una utilidad ligera diseñada para automatizar la creación de imágenes .ffpkg (UFS2) para PS5.
      Funciona como un envoltorio para UFS2Tool de SvenGDK, optimizando el proceso de conversión de directorios de volcados de juegos en archivos de paquete instalables compatibles con el payload ShadowMount.
      Características
      Conversión Automatizada: Calcula el tamaño del directorio y ejecuta los argumentos necesarios para crear una imagen UFS2. Renombrado Automático: Cambia automáticamente el nombre de la imagen de salida al formato .ffpkg. Modo Dual: Soporta tanto el Modo Interactivo (doble clic para ejecutar) como la Interfaz de Línea de Comandos (CLI) para scripts por lotes. Privilegios de Administrador: Solicita automáticamente la elevación de privilegios (Ejecutar como administrador) para asegurar que las operaciones del sistema de archivos se realicen correctamente. Requisitos
      Para utilizar los archivos .ffpkg generados en su consola, necesita:
      PlayStation 5 con un firmware compatible con el payload. ShadowMount Payload (v1.4 o superior): Debe inyectar el payload ShadowMount que soporte el montaje de UFS. UFS2Tool: Esta herramienta depende de UFS2Tool.exe para realizar la creación del sistema de archivos. Instalación y Configuración
      Descargue la última versión de UFS2Tool desde el enlace superior y extraiga el archivo zip. Descargue el ejecutable de PSFFPKG desde aquí mismo. Paso Crucial: Coloque PSFFPKG.exe y UFS2Tool.exe en la misma carpeta. La estructura de la carpeta debería verse así:
      📂 UFS2Tool ├── 📄 PSFFPKG.exe ├── 📄 UFS2Tool.exe └── ... Uso
      Método 1: Modo Interactivo (Fácil)
      Haga clic derecho en PSFFPKG.exe y seleccione Ejecutar como administrador (la herramienta intentará elevar los privilegios automáticamente si lo olvida). Cuando se le solicite, pegue la ruta de su Carpeta de Volcado del Juego. (Opcional) Introduzca una ruta de salida o pulse Intro para guardar en la carpeta actual. La herramienta creará la imagen y la guardará como NombreDeLaCarpeta.ffpkg. Método 2: Línea de comandos (CLI)
      Puede usar esta herramienta en sus propios scripts o mediante CMD/PowerShell.
      Sintaxis: powershell PSFFPKG.exe "Ruta\Al\VolcadoDelJuego" "Ruta\A\CarpetaDeSalida" Ejemplo: powershell PSFFPKG.exe "C:\Games\CUSA12345" "D:\PS5_Packages" Nota: Si se omite la ruta de salida, el archivo se guardará en el directorio actual.
      PSFFPKG es un proyecto encabezado por sinajet.
    • Por Dekuwa
      UFS2Tool es un gestor de sistemas de archivos FreeBSD UFS1/UFS2, con versiones para Windows, macOS y Linux.
      Una implementación completa de los comandos de FreeBSD newfs(8), makefs(8), tunefs(8), growfs(8), fsck_ufs(8) y chmod para crear, gestionar y comprobar sistemas de archivos UFS1 y UFS2, orientada tanto a archivos de imagen como a dispositivos de disco sin formato (Windows).
      Las operaciones con archivos de imagen funcionan en cualquier plataforma compatible con .NET 8.0.
      Principales características:
      Crear sistemas de archivos UFS1 y UFS2 en archivos de imagen o dispositivos de Windows sin formato Compatibilidad total con newfs(8): admite todos los indicadores estándar de newfs de FreeBSD (excepto -T, -k, -r) Poblar desde directorio: permite crear imágenes a partir del contenido de un directorio con dimensionamiento automático (-D) Comando makefs: interfaz compatible con makefs(8) de FreeBSD para crear imágenes de sistemas de archivos a partir de árboles de directorios Comando growfs: interfaz compatible con growfs(8) de FreeBSD para expandir imágenes de sistemas de archivos existentes Comando fsck_ufs: comprobador de consistencia de sistemas de archivos compatible con fsck_ffs(8)/fsck_ufs(8) de FreeBSD Extraer archivos de imágenes de sistemas de archivos UFS1/UFS2 existentes Reemplazar archivos en imágenes de sistemas de archivos UFS1/UFS2 existentes (archivo individual o árbol de directorios) Añadir archivos a imágenes de sistemas de archivos UFS1/UFS2 existentes (archivo individual o árbol de directorios, recursivo) Eliminar archivos de imágenes de sistemas de archivos UFS1/UFS2 existentes (archivo individual o árbol de directorios, recursivo) Montar imágenes UFS como unidades de Windows con soporte de lectura y escritura a través de Dokan Leer e inspeccionar imágenes de sistemas de archivos UFS1/UFS2 existentes Listar contenidos de directorios de imágenes UFS1/UFS2 E/S de dispositivo: escritura directa en unidades físicas y volúmenes en Windows Inicio rápido para PS5
      Utilice este comando para crear rápidamente una imagen UFS2 compatible para ser montada en la PS5 con ShadowMount:
      UFS2Tool.exe newfs -D <carpeta> <PPSAxxxx.ffpkg> Alternativamente, puede utilizar este comando para crear rápidamente una imagen UFS2 con opciones FFS compatibles con FreeBSD que se pueda montar en la PS5 con ShadowMount:
      UFS2Tool.exe makefs -S 4096 -t ffs -o version=2,minfree=0,softupdates=0,optimization=space <PPSAxxxx.ffpkg> <carpeta> Aplicación con interfaz gráfica (GUI)
      El proyecto incluye una interfaz gráfica moderna y multiplataforma construida con Avalonia UI en el directorio UFS2Tool.GUI. La interfaz gráfica proporciona acceso a todas las operaciones principales de UFS2Tool:
      Crear sistema de archivos: crear imágenes UFS1/UFS2 con parámetros configurables Operaciones del sistema de archivos: listar, extraer, añadir, eliminar, reemplazar archivos y cambiar permisos Mantenimiento: operaciones TuneFS, GrowFS y FsckUFS Montaje de dispositivos: montar/desmontar imágenes UFS como unidades de Windows (solo en Windows, requiere Dokan) Creación rápida para PS5: plantillas preestablecidas para la creación de sistemas de archivos compatibles con PS5 Ajustes: selección de idioma (admite 11 idiomas) Notas
      Las operaciones de dispositivo (newfs en unidades físicas, devinfo, mount_udf) requieren privilegios de administrador en Windows. La herramienta está orientada a net8.0 y utiliza funciones específicas de Windows de forma condicional para la E/S de dispositivos y el montaje con Dokan. Las operaciones de archivos de imagen (crear, inspeccionar, extraer, añadir, eliminar, reemplazar, chmod, growfs, tunefs, fsck) funcionan en cualquier plataforma compatible con .NET 8.0. Las imágenes de sistemas de archivos creadas con esta herramienta son compatibles con mount y fsck_ffs de FreeBSD. Al crear imágenes con makefs, las actualizaciones suaves (soft updates) están desactivadas por defecto (softupdates=0), coincidiendo con el comportamiento de makefs(8) de FreeBSD. Utilice -o softupdates=1 para activarlas explícitamente. UFS2Tool es un proyecto encabezado por SvenGDK.
×
×
  • Crear nuevo...