Join Us and become a Member for a Verified Badge on Discord to access private areas with the latest PS4 FPKGs.
PS Vita CFW and Hacks       Thread starter PSXHAX       Start date Sep 19, 2017 at 4:51 AM       17,468       5      
Not open for further replies.
Following the recent PSVGameSD and NoNpDrm Plugin releases, PlayStation Vita developer s1cp made available the initial v0.1 release of a NoNPDRM Key RIF Extractor for PS Vita including both a Python script and build for Windows users. (y)

Download: / rif-extractor.pyw / GIT / NoNpDrm.v1.2.Unofficial-LMAN.rar / NoNpDrm.v1.3.Unofficial-LMAN.rar / NoNpDrm.v1.4.Unofficial-LMAN.rar by Leecherman

From rif-extractor.pyw, to quote:
import tkinter as tk
from tkinter import filedialog, messagebox, Label, Button
from pathlib import Path

class MainGUI:
    def __init__(self, master):
        self.master = master
        master.title("Vita RIF Tools")

        self.label = Label(master, text="Choose an option")

        self.extract_button = Button(master, text="Extract", command=self.extract)

        self.recreate_button = Button(master, text="Recreate", command=self.recreate)

    def extract(self):
        self.filename = filedialog.askopenfilename(initialdir = "/",title = "Select license file",filetypes = (("bin files","*.bin"),("rif files","*.rif"),("all files","*.*")))
        abs_path = Path(self.filename)
        parent_dir = Path(abs_path).parent
        out_dir = parent_dir.joinpath('out')
        out_dir.mkdir(exist_ok = True, parents = True)

        contentid = ''
        titleid = ''
        JP = ['G','C']
        US = ['A', 'E']
        EU = ['F', 'B']
        KO = ['H']

        with open(abs_path, "rb") as f:

            # Get Content ID and Title ID
            for i in range(0,36):
                text ='ascii')
                contentid = contentid + text
                # Get Title ID
                if i in range(7,16):
                    titleid = titleid + text
                i = i+1

            # Get key
            key =

        # Determine region
        if titleid[3] in JP:
            region = "JP"
        elif titleid[3] in US:
            region = "US"
        elif titleid[3] in EU:
            region = "EU"
        elif titleid[3] in US:
            region = "EU"
        pkg_info = ("Content ID: {}\nTitle ID: {}\nRegion: {}\nLicense Key: {}".format(contentid, titleid, region, key.hex().upper()))
        messagebox.showinfo("Info", pkg_info)

        # Save key.bin
        with open(out_dir.joinpath('key.bin'), "wb") as keybin:

        # Save info.txt

        # Save [contentid].txt with key

        messagebox.showinfo("Info", "Exported files successfully!\n\nOutput folder: {}".format(out_dir))

    def recreate(self):
        messagebox.showinfo("Info", "In development")

root = tk.Tk()
maingui = MainGUI(root)
:arrow: Update: Also below is PSVitaStuff to manage your PSVita NoNpDRM stuff by @Rudi Rastelli, with details from the ReadMe File below to quote:

Download: PSVitaStuff v1.3.rar (1.48 MB)
# PSVitaStuff V1.3 #
# by Rudi Rastelli #

* (So you don't have to re-download your stuff whenever this is needed)  *

Download, extract and manage PSVita-NoNpDRM-, PSX- and PSP-Titles on PC.
Can also search, download and extract PSVita-game-patches.

1. Search internet for 'pkg_dec.exe' (tools for extracting PSVita-PKGs) and place it in 'Tools'-folder
2a. Edit the 'My*.tsv'-files and add data of your games/apps/DLCs/PSMs/themes (see also section 'EDIT TSV-FILES' below)
2b. In case you like to host your 'My*.tsv'-files edit 'PSVitaStuff.cfg' and add the URLs for your '*.tsv'-files.

1. Start 'PSVitaStuff' and select a 'Base-Folder'm where everything will be stored (eg 'F:\PSVitaTitles')
   Note: If you don't select a folder a 'PSVitaTitles'-folder will be created in programs directory.
         But this is not recommended ! See TIPS-section for details.
2. On 1st use read all of the tooltips (hoover mouse pointer over elements of the GUI)
3. Titles will be marked
   - ORANGE, if *.pkg was not completly downloaded (can be resumed)
   - YELLOW, if *.pkg was only downloaded and not extracted
   - GREEN,  if *.pkg was downloaded and extracted

- [Rebuild Local Database]
  Rebuild Database('PSVitaStuff.db'), which contais some additional information compared to the 'My*.tsv'-files

- [Set Download/Extract Folder]
  Change the 'Base-Folder', you've select at first start

- [Delete PKGs After Extraction]
  Deletes PKG-file after extraction to free up some space

- [Extract DLC To 'addcont']
  Checked   : Extracts DLC(s) to 'addcont\[TitleID]\[The last 16 chars of ContentID]\'
  Unchecked : Extracts DLC(s) to 'bgdl\t\0000000x\[TitleID]\'

- [Get Patches With Title]
  Searches for patches when downloading Games/Apps and downloads them if available

- [Hide 3.61+ Titles]
  Do not show titles requiering a FW greater 3.60 in title lists
- [Drop 3.61+ Patches]
  Patches requiering a FW greater 3.60 will not be downloaded

- [Get Size For All Titles]
  If activated for the 1st time please select [Rebuild Local Database] in order to get the size of all titles.
  It will take some time, but only for the 1st run

The 1st line of the 'My*.tsv'-files defines the structure of the following data(starting at line 2) and MUST always be present.
It can for example look like this:

"Title ID[TAB]Region[TAB]Type[TAB]Name[TAB]PKG direct link[TAB]zRIF[TAB]Content ID[TAB]Last Modification Date[TAB]PKG size[TAB]Required FW"

Enries in 1st line are key words to PSVitaStuff and must be written exactly as given here :
Title ID               = ID of the title (9 characters)... (MUST always be 1st... arange the rest however you like)
Region                 = Region of the title (2 characters). Possible values: EU, US, AS, JP, ANY (optional if 'PKG direct link' is a Sony-Server-URL)
Name                   = Name of the title
Type                   = Possible values: Vita GAME, Vita DLC, Vita PSM, Vita THEME, PSX GAME, PSP GAME, PSP DLC, PSP THEME, PSP MINIS, PSP NEOGEO, PSP PCE (partialy optional... see Notes)
PKG direct link        = PKG-URL (if not specified the title will not make it to the local database)
zRIF                   = Can be a zRIF-Key(recommended), Hex-Key(Klicensee) or "NOT REQUIRED" (only needed for PSVita-Titles)
Content ID             = ID of the title (36 characters) (optional)
Last Modification Date = Date and time of the last modification to the current entry. Format: "YYYY-MM-DD hh:mm:ss" (optional)
PKG size               = Download-size of the PKG (optional)
Required FW            = Needed firmware version (only needed for PSVita-Titles)

- The values must be seperated by a [TAB]-character and the number of [TAB]-characters in each line must be the same as in 1st line.
- If an optional value is not specified a [TAB]-character is still requiered
  (Example: '...[TAB]KO5ifR1...[TAB][TAB]2017-01-01 12:24:17[TAB][TAB][TAB]' has no 'Content ID', 'PKG size' and 'Required FW' values)
- 'Type' is only needed for PSP because it has some sub types like PSP MINIS, PSP NEOGEO and PSP PCE
- If 'PKG direct link' is a Sony-Server-URL you can fake the 'Title ID' as long as it has 9 characters.
- Use PSDLE to find PKG Link for your games or host them yourself
- Use 'NoNpDRM'-plugin to create a fake license. Then use 'Tools -> Make zRIF Key' to convert the fake license to a valid zRIF-Key.

Example for a complete entry:
PCSB00975    EU    Vita GAME    Adventures Of Mana    KO5ifR1dQ+e7Bg...    EP0082-PCSB00975_00-ADVENTURESOFMANA    2017-12-24 01:02:03    1234567890    3.61+

Vita-Game  : [Base-Folder]\[Region]\Vita GAME\[Game-Name]\app\[TitleID]\
Vita-Patch : [Base-Folder]\[Region]\Vita GAME\[Game-Name]\Vita UPDATE [Version][FW-Version]\patch\[TitleID]\
Vita-DLC   : [Base-Folder]\[Region]\Vita GAME\[Game-Name]\Vita DLC\[DLC-Name]\addcont\[TitleID]\[The last 16 chars of ContentID]\
             [Base-Folder]\[Region]\Vita GAME\[Game-Name]\Vita DLC\[DLC-Name]\license\addcont\[TitleID]\[The last 16 chars of ContentID]\
            OR (depends on setting "[Extract DLC To 'bgdl\t']")
             [Base-Folder]\[Region]\Vita GAME\[Game-Name]\Vita DLC\[DLC-Name]\bgdl\t\0000000x\[TitleID]\
Vita-PSM   : [Base-Folder]\[Region]\Vita PSM\[PSM-Name]\psm\[TitleID]\
Vita-Theme : [Base-Folder]\[Region]\Vita THEME\[Theme-Name]\theme\[TitleID]\
PSX-Game   : [Base-Folder]\[Region]\PSX GAME\[Game-Name]\pspemu\PSP\GAME\[TitleID]\[Title-ID].iso
PSP-Game   : [Base-Folder]\[Region]\PSP GAME\[Game-Name]\pspemu\ISO\[Title-ID].iso
PSP-DLC    : [Base-Folder]\[Region]\PSP GAME\[Game-Name]\PSP DLC\[DLC-Name]\pspemu\PSP\GAME\[TitleID]\     (contains pbdata und Param.PBP)
PSP-Theme  : [Base-Folder]\[Region]\PSP THEME\[Theme-Name]\pspemu\ISO\[Title-ID].iso
PSP-Minis  : [Base-Folder]\[Region]\PSP MINIS\[Game-Name]\pspemu\ISO\[Title-ID].iso
PSP-NeoGeo : [Base-Folder]\[Region]\PSP NEOGEO\[Game-Name]\pspemu\ISO\[Title-ID].iso
PSP-PCE    : [Base-Folder]\[Region]\PSP PCE\[Game-Name]\pspemu\ISO\[Title-ID].iso
             [Base-Folder]\[Region]\PSP PCE\[Game-Name]\pspemu\PSP/GAME/[TitleID]/     (contains CONTENT.DAT + PSP-KEY.EDAT)

Note : At PSP-PCE you'll see the game, but you'll also see "Corrupt Content". Currently this is necessary to start the game.

- Because of the max path length of windows (260 Chars) you may run into trouble. It's recommended to not put your base folder to deep into the filesystem.
  To avoid problems select a path like 'X:\PSVitaTitles'
- You can change the download speed while a download is running (Check tooltip to see which inputs are accepted).
  Do this by entering a speed value then press the "Set DL-Speed"-button.
- Check title lists context-menu for some useful funktions
- Under Windows 7 PSVitaStuff uses a no-so-nice 'Copy Title(s) To SD Card'-function, which seems to hang on big files (but in fact it doesn't).
  Until now i could not determinate why the nicer funktion, which works well on other tested Windows-Versions, leads to a crash of PSVitaStuff.

Credits: St4rk, TheRadziu, weaknespase, @tpunix, -SiD-, Jones, SChihir0_, MrSandmann
In related PS Vita scene news, blastrock (Philippe Daouadi) forked PKGi from mmozeiko (Martins Mozeiko) with the following changes and updates from the to quote: pkgj

Download: pkgj.elf / pkgj.vpk / GIT

pkgj allows to install original pkg files on your Vita.

This homebrew allows to download & unpack pkg file directly on Vita together with your NoNpDrm fake license.

  • easy way to see list of available downloads, including searching, filter & sorting.
  • standalone, no PC required, everything happens directly on Vita.
  • automatic download and unpack, just choose an item, and it will be installed, including bubble in live area.
Differences with PKGi:
  • queues multiple downloads.
  • supports the TSV file format.
  • installs game updates, DLCs, PSP and PSX games.
Current limitations:
  • no support for PSM.
  • no background downloads - if application is closed or Vita is put in sleep then download will stop.

Get latest version as vpk file here.

Setup instructions

Setup games databases URLs in ux0:pkgi/config.txt. The file format is the following:
url_games http://thesite/games.tsv
url_updates http://thesite/updates.tsv
url_dlcs http://thesite/dlcs.tsv
url_psx_games http://thesite/psxgames.tsv
url_psp_games http://thesite/pspgames.tsv
Then start the application and you are ready to go.

To avoid downloading pkg file over network, you can place it in ux0:pkgi folder. Keep the name of file same as in http url, or rename it with same name as contentid. pkgj will first check if pkg file can be read locally, and only if it is missing then pkgj will download it from http url.


Using application is pretty straight forward. Select item you want to install and press X. To sort/filter/search press triangle. It will open context menu. Press triangle again to confirm choice(s) you make in menu. Or press O to cancel any changes you did.

Press left or right button to move page up or down.

  1. Where to get zRIF string?
You must use NoNpDrm plugin to dump existing games you have. Plugin will generate rif file with fake license. Then you can use either web page or make_key to convert rif file to zRIF string.
  1. Where to get pkg URL?
You can use PSDLE to find pkg URL for games you own. Then either use original URL, or host the file on your own server.
  1. Where to remove interrupted/failed downloads to free up the space?
In ux0:pkgi folder - each download will be in separate folder by its title id. Simply delete the folder & resume file.
  1. Download speed is too slow!
Typically you should see speeds ~1-2 MB/s. This is normal for Vita hardware. Of course it also depends on WiFi router you have and WiFi signal strength. But sometimes speed will drop down to only few hundred KB/s. This happens for pkg files that contains many small files or many folders. Creating a new file or a new folder takes extra time which slows down the download.
  1. I want to install PSP games as EBOOT file.
Installing PSP games as EBOOT files is possible. It allows to install games faster and make them take less space. However, you will need to install the npdrm_free plugin to make them work.

To install PSP games as EBOOT files, just add the following line to your config:
install_psp_as_pbp 1
If you want to switch back to the other mode, simply remove the line. Writing 0 is not sufficient.
  1. I can't play PSP games, it says "The game could not be started (80010087)".
You need to install the npdrm_free plugin in VSH, or install games as ISO.
  1. I want to install PSP and PSX games on another partition.
You can change the partitions these games are installed to with the following configuration line:
install_psp_psx_location uma0:
The default value is ux0:


You need to have Vita SDK with libvita2d installed.

Run cmake . to create debug build, or cmake -DCMAKE_BUILD_TYPE=Release . to create optimized release build.

After than run make to create vpk file. You can set environment variable PSVITAIP (before running cmake) to IP address of Vita, that will allow to use make send for sending eboot.bin file directly to ux0:app/PKGI00000 folder.

To enable debugging logging pass -DPKGI_ENABLE_LOGGING=ON argument to cmake. Then application will send debug messages to UDP multicast address To receive them you can use socat on your PC:
$ socat udp4-recv:30000,ip-add-membership= -

This software is released under the 2-clause BSD license.

puff.h and puff.c files are under zlib license.

Cheers to @raedoob for the news tip on his Twitter feed earlier tonight! :beer:
PSVitaStuff v1.3.jpg

NoNPDRM Key RIF Extractor for PS Vita by Some1CP (S1CP).jpg



Senior Member
whats the use of this? I thought all game backup has vpk and just install them? what require nonpdrm? can we inject games to vita 3.61+?


Senior Member
No, we can now dump 3.61 but not use... We used to use vpk and file for install but could not use updates etc. Nonpdrm alows us to dump the full game and install using a fake licence (rif file)

That way all works updates etc where as old vpk is outdated now!

Chaos Kid

Senior Member
I have bin using updates with all my games since the beginning. as long as you do it within a specific sequence and never had a problem with them


Senior Member
For dumpt games (vitaman and chinese one) you can not install an update direct from sony! Yes you can dump the updates from an orig and install but now all change, encrypted, as they are origanl, one to one dumps with fake licence is allot better, allows duming of none working games and updates etc can be got direct, no messing about!!

All other ways are out dated!

Nonpdrm good for cart and some digital, makes a fake licence!
NoNPDRM Key RIF, licence extractor
PSVGameSD, dumps 1 to 1 dumpts of carts and loads throw its app/loader

Chaos Kid

Senior Member
Yes I know what your speaking of and yes I'm telling you I have using swap and gave no problems. sure it's not as convienent as decrypting and installing but there is always a way
Not open for further replies.

:fire: Latest Help Topics