Skip to content

Instantly share code, notes, and snippets.

@dantarion
Created March 14, 2017 01:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dantarion/68a76856c3e028d2d7d05e51211768f7 to your computer and use it in GitHub Desktop.
Save dantarion/68a76856c3e028d2d7d05e51211768f7 to your computer and use it in GitHub Desktop.
import os,glob,zlib
def extract(filename):
from struct import unpack,pack
f = open(filename,"rb")
print f.read(4)[0:-1]
version, fileCount = unpack("hh",f.read(4))
print version,fileCount
for i in range(0,fileCount):
f.seek(0x8+i*80)
name = f.read(64).split("\x00")[0]
data = unpack("4i",f.read(16))
print name,data,
f.seek(data[3])
realdata = zlib.decompress(f.read(data[1]))
name = name+"." +realdata[0:4].split("\x00")[0]
print name
outdir = "out/"+os.path.dirname(name)
if not os.path.exists(outdir): os.makedirs(outdir)
outfile = open("out/"+name,"wb")
outfile.write(realdata)
outfile.close()
for filename in os.listdir("archive"):
if ".arc" not in filename: continue
print filename
extract("archive\\"+filename)
#break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment