def delBkup(backup): print 'Deleting Folder: ' + defs.getCmaDir() + '/EXTRACTED/' + load + '/' + backup shutil.rmtree(defs.getCmaDir() + '/EXTRACTED/' + load + '/' + backup) sys.stdout.flush() import sign sign.close_window(root) sign.vp_start_gui()
def createBackup(emulator, backup, account): print emulator, account, backup import unsign_support unsign_support.goUnsign(cmaBackup=backup, account=account, load="PGAME", resign=".") from distutils.dir_util import copy_tree print "Copying " + defs.getWorkingDir( ) + "/easyinstallers/EmuBubble/FILES/" + emulator + " To " + defs.getCmaDir( ) + "/EXTRACTED/PGAME/" + backup + "/game/ux0_pspemu_temp_game_PSP_GAME_" + backup + "/" copy_tree( defs.getWorkingDir() + "/easyinstallers/EmuBubble/FILES/" + emulator, defs.getCmaDir() + "/EXTRACTED/PGAME/" + backup + "/game/ux0_pspemu_temp_game_PSP_GAME_" + backup + "/") import sign_support sign_support.goSign(account, "PGAME", backup, True) print "Removing: " + defs.getCmaDir() + "/EXTRACTED/PGAME/" + backup shutil.rmtree(defs.getCmaDir() + "/EXTRACTED/PGAME/" + backup + "/") tkMessageBox.showinfo(title="Emulator Bubble", message=emulator + " Backup Created! (remember to refresh QCMA)") emububble.destroy_New_Toplevel_1() import easyinstallers.EmuBubble.chooseBackup as CB CB.destroy_Unsign_Backup()
def run(): CMA = defs.getCmaDir() if not os.path.exists(CMA + "/EXTRACTED/APP/PCSF00124"): shutil.copytree( defs.getWorkingDir() + "/easyinstallers/Skype/PCSF00124", CMA + "/EXTRACTED/APP/PCSF00124") signTo.vp_start_gui()
def decrypt(titleid): print("Preparing to PFS decrypt "+titleid) rifkey = getKey(titleid) CMADir = defs.getCmaDir() if rifkey == 404: return 404 if defs.getKeyType(rifkey) == "zrif": keyType = "--zRIF=" else: keyType = "--klicensee=" if os.path.exists(CMADir+'/EXTRACTED/APP/'+titleid+'/app/ux0_temp_game_'+titleid+'_app_'+titleid): if sys.platform.__contains__("linux" or "darwin"): cmd = defs.getWorkingDir()+'/psvpfsparser --title_id_src="'+CMADir+'/EXTRACTED/APP/'+titleid+'/app/ux0_temp_game_'+titleid+'_app_'+titleid+'" --title_id_dst="'+CMADir+'/EXTRACTED/DPFS/APP/'+titleid+'" '+str(keyType)+str(rifkey)+' --f00d_url=cma.henkaku.xyz' elif sys.platform.__contains__("win") and not sys.platform.__contains__("darwin"): cmd = defs.getWorkingDir() + '\\psvpfsparser.exe --title_id_src="' + CMADir + '\\EXTRACTED\\APP\\' + titleid + '\\app\\ux0_temp_game_' + titleid + '_app_' + titleid + '" --title_id_dst="' + CMADir + '\\EXTRACTED\\DPFS\\APP\\' + titleid + '" ' + str(keyType) + str(rifkey) + ' --f00d_url=cma.henkaku.xyz' print "Executing: "+cmd os.system(cmd) if os.path.exists(CMADir+'/EXTRACTED/APP/'+titleid+'/patch/ux0_temp_game_'+titleid+'_patch_'+titleid): if sys.platform.__contains__("linux" or "darwin"): cmd = defs.getWorkingDir()+'/psvpfsparser --title_id_src="'+CMADir+'/EXTRACTED/APP/'+titleid+'/patch/ux0_temp_game_'+titleid+'_patch_'+titleid+'" --title_id_dst="'+CMADir+'/EXTRACTED/DPFS/PATCH/'+titleid+'" '+str(keyType)+str(rifkey)+' --f00d_url=cma.henkaku.xyz' elif sys.platform.__contains__("win") and not sys.platform.__contains__("darwin"): cmd = defs.getWorkingDir() + '\\psvpfsparser.exe --title_id_src="' + CMADir + '\\EXTRACTED\\APP\\' + titleid + '\\patch\\ux0_temp_game_' + titleid + '_patch_' + titleid + '" --title_id_dst="' + CMADir + '\\EXTRACTED\\DPFS\\PATCH\\' + titleid + '" ' + str(keyType) + str(rifkey) + ' --f00d_url=cma.henkaku.xyz' print "Executing: "+cmd os.system(cmd) if os.path.exists(CMADir+'/EXTRACTED/APP/'+titleid+'/savedata/ux0_temp_game_'+titleid+'_savedata_'+titleid): if sys.platform.__contains__("linux" or "darwin"): cmd = defs.getWorkingDir()+'/psvpfsparser --title_id_src="'+CMADir+'/EXTRACTED/APP/'+titleid+'/savedata/ux0_temp_game_'+titleid+'_savedata_'+titleid+'" --title_id_dst="'+CMADir+'/EXTRACTED/DPFS/SAVEDATA/'+titleid+'" --f00d_url=cma.henkaku.xyz' elif sys.platform.__contains__("win") and not sys.platform.__contains__("darwin"): cmd = defs.getWorkingDir() + '\\psvpfsparser.exe --title_id_src="' + CMADir + '\\EXTRACTED\\APP\\' + titleid + '\\savedata\\ux0_temp_game_' + titleid + '_savedata_' + titleid + '" --title_id_dst="' + CMADir + '\\EXTRACTED\\DPFS\\SAVEDATA\\' + titleid + '" --f00d_url=cma.henkaku.xyz' print "Executing: "+cmd os.system(cmd)
def run(): CMA = defs.getCmaDir() if not os.path.exists(CMA + "/EXTRACTED/APP/HIDENAPPS"): shutil.copytree( defs.getWorkingDir() + "/easyinstallers/HiddenApps/HIDENAPPS", CMA + "/EXTRACTED/APP/HIDENAPPS") signTo.vp_start_gui()
def pfdecrypt(titleid): if pfs.isKeyKnown(titleid): if tkMessageBox.askyesno(title="PFS", message="Decrypt PFS For " + titleid + "?"): pfs.decrypt(titleid) tkMessageBox.showinfo(title="PFS", message="PFS Decrypted For " + titleid) elif os.path.exists(defs.getCmaDir() + "/EXTRACTED/APP/" + titleid + "/savedata"): pfs.decryptSavedata(titleid) tkMessageBox.showinfo( title="PFS", message= "Savedata was decrypted, game files where NOT decrypted (PFS Key Is Unknown)" ) if not pfs.isKeyKnown(titleid): newKey = tkSimpleDialog.askstring( title="PFS", prompt="PFS Decryption Key Is Unknown For " + titleid + ".\nIf You Have The Key In Either KLicensee Or zRIF Format\nEnter It Below:" ) if newKey != "": pfs.addKey(titleid, newKey) tkMessageBox.showinfo(title="Added Key For: " + titleid + " To The Key Database.") pfs.decrypt(titleid) tkMessageBox.showinfo(title="PFS", message="PFS Decrypted For " + titleid)
def run(): CMA = defs.getCmaDir() if not os.path.exists(CMA + "/EXTRACTED/APP/VITASHELL"): shutil.copytree( defs.getWorkingDir() + "/easyinstallers/VitaShell/VITASHELL", CMA + "/EXTRACTED/APP/VITASHELL") signTo.vp_start_gui()
def __init__(self, top=None): '''This class configures and populates the toplevel window. top is the toplevel containing window.''' _bgcolor = '#d9d9d9' # X11 color: 'gray85' _fgcolor = '#000000' # X11 color: 'black' _compcolor = '#d9d9d9' # X11 color: 'gray85' _ana1color = '#d9d9d9' # X11 color: 'gray85' _ana2color = '#d9d9d9' # X11 color: 'gray85' font10 = "-family {DejaVu Sans Mono} -size 12 -weight normal " \ "-slant roman -underline 0 -overstrike 0" self.style = ttk.Style() if sys.platform == "win32": self.style.theme_use('winnative') self.style.configure('.', background=_bgcolor) self.style.configure('.', foreground=_fgcolor) self.style.map('.', background=[('selected', _compcolor), ('active', _ana2color)]) top.geometry("750x500+218+86") top.title("Select Backup") top.configure(highlightcolor="black") CMA = defs.getCmaDir() a = 0 self.Label1 = Label(top) self.Label1.place(relx=0.02, rely=0.02, height=18, width=96) self.Label1.configure(text='''Patch: ''') self.Label1.configure(width=96) self.backupList = ScrolledListBox(top) self.backupList.place(relx=0.01, rely=0.06, relheight=0.87, relwidth=0.97) self.backupList.configure(background="white") self.backupList.configure(font=font10) self.backupList.configure(highlightcolor="#d9d9d9") self.backupList.configure(selectbackground="#c4c4c4") self.backupList.configure(width=10) print "Looking For Backups In: " + CMA + "/PGAME/" + defs.getAid( account) for root, dir, files in os.walk(CMA + "/PGAME/" + defs.getAid(account)): for items in fnmatch.filter(dir, "*"): a += 1 if defs.isEncryptedApp(CMA + "/PGAME/" + defs.getAid(account) + "/" + items): title = sfoParser.main(CMA + "/PGAME/" + defs.getAid(account) + "/" + items + "/sce_sys/param.sfo") self.backupList.insert(a, title + " (" + items + ")") self.Button1 = Button(top) self.Button1.place(relx=0.83, rely=0.94, height=26, width=117) self.Button1.configure(activebackground="#d9d9d9") self.Button1.configure(command=lambda: patch( defs.getTitleID(self.backupList.get(ACTIVE)))) self.Button1.configure(text='''Patch W ARK-2''')
def decryptSavedata(titleid): CMADir = defs.getCmaDir() if os.path.exists(CMADir+'/EXTRACTED/APP/'+titleid+'/savedata/ux0_temp_game_'+titleid+'_savedata_'+titleid): if sys.platform.__contains__("linux" or "darwin"): cmd = defs.getWorkingDir()+'/psvpfsparser --title_id_src="'+CMADir+'/EXTRACTED/APP/'+titleid+'/savedata/ux0_temp_game_'+titleid+'_savedata_'+titleid+'" --title_id_dst="'+CMADir+'/EXTRACTED/DPFS/SAVEDATA/'+titleid+'" --f00d_url=cma.henkaku.xyz' elif sys.platform.__contains__("win") and not sys.platform.__contains__("darwin"): cmd = defs.getWorkingDir() + '\\psvpfsparser.exe --title_id_src="' + CMADir + '\\EXTRACTED\\APP\\' + titleid + '\\savedata\\ux0_temp_game_' + titleid + '_savedata_' + titleid + '" --title_id_dst="' + CMADir + '\\EXTRACTED\\DPFS\\SAVEDATA\\' + titleid + '" --f00d_url=cma.henkaku.xyz' print "Executing: "+cmd os.system(cmd)
def auto(): import cmaDir defs.autoCMA() path = defs.getCmaDir() cmaDir.close_window(root) tkMessageBox.showinfo(title="Cma Directory", message="Detected: [" + path + "]!") sys.stdout.flush()
def cmbackup(): cmfile = tkFileDialog.askopenfilename(title='Select cmbackup', filetypes=[ ('Unsigned CMA Backup Files', '*.cmbackup') ]) if cmfile.__contains__("Gravity Rush FULL GAME (3.61 only!).cmbackup"): print "DO WHAT YOU WANT CAZ A PIRATE IS FREE!!" zf = zipfile.ZipFile(cmfile) try: zf.extract(member="load.txt", path="temp") zf.extract(member="TitleID.txt", path="temp") except KeyError: tkMessageBox.showerror(title="Error 094", message="Invalid .cmbackup!") zf.close() load = open('temp/load.txt', 'r') loadtype = load.read() load.close() backupfile = open('temp/TitleID.txt', 'r') CMABACKUP = backupfile.read() backupfile.close() os.remove("temp/load.txt") os.remove("temp/TitleID.txt") os.removedirs("temp") print "Extracting CMBackup.." defs.extractZip(src=cmfile, dst=defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP) os.remove(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + "/" + "load.txt") os.remove(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + "/" + "TitleID.txt") if os.path.exists(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + '/savedata'): savedata = tkMessageBox.askyesno( title="Savedata", message= "This .cmbackup contains savedata, would you like to use this savedata?\nYou may have problems with trophy eligiby if you do." ) if savedata == False: shutil.rmtree(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + '/savedata') os.remove(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + '/savedata.psvmd-dec') accSelect_support.pushVars(CMABACKUP, loadtype) import sign sign.close_window(root) accSelect.vp_start_gui() print "Removing: " + defs.getCmaDir( ) + '/EXTRACTED/' + loadtype + "/" + CMABACKUP shutil.rmtree(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP)
def cmbackupextract(account, file=""): if file == "": cmfile = tkFileDialog.askopenfilename(title='Select cmbackup', filetypes=[ ('Unsigned CMA Backup Files', '*.cmbackup') ]) else: cmfile = file if cmfile.__contains__("Gravity Rush FULL GAME (3.61 only!).cmbackup"): print "DO WHAT YOU WANT CAZ A PIRATE IS FREE!!" zf = zipfile.ZipFile(cmfile) try: zf.extract(member="load.txt", path="temp") zf.extract(member="TitleID.txt", path="temp") except KeyError: tkMessageBox.showerror(title="Error 094", message="Invalid .cmbackup!") zf.close() load = open('temp/load.txt', 'r') loadtype = load.read() load.close() backupfile = open('temp/TitleID.txt', 'r') CMABACKUP = backupfile.read() backupfile.close() os.remove("temp/load.txt") os.remove("temp/TitleID.txt") os.removedirs("temp") defs.extractZip(src=cmfile, dst=defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP) os.remove(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + "/" + "load.txt") os.remove(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + "/" + "TitleID.txt") if os.path.exists(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + '/savedata') == True: savedata = tkMessageBox.askyesno( title="Savedata", message= "This .cmbackup contains savedata, would you like to use this savedata?\nYou may have problems with trophy eligiby if you do." ) if savedata == False: shutil.rmtree(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + '/savedata') os.remove(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP + '/savedata.psvmd-dec') sign_support.goSign(account, loadtype, CMABACKUP, True) shutil.rmtree(defs.getCmaDir() + '/EXTRACTED/' + loadtype + "/" + CMABACKUP) print "Done! Backup created" tkMessageBox.showinfo(title="Done!", message="Done!, Backup Created.") if file != "": sys.exit()
def set(newTitleId,oldTitleId,account): newTitleId = str(newTitleId).upper() if len(newTitleId) != 9: tkMessageBox.showerror(title="Length Error",message="The TitleID you entered is NOT 9 characters Long.") sys.exit() if not defs.doesStringContain("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",newTitleId): tkMessageBox.showerror(title="Character Error",message="The TitleID contains an invalid character") sys.exit() with open(defs.getCmaDir()+'/EXTRACTED/PGAME/'+oldTitleId+"/sce_sys/param.sfo", 'rb') as file: filedata = file.read() filedata = filedata.replace(oldTitleId, newTitleId) with open(defs.getCmaDir()+'/EXTRACTED/PGAME/'+oldTitleId+"/sce_sys/param.sfo", 'wb') as file: file.write(filedata) print "param.sfo Patched" with open(defs.getCmaDir()+'/EXTRACTED/PGAME/'+oldTitleId+"/game/ux0_pspemu_temp_game_PSP_GAME_"+oldTitleId+"/VITA_PATH.TXT", 'rb') as file: filedata = file.read() filedata = filedata.replace(oldTitleId, newTitleId) with open(defs.getCmaDir()+'/EXTRACTED/PGAME/'+oldTitleId+"/game/ux0_pspemu_temp_game_PSP_GAME_"+oldTitleId+"/VITA_PATH.TXT", 'wb') as file: file.write(filedata) print "VITA_PATH.TXT Patched" os.rename(defs.getCmaDir()+'/EXTRACTED/PGAME/'+oldTitleId+"/game/ux0_pspemu_temp_game_PSP_GAME_"+oldTitleId,defs.getCmaDir()+'/EXTRACTED/PGAME/'+oldTitleId+"/game/ux0_pspemu_temp_game_PSP_GAME_"+newTitleId) print "ux0_pspemu_temp_game_PSP_GAME_"+oldTitleId+" Renamed to "+"ux0_pspemu_temp_game_PSP_GAME_"+newTitleId os.rename(defs.getCmaDir()+'/EXTRACTED/PGAME/'+oldTitleId,defs.getCmaDir()+'/EXTRACTED/PGAME/'+newTitleId) print oldTitleId+" Renamed to "+newTitleId print "Patching Complete.." print "Signing.." import sign_support sign_support.goSign(acc=account,ld="PGAME",bkup=newTitleId,resign=True) print "Removing... "+defs.getCmaDir()+'/EXTRACTED/PGAME/'+newTitleId shutil.rmtree(defs.getCmaDir()+'/EXTRACTED/PGAME/'+newTitleId) destroy_window() tkMessageBox.showinfo(title="Done!",message="PSP Bubble Cloned with TitleID "+newTitleId) sys.stdout.flush()
def goSign(acc, ld, bkup, resign): global am global foldParams CMA = defs.getCmaDir() cmaKey = defs.getStoredKey(acc) cmaAID = defs.getAid(acc) import sys print ld if ld != 'SYSTEM': if ld == 'PGAME': foldParams = ['game', 'license'] am = 1 elif ld == 'APP': foldParams = [ 'app', 'patch', 'addcont', 'appmeta', 'license', 'savedata' ] am = 5 elif ld == 'PSGAME': foldParams = ['game', 'license'] am = 1 elif ld == 'PSM': foldParams = ['game', 'license', 'patch', 'savedata'] am = 3 print 'Checking for Packed Backup..' if os.path.exists(CMA + '/' + ld + '/' + cmaAID + '/' + bkup): print "Packed backup allredy exists. removing.." shutil.rmtree(CMA + '/' + ld + '/' + cmaAID + '/' + bkup) print 'Packing backup..' else: print "Nope, Packing Backup.." if not os.path.exists(CMA + '/' + ld + '/' + cmaAID + '/' + bkup): os.makedirs(CMA + '/' + ld + '/' + cmaAID + '/' + bkup) while am != -1: if not os.path.exists(CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/' + foldParams[am]): if os.path.exists(CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[am]): os.makedirs(CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/' + foldParams[am]) am -= 1 if ld == 'PGAME': foldParams = ['game', 'license'] am = 1 elif ld == 'APP': foldParams = [ 'app', 'patch', 'addcont', 'appmeta', 'license', 'savedata' ] am = 5 elif ld == 'PSGAME': foldParams = ['game', 'license'] am = 1 elif ld == 'PSM': foldParams = ['app'] am = 0 while am != -1: if sys.platform.__contains__('linux') or sys.platform.__contains__( 'darwin'): print 'Executing: ./psvimg-create -m ' + '"' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[ am] + '.psvmd-dec" -K ' + cmaKey + ' "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[ am] + '" "' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/' + foldParams[ am] + '"' os.system('./psvimg-create -m "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[am] + '.psvmd-dec" -K ' + cmaKey + ' "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[am] + '" "' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/' + foldParams[am] + '"') am -= 1 if sys.platform.__contains__( 'win') and not sys.platform.__contains__("darwin"): print 'Executing: psvimg-create.exe -m ' + '"' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[ am] + '.psvmd-dec" -K ' + cmaKey + ' "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[ am] + '" "' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/' + foldParams[ am] + '"' os.system('psvimg-create.exe -m ' + '"' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[am] + '.psvmd-dec" -K ' + cmaKey + ' "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/' + foldParams[am] + '" "' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/' + foldParams[am] + '"') am -= 1 if not os.path.exists(CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/sce_sys'): print 'Copying Folder: ' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '/sce_sys To: ' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/sce_sys' shutil.copytree( CMA + '/EXTRACTED/' + ld + '/' + bkup + '/sce_sys', CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/sce_sys') elif ld == 'SYSTEM': if sys.platform.__contains__('linux') or sys.platform.__contains__( 'darwin'): print 'Executing: ./psvimg-create -m ' + '"' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '.psvmd-dec" -K ' + cmaKey + ' "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '" "' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '"' os.system('./psvimg-create -m "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '.psvmd-dec" -K ' + cmaKey + ' "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '" "' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '"') if sys.platform.__contains__( 'win') and not sys.platform.__contains__("darwin"): print 'Executing: psvimg-create.exe -m ' + '"' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '.psvmd-dec" -K ' + cmaKey + ' "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '" "' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '"' os.system('psvimg-create.exe -m ' + '"' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '.psvmd-dec" -K ' + cmaKey + ' "' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '" "' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '"') print 'Copying File: ' + CMA + '/EXTRACTED/' + ld + '/' + bkup + '.psvinf To: ' + CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/' + bkup + '.psvinf' shutil.copy( CMA + '/EXTRACTED/' + ld + '/' + bkup + '.psvinf', CMA + '/' + ld + '/' + cmaAID + '/' + bkup + '/' + bkup + '.psvinf') if resign == False: tkMessageBox.showinfo(title='Pack', message='Packing Complete! (Refresh QCMA!)') import sign sign.vp_start_gui()
def expBkup(backup): print 'Opening Folder: ' + defs.getCmaDir( ) + '/EXTRACTED/' + load + '/' + backup openFolder(defs.getCmaDir() + '/EXTRACTED/' + load + '/' + backup) sys.stdout.flush()
global val, w, root root = Tk() if sys.platform.__contains__( "win") and not sys.platform.__contains__("darwin"): import defs root.iconbitmap(bitmap=defs.getWorkingDir() + '\icon.ico') top = Unsign_Backup(root) unsign_support.init(root, top) root.mainloop() def close_window(root): root.destroy() CMA = defs.getCmaDir() def patch(backup): import sign_support unsign_support.pushVars(account, "SYSTEM", ".") unsign_support.goUnsign(backup, CMA) print "Patching With Hacked Whitelist" dbPath = CMA + "/EXTRACTED/SYSTEM/" + backup + "/ur0_shell/db/app.db" print "Opening: " + dbPath appDatabase = sqlite3.connect(dbPath) print "Executing " + sqlQuery + "To app.db!" appDatabase.executescript(sqlQuery) appDatabase.close() sign_support.goSign(account, "SYSTEM", backup, True) tkMessageBox.showinfo(title="WHITELISTER",
def goUnsign(cmaBackup, CMA=defs.getCmaDir(), cmbackup=False, load="", account="", resign=False): if cmbackup == True: title = sfoParser.main(CMA + '/' + load + '/' + defs.getAid(account) + '/' + cmaBackup + '/sce_sys/param.sfo') try: location = tkFileDialog.asksaveasfilename( title='Select location', filetypes=[('Unsigned CMA Backup File', '*.cmbackup')], initialfile=title) except: location = tkFileDialog.asksaveasfilename( title='Select location', filetypes=[('Unsigned CMA Backup File', '*.cmbackup')], initialfile=cmaBackup) try: print 'location: ' + location except TypeError: tkMessageBox.showerror( title="Error 302", message= "ERROR: You did not select a location to create the .cmbackup!" ) import sys sys.exit() print "Checking if allready extracted backup exists..." if os.path.exists(CMA + '/EXTRACTED/' + load + '/' + cmaBackup): print 'Backup Found! Removing...' shutil.rmtree(CMA + '/EXTRACTED/' + load + '/' + cmaBackup) print 'Extracting backup..' else: print 'Nope! Extracting backup..' global am global foldParams import unsign unsign.close_window(root) key = open('keys/' + account, 'r') cmaKey = key.read() aid = open('accounts/' + account, 'r') cmaAID = aid.read() import sys if load != 'SYSTEM': if load == 'PGAME': foldParams = ['game', 'license'] am = 1 elif load == 'APP': foldParams = [ 'app', 'patch', 'addcont', 'appmeta', 'license', 'savedata' ] am = 5 elif load == 'PSGAME': foldParams = ['game', 'license'] am = 1 elif load == 'PSM': foldParams = ['game', 'license', 'patch', 'savedata'] am = 3 if not os.path.exists(CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/'): os.makedirs(CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/') while am != -1: if os.path.exists(CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[am] + '/'): if not os.path.exists(CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[am]): os.makedirs(CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[am]) am -= 1 if load == 'PGAME': foldParams = ['game', 'license'] am = 1 elif load == 'APP': foldParams = [ 'app', 'patch', 'addcont', 'appmeta', 'license', 'savedata' ] am = 5 elif load == 'PSGAME': foldParams = ['game', 'license'] am = 1 elif load == 'PSM': foldParams = ['app'] am = 0 while am != -1: if sys.platform.__contains__('linux') or sys.platform.__contains__( 'darwin'): print 'Executing: ./psvimg-extract -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[ am] + '/' + foldParams[ am] + '.psvimg" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[ am] + '"' os.system('./psvimg-extract -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[am] + '/' + foldParams[am] + '.psvimg" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[am] + '"') print 'Executing: ./psvmd-decrypt -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[ am] + '/' + foldParams[ am] + '.psvmd" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[ am] + '.psvmd-dec"' os.system('./psvmd-decrypt -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[am] + '/' + foldParams[am] + '.psvmd" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[am] + '.psvmd-dec"') am -= 1 if sys.platform.__contains__( 'win') and not sys.platform.__contains__("darwin"): print 'Executing: psvimg-extract.exe -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[ am] + '/' + foldParams[ am] + '.psvimg ' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[ am] os.system('psvimg-extract.exe -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[am] + '/' + foldParams[am] + '.psvimg" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[am] + '"') print 'Executing: psvmd-decrypt.exe -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[ am] + '/' + foldParams[ am] + '.psvmd" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[ am] + '.psvmd-dec"' os.system('psvmd-decrypt.exe -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + foldParams[am] + '/' + foldParams[am] + '.psvmd" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/' + foldParams[am] + '.psvmd-dec"') am -= 1 if not os.path.exists(CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/sce_sys'): print 'Copying Folder: ' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/sce_sys' + ' To: ' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/sce_sys' shutil.copytree( CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/sce_sys', CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/sce_sys') elif load == 'SYSTEM': if sys.platform.__contains__('linux') or sys.platform.__contains__( 'darwin'): print 'Executing: ./psvimg-extract -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvimg" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '"' os.system('./psvimg-extract -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvimg" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '"') print 'Executing: ./psvmd-decrypt -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvmd" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '.psvmd-dec"' os.system('./psvmd-decrypt -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvmd" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '.psvmd-dec"') if sys.platform.__contains__( 'win') and not sys.platform.__contains__("darwin"): print 'Executing: psvimg-extract.exe -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvimg" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '"' os.system('psvimg-extract.exe -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvimg" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '"') print 'Executing: psvmd-decrypt.exe -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvmd" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '.psvmd-dec"' os.system('psvmd-decrypt.exe -K ' + cmaKey + ' "' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvmd" "' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '.psvmd-dec"') print 'Copying File: ' + CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvinf' + ' To: ' + CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '.psvinf' if os.path.exists(CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvinf'): shutil.copy( CMA + '/' + load + '/' + cmaAID + '/' + cmaBackup + '/' + cmaBackup + '.psvinf', CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '.psvinf') if resign == False and cmbackup == False: tkMessageBox.showinfo(title='Extract', message='Extraction Complete!') if pfs.isKeyKnown(cmaBackup): if tkMessageBox.askyesno( title="PFS", message= "The PFS Key for this application is known\nWould you like to decrypt PFS as well?" ): pfs.decrypt(cmaBackup) tkMessageBox.showinfo(title="PFS", message="PFS Decrypted for " + cmaBackup) import unsign unsign.vp_start_gui() elif resign == True: loaad = load accSelect_support.resignVars(cmaBackup, load) backupType_support.action('resign2') accSelect.vp_start_gui() elif cmbackup == True: print 'Creating .cmbackup' print 'Writing load.txt' loadtext = open( CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/load.txt', 'w') loadtext.write(load) loadtext.close() print 'Writing TitleID.txt' loadtext = open( CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/TitleID.txt', 'w') loadtext.write(cmaBackup) loadtext.close() print 'Checking for savedata..' if os.path.exists(CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/savedata'): savedata = tkMessageBox.askyesno( title="Savedata", message= "This Backup Contains Savedata, Would you like to pack that into the .CMBACKUP File?\nSavedata could potentailly contain personal infomation!!" ) if savedata == False: shutil.rmtree(CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/savedata') os.remove(CMA + '/EXTRACTED/' + load + '/' + cmaBackup + '/savedata.psvmd-dec') print 'Writing .cmbackup file..' defs.zip(src=CMA + '/EXTRACTED/' + load + '/' + cmaBackup, dst=location) print "Removing: " + CMA + '/EXTRACTED/' + load + '/' + cmaBackup shutil.rmtree(CMA + '/EXTRACTED/' + load + '/' + cmaBackup) print "Done! CMBackup Created!" tkMessageBox.showinfo(title='CMBACKUP', message='.cmbackup Created.') sys.stdout.flush()
def run(): CMA = defs.getCmaDir() if not os.path.exists(CMA + "/EXTRACTED/APP/PCSI00011"): shutil.copytree(defs.getWorkingDir() + "/easyinstallers/PSMRuntime/PCSI00011", CMA + "/EXTRACTED/APP/PCSI00011") import easyinstallers.PSMRuntime.signTo as signTo signTo.vp_start_gui()