use integer; if ($#ARGV<2){ die "Usage: skysave.pl <4_digit_CTR_code>"; } open INFILE,$ARGV[0] or die; $CTR=uc($ARGV[2]); seek (INFILE, $start, SEEK_SET); while(){ if (m/.*?((CTR-P-)?$CTR).*?/) { open OUTFILE,">$CTR.sav" or die; binmode OUTFILE; print OUTFILE "CTR_SAVE$1\0\0\xFF\xFF\xFF\xFF"; while(){ if (m/.*?SHA1:/) { for ($i=0; $i<4; $i++){ readline INFILE; } for ($i=0; $i<4; $i++){ foreach $a (split(' ',readline INFILE)){ print OUTFILE chr(hex($a)); } } close INFILE; open INFILE,$ARGV[1] or die; binmode INFILE; $size=0; while(read INFILE, $buffer, 0x20000){ print OUTFILE $buffer; $size+=0x20000; } while($size<0x100000){ print OUTFILE "\xFF"; $size++; } close INFILE; close OUTFILE; exit; } } exit; } } close INFILE;