
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Use the following command to install the pypsu package with pip:
python -m pip install pypsu
Make sure the local bin path is in your path. If not, add it to ~/.bashrc
or ~/.zshrc
:
export PATH="$HOME/.local/bin:$PATH"
usage: psu [-h] [-v] {interactive,i,list,l,ls,create,c,import,im,export,e,rename,r,delete,d,del,rm} ...
Manipulate PS2 PSU game save files.
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
Commands:
{interactive,i,list,l,ls,create,c,import,im,export,e,rename,r,delete,d,del,rm}
interactive (i) Interactive command prompt.
list (l, ls) List the files and directories within the game save.
create (c) Create a PSU game save file.
import (im) Import a file from the local disk to the game save.
export (e) Export a file from the game save to the local disk.
rename (r) Rename a file within the game save.
delete (d, del, rm)
Delete a file from within the game save.
└─$ psu list BASCUS-97129.psu
total 9
d Dec 23 2022 0 BASCUS-97129
d Dec 23 2022 0 .
d Dec 23 2022 0 ..
- Dec 23 2022 964 icon.sys
- Dec 23 2022 44376 bkmo1.ico
- Dec 23 2022 44376 bkmo2.ico
- Dec 23 2022 44376 bkmo3.ico
- Dec 23 2022 3460 BASCUS-97129
- Dec 23 2022 3460 bkmo0.dat
└─$ psu create BASCUS-97129.psu
[+] PSU file "BASCUS-97129.psu" saved
└─$ psu import BASCUS-97129.psu bkmo0.dat
[+] bkmo0.dat imported to bkmo0.dat
└─$ psu export BASCUS-97129.psu bkmo0.dat
[+] bkmo0.dat exported to bkmo0.dat
└─$ psu rename BASCUS-97129.psu bkmo0.dat bkmo1.dat
[+] bkmo0.dat renamed to bkmo1.dat
└─$ psu delete BASCUS-97129.psu bkmo0.dat
[+] bkmo0.dat deleted
└─$ psu interactive BASCUS-97129.psu
# list
total 9
d Dec 23 2022 0 BASCUS-97129
d Dec 23 2022 0 .
d Dec 23 2022 0 ..
- Dec 23 2022 964 icon.sys
- Dec 23 2022 44376 bkmo1.ico
- Dec 23 2022 44376 bkmo2.ico
- Dec 23 2022 44376 bkmo3.ico
- Dec 23 2022 3460 BASCUS-97129
- Dec 23 2022 3460 bkmo0.dat
# export bkmo0.dat
[+] bkmo0.dat exported to bkmo0.dat
# import bkmo1.dat
[+] bkmo1.dat imported to bkmo1.dat
# rename bkmo3.ico bkmo4.ico
[+] bkmo3.ico renamed to bkmo4.ico
# list
total 10
d Dec 23 2022 0 BASCUS-97129
d Dec 23 2022 0 .
d Dec 23 2022 0 ..
- Dec 23 2022 964 icon.sys
- Dec 23 2022 44376 bkmo1.ico
- Dec 23 2022 44376 bkmo2.ico
- Dec 23 2022 44376 bkmo4.ico
- Dec 23 2022 3460 BASCUS-97129
- Dec 23 2022 3460 bkmo0.dat
- Jan 27 20:26 3460 bkmo1.dat
# exit
psu = PSU.create('BASCUS-97129.psu')
psu.write('hello.txt', 'Hello World')
psu.save()
psu = PSU.load('BASCUS-97129.psu')
print(psu.read('hello.txt').decode('UTF-8'))
psu = PSU.load('BASCUS-97129.psu')
print(psu.read('hello.txt').decode('UTF-8'))
psu.write('hello.txt', 'Hello World New')
psu.save()
psu = PSU.load('BASCUS-97129.psu')
psu.copy('/tmp/hello.txt', 'hello.txt')
psu.save()
psu = PSU.load('BASCUS-97129.psu')
psu.export('hello.txt', '/tmp/hello.txt')
psu.save()
psu = PSU.load('BASCUS-97129.psu')
psu.delete('hello.txt')
psu.save()
psu = PSU.load('BASCUS-97129.psu')
if psu.has('hello.txt'):
print('hello.txt exists in BASCUS-97129.psu')
else:
print('hello.txt does not exist in BASCUS-97129.psu')
psu = PSU.load('BASCUS-97129.psu')
entry = psu.get('hello.txt')
print(entry)
psu = PSU.load('BASCUS-97129.psu')
if psu.isFile('hello.txt'):
print('hello.txt is a file')
else:
print('hello.txt is not a file')
psu = PSU.load('BASCUS-97129.psu')
if psu.isDirectory('.'):
print('. is a file')
else:
print('. is not a file')
psu = PSU.load('BASCUS-97129.psu')
for entry in psu.list():
if entry.isFile():
print(f'FILE: {entry.name: <16} ({entry.header.size} bytes)')
continue
if entry.isDirectory():
print(f' DIR: {entry.name: <16} ({entry.header.size} entries)')
continue
FAQs
Library for analyzing and creating PS2 PSU game save files
We found that pypsu demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.