Сообщение End of central directory signature not found означает, что программа не нашла обязательную конечную запись ZIP в ожидаемой области. Это не отдельный диагноз: файл мог скачаться не полностью, оказаться не ZIP, быть частью многотомного набора, иметь добавленные посторонние данные или действительно потерять конец структуры.
Для диагностики используйте копию файла в инструменте восстановления ZIP Helionix. Сначала нужно определить настоящую причину, а уже затем решать, есть ли смысл сканировать локальные записи.
Наиболее частые причины
| Причина | Признак | Первое действие |
|---|---|---|
| Неполное скачивание | Размер меньше указанного источником | Скачать повторно под новым именем |
| Это не ZIP | Внутри HTML ошибки или другой формат | Проверить сигнатуру и источник |
| Отсутствует часть набора | Рядом должны быть сегменты .z01, .z02 | Собрать все части |
| Обрезан конец | Локальные записи есть, EOCD отсутствует | Попытаться сохранить ранние записи |
Что делать пошагово
- Не переименовывайте оригинал в попытке «исправить» формат.
- Скопируйте файл и сравните его размер с источником.
- Проверьте, завершена ли синхронизация из облака или мессенджера.
- Откройте диагностику ошибки EOCD.
- Убедитесь, что начало файла содержит структуру ZIP, а не веб-страницу.
- Проверьте наличие многотомных сегментов.
- Если конец действительно утрачен, просканируйте локальные заголовки.
- Сохраните доступные записи в новый контейнер.
Почему смена расширения не помогает
Расширение — только часть имени. Оно не добавляет конечную запись, не восстанавливает смещения и не превращает HTML-страницу с сообщением об ошибке в архив. Иногда сервер отдаёт страницу авторизации под именем download.zip. Проверьте тип по внутренним сигнатурам и повторите загрузку после корректного входа.
EOCD и ZIP64
Обычный ZIP заканчивается записью End of Central Directory, где указаны число элементов, размер и смещение каталога, а также длина комментария. В ZIP64 дополнительно используются расширенная конечная запись и локатор. Программа, не поддерживающая ZIP64, способна выдать похожую ошибку на исправном большом файле. Поэтому важно отличить повреждение от несовместимости.
Можно ли найти EOCD поиском по байтам
Технически приложение ищет сигнатуру с конца, учитывая допустимую длину комментария. Но случайное совпадение байтов само по себе не доказывает валидность. Нужно проверить согласованность смещений, количества записей и границ файла. Ручное дописывание шаблонной подписи в конец почти всегда создаёт новый некорректный контейнер.
Когда восстановление возможно
Если отсутствует только каталог, а локальные заголовки и потоки данных сохранились, значительную часть файлов можно прочитать. Если загрузка оборвалась посередине, записи после точки обрыва отсутствуют физически. Последняя запись может быть частичной, а более ранние — исправными. Если файл целиком является не тем содержимым, ремонт ZIP неприменим.
Безопасность найденных записей
Сканирование не означает автоматическую распаковку. Проверяйте пути, заявленные размеры и количество элементов. Не сохраняйте найденные данные в системные каталоги и не запускайте программы из неизвестного источника. CRC подтверждает внутреннюю согласованность записи, но не её безвредность.
Посторонние данные до и после ZIP
Самораспаковывающийся архив может содержать исполняемую оболочку перед ZIP-структурой, а некоторые системы добавляют служебный хвост. Совместимый анализатор учитывает смещение и не требует, чтобы первая подпись находилась в нулевой позиции. Но произвольный хвост после EOCD, превышающий ожидаемую структуру, требует отдельной проверки. Не обрезайте его вручную: сначала сохраните копию, определите назначение данных и проверьте цифровую подпись или происхождение файла. Иначе можно удалить легитимную часть либо скрыть признак подмены.
Частые вопросы
Ошибка появилась после отправки по почте. Что делать?
Сравните размер вложения у отправителя и получателя, затем запросите повторную отправку или ссылку на облако. Почтовый клиент мог не завершить загрузку локальной копии.
Можно ли просто добавить EOCD?
Нет, запись содержит конкретные смещения и размеры каталога. Их нужно реконструировать на основе реальных локальных записей.
Почему один архиватор открывает файл, а другой нет?
Отличаются поддержка ZIP64, методов, нестандартных полей и терпимость к повреждению. Успешное отображение списка ещё не подтверждает CRC всех данных.
Итог
Ошибка EOCD чаще всего требует проверки полноты загрузки, истинного формата и всех томов. Только если конец действительно повреждён, переходите к реконструкции по локальным заголовкам и сохраняйте подтверждённые записи в новый ZIP.
