zlib — вырезать строку и gunzip с помощью переполнения стека

У меня есть файл экспорта конфигурации маршрутизатора, который содержит заголовок из 20 байтов, за которым следуют сжатые данные zlib. После распаковки он должен содержать простой XML-контент.

Мой код удаляет первые 20 байтов и распаковывает файл. Экспортируемые данные все еще являются двоичными. Сначала я использовал file_get_contents и file_put_contents, но предположил (ошибочно), что это не безопасно для двоичного кода. Я пытался изменить 20 в 1-1000 безрезультатно.

<?
$fp_orig        = fopen('config.cfg', "rb");
$data_orig      = fread($fp_orig, filesize('config.cfg'));
fclose($fp_orig);

$bytes          = 20;  // tried 1-1000
$data_gz        = substr($data_orig,$bytes);

$fp_gz          = fopen('config.cfg.gz', 'w');
fwrite($fp_gz, $data_gz);
fclose($fp_gz);

$fp_gz          = gzopen('config.cfg.gz', 'rb');
$fp_xml         = fopen('config.cfg.xml', 'wb');
while(!gzeof($fp_gz))
{
fwrite($fp_xml, gzread($fp_gz, 4096));
}
fclose($fp_xml);
gzclose($fp_gz);

echo file_get_contents('config.cfg.xml'); // gives binary data
?>

Я не особенно ищу рабочий код под ключ, а скорее толчок в правильном направлении.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]