MCPcopy Index your code
hub / github.com/Gezine/Y2JB

github.com/Gezine/Y2JB @Y2JB-1.2.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release Y2JB-1.2.1 ↗ · + Follow
150 symbols 434 edges 15 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Y2JB

Userland code execution using the PS5 YouTube app.

Requirements

  • At least 4.03 firmware PS5

For Jailbroken PS5 (Webkit, Lua, BD-JB)

  • Fake or legit activated PS5
  • USA YouTube app version 1.03 PKG
  • FTP access to the console

For Non-Jailbroken PS5

  • USB flash drive
  • Pre-made backup file

Setup Instructions

Configure Network DNS Settings

  1. Navigate to Settings > Network > Settings > Set Up Internet Connection
  2. Scroll to the bottom and select Set Up Manually
  3. Choose your connection type:
  4. Use WiFi: Enter network name and password manually, set security to "WPA-Personal..."
  5. Use a LAN Cable: Proceed to next step
  6. Under DNS Settings, change from "Automatic" to Manual
  7. Set Primary DNS to 127.0.0.2 (leave Secondary DNS blank)
  8. Press Done and wait for the connection to establish

Note: You may see a network/PSN connection error - this is expected and can be ignored. The console will still function normally for YouTube payload delivery.

Alternative: Block PSN servers and www.youtube.com from your custom DNS server instead of using 127.0.0.2

Fake Account Activation

Note: If you're using the backup file from the releases page, you can skip this section.

You need a fake-activated account to run Y2JB properly.

If you have a legit PSN-activated account: This means your account is officially registered and activated through PlayStation Network. You cannot use this account directly with Y2JB - you must create and use a separate fake-activated account instead.

To fake activate an account: 1. Open etaHEN toolbox while logging in to created new offline account 2. Navigate to the "Remote Play" menu 3. The account will be automatically fake activated

Jailbroken PS5

  1. Install YouTube app version 1.03 PKG on your PS5
  2. Use FTP to access the following path (create if not present): /user/download/PPSA01650
  3. Download download0.dat from the releases page and send it using FTP

Non-Jailbroken PS5

  1. Download the backup file from the releases page
  2. Follow Sony's official guide to restore backup data from USB
    Note: Restoring backup WILL FACTORY RESET YOUR PS5

Blocking YouTube Updates (appinfo_editor.py)

Note: If you're using the backup file version 1.2.1 or higher from the releases page, you can skip this section.

This script prevents YouTube from updating if you accidentally connect to the internet, which can cause softlock preventing YouTube from launching (for fix go to next section).

  1. After installing the YouTube PKG, retrieve /system_data/priv/mms/appinfo.db from your PS5 using FTP
  2. Place appinfo.db in the same directory as appinfo_editor.py
  3. Run the script. This modifies appinfo.db to block YouTube updates: python appinfo_editor.py
  4. To avoid database corruption when replacing the file:
  5. Close the YouTube app
  6. Navigate to the Settings page
  7. Ensure no packages are being installed or updated
  8. Use FTP to replace /system_data/priv/mms/appinfo.db with the modified version
  9. If you do not receive any database corruption notification, reboot your PS5

How to escape from youtube softlock

youtube_softlock

This can happen when user (mostly wifi) connects to the internet before setting 127.0.0.2 DNS.

  1. Once you get softlock, first connect to the internet normally without custom DNS
  2. Launch YouTube again and deny the system software update popup
  3. Now it will let you run YouTube
  4. Run the jailbreak and load HEN
  5. Now set 127.0.0.2 DNS again and uninstall YouTube
  6. Follow Jailbroken PS5 section and Blocking YouTube Updates (appinfo_editor.py) section again
  7. Restart PS5. Done.

Sending Payloads

Note: The Remote JS Server does not always run on port 50000. Most of the time it will use port 50000, but rarely it may use a different port - this is not a bug.

Payloads can be sent using payload_sender.py with Python installed.

Usage:

python payload_sender.py <host> <file>
python payload_sender.py <host> <port> <file>

Examples:

python payload_sender.py 192.168.1.100 helloworld.js
python payload_sender.py 192.168.1.100 50000 helloworld.js
python payload_sender.py 192.168.1.100 9020 payload.bin

Lapse Payload

Firmware Compatibility: Only works up to firmware 10.01

After the Lapse payload succeeds, you need to send the HEN or other elf binary to port 9021. You can use any TCP payload sender such as: - netcat - payload_sender.py

Example:

python payload_sender.py 192.168.1.100 9021 hen.bin

Credits

Disclaimer

This tool is provided as-is for research and development purposes only. Use at your own risk. The developers are not responsible for any damage, data loss, or consequences resulting from the use of this software.

Core symbols most depended-on inside this repo

log
called by 186
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/main.js
write64_unstable
called by 130
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/main.js
toHex
called by 85
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/main.js
read64_unstable
called by 28
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/main.js
send_notification
called by 15
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/misc.js
set_sockopt
called by 13
payloads/lapse.js
alloc_string
called by 11
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/misc.js
phys_to_dmap
called by 9
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/kernel.js

Shape

Function 146
Method 3
Class 1

Languages

TypeScript97%
Python3%

Modules by API surface

payloads/lapse.js61 symbols
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/misc.js26 symbols
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/global.js14 symbols
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/main.js11 symbols
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/kernel.js11 symbols
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/gpu.js8 symbols
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/kernel_offset.js6 symbols
log_server.py4 symbols
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/remotejsloader.js4 symbols
download0/cache/splash_screen/aHR0cHM6Ly93d3cueW91dHViZS5jb20vdHY=/elf_loader.js4 symbols
payload_sender.py1 symbols

For agents

$ claude mcp add Y2JB \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page