Принудительно открывать и читать zip-файлы из php - PullRequest
0 голосов
/ 15 февраля 2011

Это может быть простой вопрос или довольно сложный вопрос, но пусть вы решите сами.

Использование PHP Чтобы открыть zip-файл, извлеките файлы в каталог и закройте zip-файл.сложный класс для создания.

Но давайте скажем, что файл не является zip, но все же может быть прочитан WinRar , примеры этих файлов похожи на SFX-архивы exe и т. д.

Какие факторы имеют все эти файлы в conmen, чтобы позволить WinRar просматривать их источник.

Другим примером является антивирусное программное обеспечение, которое по отдельности сканирует файлы в EXE-файле.?

Итак, что за пример:

$handle = fopen("an_unknown_file.abc", "rb");
while (!feof($handle))
{
    //What generic code could I use to determain weather the file can be extracted ?
}
fclose($handle);

С уважением.

Ответы [ 2 ]

3 голосов
/ 15 февраля 2011

Спецификации Zip позволяют вставлять фактическую часть файла "zip" В ЛЮБОМ МЕСТЕ внутри файла.Он не обязательно должен начинаться с позиции «0» в файле.Вот как работают самораспаковывающиеся молнии.Это небольшая программа-заглушка .exe, к концу которой добавлен более крупный файл .zip.

Поиск zip-файла - это в основном вопрос сканирования «магического числа» zip-файла в файле, а затем выполнениенесколько эвристик, чтобы определить, действительно ли это zip-файл или что-то случайное, содержащее магическое число zip.

Файл .docx - это на самом деле .zip, который содержит различные XML-файлы, представляющие файл Wordсодержание.Точно так же, как .jar - это zip-файл, который содержит различные фрагменты кода Java.

В Winrar есть куча дополнительного кода для сканирования файла и поиска любого идентифицируемого «это архив сжатия»подписи типа, одна из которых является подписью zip-файла.

В этом нет ничего волшебного.Это просто вопрос сканирования файла и поиска подписей.

1 голос
/ 15 февраля 2011

Не уверен, что именно ваш вопрос, но я думаю, что вы что-то путаете здесь ... Расширение файла может быть описано как просто удобный способ для людей и компьютеров соотносить расширения файлов с типом файла / программ, которые работают с ними. WinRar (или любая другая программа) читает, что содержит файл, и, если он может это понять, он работает с ним. Единственная важная вещь - то, что формат файла (данные в файле) является допустимым, и что программа, которую вы используете, может работать с этим форматом файла.

Таким образом, если файл в любом формате, с которым может работать WinRar (.rar, .zip, .gz и т. Д.), Его расширение может быть .txt или .wh бы ни было, и WinRar все равно сможет работать с ним , Расширение просто для удобства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...