Skip to content

Instantly share code, notes, and snippets.

@dantarion
Created May 9, 2016 14:19
Show Gist options
  • Save dantarion/c84e7ae618c18cb735342156e6bc8849 to your computer and use it in GitHub Desktop.
Save dantarion/c84e7ae618c18cb735342156e6bc8849 to your computer and use it in GitHub Desktop.
import os
import zlib
from struct import pack,unpack
def extractFile(filename):
f = open(filename,"rb")
f.seek(0x14)
unknown, filecount = unpack(">HH",f.read(4))
f.seek(0x60)
dirpath = filename.replace(".drp","")
if not os.path.isdir(dirpath):
os.makedirs(dirpath)
for i in range(0, filecount):
try:
fname = f.read(0x40).split("\x00")[0]
if os.path.isfile(os.path.join(dirpath,fname+".bin")):
continue
#print "\t",fname,
f.seek(0x10,1)
fsize, fsize2, fsize3, fsize4,uncompressedSize = unpack(">5I",f.read(4*5))
#print fsize, fsize2, fsize3, fsize4,hex(uncompressedSize)
data = f.read(fsize2-4)
if fsize > 80:
data = zlib.decompress(data)
out = open(os.path.join(dirpath,fname+".bin"),"wb")
out.write(data)
out.close()
except:
print "\tError with ",filename,fname
return
for root,dirs,files in os.walk("disc\\WiiU-Decrypted\\"):
for filename in files:
if ".drp" not in filename:
continue
extractFile(os.path.join(root,filename))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment