Esempio n. 1
0
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()
Esempio n. 2
0
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()
Esempio n. 3
0
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()
Esempio n. 4
0
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)
Esempio n. 5
0
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()
Esempio n. 6
0
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)
Esempio n. 7
0
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''')
Esempio n. 9
0
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()
Esempio n. 11
0
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()
Esempio n. 13
0
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",
Esempio n. 17
0
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()
Esempio n. 18
0
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()