
OBB Extractor by Pinkazoid
By: a guest on
Nov 14th, 2012 | syntax:
Perl | size: 1.24 KB | hits: 273 | expires: Never
#!/usr/bin/perl
#OBB Extractor by Pinkazoid
use Fcntl;
use File::Path;
use File::Basename;
$basepath = 'ponydata/';
open(INFILE,"<main.1050.com.gameloft.android.ANMP.GloftPOHM.obb");
binmode(INFILE);
open(IDXFILE,'>ponydata.txt');
if (read(INFILE,$fat,9) == 9) {
seek (INFILE,$fat,SEEK_SET);
while ($data = <INFILE>) {
print IDXFILE $data;
chomp($data);
push @filelist,$data;
}
} else {
print "Unable to read first 9 bytes for file table location, aborting.\n";
end;
}
close(IDXFILE);
foreach $data (@filelist) {
($start,$end,$junk,$junk,$filepath) = split(/\s+/,$data,5);
if ($filepath =~ /\//) {
my ($filename, $filedir) = fileparse($filepath);
$filedir = $basepath . $filedir;
if (!(-e $filedir)) {
mkpath($filedir);
}
}
if (open(OUTFILE,">$basepath$filepath")) {
binmode(OUTFILE);
seek (INFILE,$start,SEEK_SET);
$size = $end - $start;
if (read(INFILE,$buffer,$size) == $size) {
print OUTFILE $buffer;
} else {
print "Unable to read $size bytes at location $start, aborting.\n";
end;
}
close(OUTFILE);
} else {
print "Unable to open $basepath$filepath for writing, aborting.\n";
end;
}
}
close(INFILE);