Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Разбор ZIP-файла / 18 сообщений из 18, страница 1 из 1
18.10.2013, 09:18
    #38432281
beef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
Всем привет.
Нужно разобрать ZIP.

Вот общая структура заголовка Local File Header, с которой ZIP должен начинаться:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Offset   Length   Contents
  0      4 bytes  Local file header signature (0x04034b50)
  4      2 bytes  Version needed to extract
  6      2 bytes  General purpose bit flag
  8      2 bytes  Compression method
 10      2 bytes  Last mod file time
 12      2 bytes  Last mod file date
 14      4 bytes  CRC-32
 18      4 bytes  Compressed size (n)
 22      4 bytes  Uncompressed size
 26      2 bytes  Filename length (f)
 28      2 bytes  Extra field length (e)
        (f)bytes  Filename
        (e)bytes  Extra field
        (n)bytes  Compressed data

Смотрю мой ZIP:

То, что там перед заголовком несколько байт - на это не обращайте внимания, я ZIP, начиная с заголовка, потом вырезал. Смотрим, начиная с префикса заголовка 0х04034b50. Первые 30 байт заголовка выделил красным и остаётся ещё перед именем файла 3 каких-то левых нулевых байта, хотя может они и не левые… я их, конечно, попробовал чисто на дурака удалить, но не прокатило (архив не распаковывается). Ещё смущает, что предпоследний красный блок (длина имени файла) как будто имеет значение 0A, что очевидно не соответствует действительности (если это длина, то вроде должна быть 0B).
Отмечу, что этот ZIP, который я пытаюсь разобрать, упаковывался не мной и неизвестно при каких обстоятельствах. Мне просто его дали, сказали, что это ZIP и нужно распаковать.

Для интереса, сам упаковал простенький ZIP и посмотрел его заголовок:

Здесь всё ожидаемо и соответствует формату.

Вопрос. Что может быть не так с моим ЗИПом? Какой-то расширенный формат заголовка или тупо файл до передачи в мои руки немного покоцался? Ещё раз говорю, что архиватором он не воспринимается.

PS Я привёл только первый заголовок, но другие необходимые зиповские заголовки в файле тоже есть и тоже не вполне соответствую формату, хотя очень похожи на правду.
Исходный файл прилагаю.
...
Рейтинг: 0 / 0
18.10.2013, 09:20
    #38432284
beef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
...
Рейтинг: 0 / 0
18.10.2013, 13:11
    #38432747
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
beef, на каком языке ты программируешь?
...
Рейтинг: 0 / 0
18.10.2013, 13:36
    #38432797
beef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
mayton,

вообще на разных) Эту задачу я должен сделать на C#, но не пойму, какое это имеет значение?
...
Рейтинг: 0 / 0
18.10.2013, 13:52
    #38432833
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
beefmayton,

вообще на разных) Эту задачу я должен сделать на C#, но не пойму, какое это имеет значение?
Когда будешь писать код который читает загловок (Header) ты вспомнишь мой вопрос.
Для С# почитай ссылку http://stackoverflow.com/questions/2384/read-binary-file-into-a-struct
Возможно пригодится.
...
Рейтинг: 0 / 0
18.10.2013, 14:28
    #38432905
beef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
maytonbeefmayton,

вообще на разных) Эту задачу я должен сделать на C#, но не пойму, какое это имеет значение?
Когда будешь писать код который читает загловок (Header) ты вспомнишь мой вопрос.
Для С# почитай ссылку http://stackoverflow.com/questions/2384/read-binary-file-into-a-struct
Возможно пригодится.

Спасибо, я посмотрю ссылку, но боюсь, вы меня неправильно поняли. Мне вообще-то не надо разбирать файл на заголовки и прочие части. Задача очень простая - распаковать файл хоть винраром, хоть любой другой программой. А проблема в том, что тот же винрар пишет, что архив повреждён.

А разбираться со структурой файла я начал только для того, чтобы понять, что с ним не так. В частности, выяснил, что заголовок Local File Header не совсем соответствует документации.
...
Рейтинг: 0 / 0
18.10.2013, 15:02
    #38432952
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
Тогда забей на программирование. В интернетах полно утилит для Zip Recovery. Скачай и пользуйся.
Если надо делать джоб или скедулер - разбери как работают их консольные варианты. Из личного
опыта 99% повреждений архива - это "недописанные" хвосты. Недокачанный файл по сути.

Прочие ошибки - нестандартный архиватор. Не Zip. Решение соотв - поиск той утилиты которая
его создала. Или патчинг своего.
...
Рейтинг: 0 / 0
18.10.2013, 15:38
    #38433029
beef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
mayton,

вот потому меня и смутил ваш вопрос насчёт языка, что программирования здесь по сути нет.
Перепробовал несколько утилит, в том числе Zip Recovery - не помогло.
Хвост похоже дописан правильно - там я обнаружил, как и полагается, структуру [end of central directory record]:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
      end of central dir signature    4 bytes  (0x06054b50)
      number of this disk             2 bytes
      number of the disk with the
      start of the central directory  2 bytes
      total number of entries in the
      central directory on this disk  2 bytes
      total number of entries in
      the central directory           2 bytes
      size of the central directory   4 bytes
      offset of start of central
      directory with respect to
      the starting disk number        4 bytes
      .ZIP file comment length        2 bytes
      .ZIP file comment       (variable size)

В этой структуре ничего лишнего не оказалось, всё соответствует формату.

В общем, похоже нужно действительно разбираться с архиватором.
...
Рейтинг: 0 / 0
18.10.2013, 15:45
    #38433040
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
Тема этого форума - программирование. И здесь обычно задают вопросы о написании
софта.

Использование софта, покупка, лицензирование и обучение - в другие форумы.
Поэтому мой о вопрос о выборе языка совершенно уместен.
...
Рейтинг: 0 / 0
18.10.2013, 15:48
    #38433049
beef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
beef,

кстати, общая задача - вытащить файл из электронного письма (файл является вложением) такого вида

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
заголовки
...
--uuid:58acaebc-26ee-46bb-b187-7d27a9eeb485
Content-Id:<69eee70b-0f5c-420d-ae9c-88aa3aaa03e3>
Content-Type: application/binary
Content-ID: 69eee70b-0f5c-420d-ae9c-88aa3aaa03e3
Content-Transfer-Encoding: binary

тут бинарный код файл
--uuid:58acaebc-26ee-46bb-b187-7d27a9eeb485--

Может есть какие-то особенности при разборе именно писем?
...
Рейтинг: 0 / 0
18.10.2013, 15:51
    #38433053
beef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
maytonТема этого форума - программирование. И здесь обычно задают вопросы о написании
софта.

Использование софта, покупка, лицензирование и обучение - в другие форумы.
Поэтому мой о вопрос о выборе языка совершенно уместен.

Понял.
...
Рейтинг: 0 / 0
18.10.2013, 16:41
    #38433167
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
beefПервые 30 байт заголовка выделил красным и остаётся ещё перед именем файла 3 каких-то левых нулевых байта, хотя может они и не левые… я их, конечно, попробовал чисто на дурака удалить, но не прокатило (архив не распаковывается). Ещё смущает, что предпоследний красный блок (длина имени файла) как будто имеет значение 0A, что очевидно не соответствует действительности (если это длина, то вроде должна быть 0B).
Ну 3 левых байта видимо не там. 0С 00 - длина имени, перед этим цифры в принципе похоже на размеры упакованного и распакованного файла.
...
Рейтинг: 0 / 0
18.10.2013, 17:05
    #38433228
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
beefВопрос. Что может быть не так с моим ЗИПом? Какой-то расширенный формат заголовка или тупо файл до передачи в мои руки немного покоцался?Он сильно покоцался. Постоянное повторение последовательность EF BF BD совершенно нехарактерно для упакованного файла.
...
Рейтинг: 0 / 0
18.10.2013, 17:09
    #38433237
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
...
Рейтинг: 0 / 0
18.10.2013, 17:13
    #38433248
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
UTF-8 заменяющего символа — 0xEF 0xBF 0xBDКакая-то программа решила, что файл в utf-8, и все что не является правильными utf-8 символами, заменила. Теперь только в мусорную корзину.
...
Рейтинг: 0 / 0
18.10.2013, 17:26
    #38433264
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
beefМожет есть какие-то особенности при разборе именно писем?Есть особенности при отправке писем: http://msdn.microsoft.com/en-us/library/ms527563(v=exchg.10).aspx Binary encoded messages are not valid Internet messages.
...
Рейтинг: 0 / 0
18.10.2013, 17:34
    #38433277
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
Не, лучше сослаться на rfc http://www.ietf.org/rfc/rfc2045.txt As of
the initial publication of this document, there are no standardized
Internet mail transports for which it is legitimate to include
unencoded binary data in mail bodies. Thus there are no
circumstances in which the "binary" Content-Transfer-Encoding is
actually valid in Internet mail.
...
Рейтинг: 0 / 0
18.10.2013, 18:05
    #38433320
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор ZIP-файла
beef, отправь сам себе на этот адрес эталонный файл и посмотри что с ним происходит.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Разбор ZIP-файла / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]