Example #1
0
function getlist()
{
    $f = fopen('data_t.jp.pac', 'rb');
    $count = fread4($f);
    $tsize = fread4($f);
    $list = array();
    for ($n = 0; $n < $count; $n++) {
        $size = fread4($f);
        $offset = fread4($f);
        $name_data = fread($f, 0x200);
        list($name) = explode("", mb_convert_encoding($name_data, 'utf-8', 'UTF-16LE'), 2);
        $list[] = $name;
    }
    return $list;
}
Example #2
0
function pak_extract($file)
{
    $f = fopen($file, 'rb');
    $count = fread2($f) / 0x10;
    $l_pos = $l_name = array();
    for ($n = 0; $n < $count; $n++) {
        $name = rtrim(fread($f, 12), "");
        $pos = fread4($f);
        $l_name[] = $name;
        $l_pos[] = $pos;
    }
    fclose($f);
    //array_pop($l_name);
    $list = array();
    for ($n = 0, $l = count($l_name) - 1; $n < $l; $n++) {
        $list[] = array($l_name[$n], $l_pos[$n], $l_pos[$n + 1] - $l_pos[$n]);
    }
    pak_extract_real($file, $list);
    //print_r($list);
    /*
    $data = fread($f, );
    fread($f);
    */
}
Example #3
0
<?php

function fread4($f)
{
    list(, $v) = unpack('V', fread($f, 4));
    return $v;
}
if (!file_exists('data_t.jp.pac')) {
    copy('data_t.pac', 'data_t.jp.pac');
}
$f = fopen('data_t.jp.pac', 'rb');
$count = fread4($f);
$tsize = fread4($f);
$list = array();
for ($n = 0; $n < $count; $n++) {
    $size = fread4($f);
    $offset = fread4($f);
    $name_data = fread($f, 0x200);
    list($name) = explode("", mb_convert_encoding($name_data, 'utf-8', 'UTF-16LE'), 2);
    $list[] = array($name, $offset, $size);
}
foreach ($list as $file) {
    list($name, $offset, $size) = $file;
    @mkdir(dirname($name), 0777);
    fseek($f, $offset);
    file_put_contents($name, fread($f, $size));
}