diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index f4b9830..932eb4e 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -248,6 +248,18 @@ is asserted by the output but upstream measured it only on 12.60; do not present that as independently verified on 13.20. Do not send another kernel exploit in an already exploited session. Disable temporary TCP 50000 when not needed. +The user then closed YouTube. A connection-only probe confirmed TCP 9021 remained +accessible and no immediate crash was observed. Using that surviving loader, +kstuff-lite v1.11 and ShadowMountPlus 1.7beta3 were downloaded again, verified +against the hashes in `docs/payload-evidence/`, and sent in order with more than +four seconds between them. KStuff reported its app.db and SceShellUI patches; +ShadowMountPlus detected 13.20, installed ShellCore hooks, initialized KStuff +runtime control, synchronized zero games and exposed its API only at +`127.0.0.1:10101`. No mount, game, API, suspend/resume or shutdown test was made. +Temporary payload copies were removed. This confirms the full startup chain +YouTube → Y2JB → Relapse → KStuff → ShadowMountPlus on this boot, not prolonged +stability. + FTP used `ps5-payload-dev/ftpsrv` v0.21.1, SHA-256 `7d4b31c83eae4e056580482a3a074e1db25922efc74ac1e439473b45d71a5938`. Active-mode tests failed with `550 Bad file descriptor`; passive mode succeeded. @@ -263,6 +275,16 @@ install or start the Y2JB autoloader. itsPLK autoloader v0.9.1 has no supported kernel exploit for 13.20; v1.0.0-dev-794049f adds Relapse but remains experimental and has not been installed in this test. +The proposed long-term integration uses the Y2JB Autoloader only for +YouTube/Y2JB → Relapse → ELF loader. The external Payload Manager on net-utils01 +retains ownership of post-jailbreak payload discovery, integrity checks, +dependency ordering and audit logs. Do not configure KStuff or ShadowMountPlus +in `autoload.txt` for that design. The autoloader's default loopback-only ELF +loader is incompatible with an external sender; a reviewed LAN-accessible loader +is required, protected by the existing source-specific TCP 9021 firewall rule. +The full contract and session-state model are documented in +`docs/Y2JB_TEST_2026-10-02.md` and `docs/payload-evidence/README.md`. + **Server memory constraint:** net-utils01 has about 1.9 GiB RAM and no swap; `/tmp` is tmpfs. Staging approximately 622 MiB of Y2JB files there caused severe memory pressure with SSH/HTTP stalls; removal restored SSH. Use a verified diff --git a/docs/Y2JB_TEST_2026-10-02.md b/docs/Y2JB_TEST_2026-10-02.md index 553c062..0c653d0 100644 --- a/docs/Y2JB_TEST_2026-10-02.md +++ b/docs/Y2JB_TEST_2026-10-02.md @@ -84,12 +84,38 @@ e o ELF loader ficou à escuta na 9021. Uma sondagem TCP posterior à porta 9021 teve sucesso. O utilizador enviou foto que confirma `Executed successfully` e `Awaiting connection` na porta JS. +Depois de o utilizador fechar YouTube, uma sondagem TCP sem payload confirmou que +a consola permaneceu acessível e o ELF loader continuou ativo na porta 9021. Não +foi observado crash imediato durante este fecho controlado em 13.20. + O payload deixa OIDs de sysctl alterados até reboot; `kern.smp.cpus` devolve um endereço de kernel em vez do número de CPUs. O texto do payload indica que a app pode fechar com os pipes restaurados, mas essa segurança foi medida upstream em -12.60, não nesta consola 13.20. Não houve teste de estabilidade prolongada, -fecho da app, Remote Play ou homebrew neste boot. Não executar outro exploit de -kernel nesta sessão. Reiniciar normalmente antes de repetir o teste. +12.60. Este teste acrescenta apenas ausência de crash imediato e persistência da +9021 após um fecho em 13.20; não demonstra estabilidade prolongada. Não executar +outro exploit de kernel nesta sessão. Reiniciar normalmente antes de repetir. + +## Cadeia homebrew após fechar YouTube + +Com a porta 9021 ainda acessível, foram descarregados novamente e verificados os +artefactos registados abaixo. O envio ocorreu na ordem requerida: + +1. kstuff-lite v1.11; +2. confirmação de `app.db` patching e patch SceShellUI Trophy bem-sucedido; +3. espera superior a quatro segundos; +4. ShadowMountPlus 1.7beta3. + +ShadowMountPlus identificou FW 13.20 e confirmou controlo runtime KStuff, hooks +SceShellCore, watcher de ciclo de vida, quatro flags de sistema monitorizadas, +localização `pt-PT`, leitura de 58 títulos em `app.db`, biblioteca sincronizada +com zero jogos e API HTTP/JSON em `127.0.0.1:10101`. A configuração observada +manteve mounts read-only, force/persistent desativados e atualização AMPR +automática desativada. Foi criado `/data/.kstuff_noautomount` pela cadeia. + +O teste demonstra o arranque KStuff → ShadowMountPlus a partir do loader obtido +por YouTube/Y2JB/Relapse. Não montou jogos ou imagens e não testou API, gameplay, +suspend/resume, shutdown, reboot ou estabilidade prolongada. As cópias em +`/var/tmp` foram removidas depois do envio. ## Artefactos verificados @@ -148,9 +174,8 @@ foram preservados. Os ficheiros exatos dos testes foram removidos após uso. ## Pendentes -- Fecho controlado do YouTube em FW 13.20 e confirmação de que 9021 persiste. -- Teste homebrew neste boot; evidências anteriores de kstuff-lite/ShadowMount+ - estão em [payload-evidence](payload-evidence/README.md). +- Montagem read-only de uma imagem conhecida e teste de gameplay/lifecycle. +- Suspend/resume, shutdown e reboot com a cadeia ativa. - Teste Remote Play, após rever uma forma de fake sign-in que não afete slot 1. - Autoloader itsPLK v0.9.1 não tem kernel exploit para 13.20. v1.0.0-dev integra Relapse 10.20–13.60 mas é experimental, não instalado; rever hash, @@ -158,4 +183,86 @@ foram preservados. Os ficheiros exatos dos testes foram removidos após uso. - PKG Manager corre em memória (8844 UI, 18842 Direct Install) e precisa de reenvio depois de reboot. A UI respondeu HTTP 200 antes do reboot deste teste. +## Integração proposta: Y2JB Autoloader e Payload Manager + +O desenho preferido mantém responsabilidades separadas: + +```text +YouTube + → Y2JB Autoloader + → Relapse para FW 13.20 + → ELF loader TCP 9021 + → Payload Manager no net-utils01 + → kstuff-lite + → espera e confirmação + → ShadowMountPlus +``` + +O Y2JB Autoloader fica responsável apenas pelo exploit userland, seleção do +exploit de kernel, execução do Relapse e arranque do ELF loader. O Payload +Manager externo continua responsável pelo catálogo, fontes, releases, versões, +compatibilidade, downloads, tamanho, SHA-256, dependências, ordem, envio e logs. +KStuff e ShadowMountPlus não devem ser colocados no `autoload.txt` quando esta +arquitetura estiver ativa, porque isso contornaria a política e os registos do +manager. + +### Loader loopback e acesso externo + +O autoloader usa por defeito um ELF loader que aceita ligações apenas da própria +PS5. Essa opção é segura para payloads carregados internamente, mas impede o +manager em `192.168.20.30` de enviar para `192.168.40.14:9021`. A integração +externa exige uma variante revista do loader que escute na interface LAN. A +proteção passa então a depender da firewall existente, limitada a: + +```text +192.168.20.30 → 192.168.40.14 TCP 9021 +``` + +Nenhum outro host deve alcançar essa porta. Antes de adotar a variante LAN, +confirmar o binário, o hash, o bind efetivo e o comportamento após fechar +YouTube. Não iniciar dois ELF loaders concorrentes nem reenviar Relapse no mesmo +boot. + +### Perfil de execução no manager + +O perfil inicial deve representar explicitamente a cadeia validada: + +```text +1. kstuff-lite v1.11 +2. aguardar confirmação de arranque +3. esperar no mínimo 4000 ms +4. ShadowMountPlus 1.7beta3 +``` + +O manager deve rejeitar qualquer artefacto cujo tamanho ou SHA-256 não coincida +com o registo aprovado. `enabled` e `favorite` são preferências do utilizador e +ficam separados da evidência imutável da fonte. ShadowMountPlus declara KStuff +como dependência e não pode ser enviado se a etapa anterior não tiver confirmação. + +### Estado da consola e sessões + +Uma porta 9021 aberta prova apenas que existe um listener. A primeira versão do +manager deve combinar o output recebido no envio, padrões de sucesso conhecidos +e confirmação manual quando não existir uma API de estado fiável. Estados úteis: + +```text +offline +loader-disponivel +kstuff-confirmado +shadowmount-confirmado +cadeia-concluida +estado-desconhecido +``` + +O estado runtime deve pertencer a uma sessão/boot da consola. Depois de reboot, +perda de ligação ou resultado ambíguo, o manager limpa as afirmações de payloads +ativos e volta a `estado-desconhecido` ou `offline`. Histórico e evidência de +execuções permanecem, mas não servem como prova do boot atual. + +Cada tentativa deve guardar timestamp, consola, firmware, payload, versão, +digest, origem final do download, resultado e operador. Não guardar credenciais +nos logs. O manager deve apresentar claramente que o autoloader v1.0.0-dev é +experimental e que o fluxo manual documentado continua a ser a referência de +comparação para o primeiro teste A/B. + Este registo é documental; não exigiu rebuild nem deployment do runtime Docker. diff --git a/docs/payload-evidence/README.md b/docs/payload-evidence/README.md index cede3b3..2d968b9 100644 --- a/docs/payload-evidence/README.md +++ b/docs/payload-evidence/README.md @@ -106,6 +106,19 @@ Release discovery may propose newer versions, but it must create a new candidate record and require review. It must never overwrite the evidence for an already approved digest. +For integration with Y2JB Autoloader, keep the manager as the executor of the +post-jailbreak chain. The autoloader should stop after Relapse and an externally +reachable, reviewed ELF loader are ready. Do not duplicate kstuff-lite or +ShadowMountPlus in `autoload.txt`, because their execution would bypass manager +hash checks, dependency handling and audit records. The default loopback-only +loader must be replaced or explicitly configured for the LAN integration; access +must remain restricted by firewall to `192.168.20.30 → 192.168.40.14:9021`. + +The first manager profile should encode kstuff-lite, positive startup evidence, +at least 4000 ms delay, then ShadowMountPlus. An open port is not positive startup +evidence. Runtime state is valid only for the current console boot and must be +invalidated after reboot or ambiguous connectivity loss. + ## Controlled runtime-test procedure The current Relapse flow ends at `elfldr is listening on port 9021`; there is no R2