информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Сетевые кракеры и правда о деле ЛевинаСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
В дельфи написал: 12.05.11 10:31  Число просмотров: 2593
Автор: Ustin <Ustin> Статус: Elderman
Отредактировано 12.05.11 10:36  Количество правок: 2
<"чистая" ссылка>
uses zlib;
...
procedure ubzlib(srcfn:string);
...
begin
s:=FileToString(srcfn);
s:=substr(s,1,length(s)-4);
src:=TStringStream.Create(s);
dest:=TFileStream.Create(srcfn+'.dc',fmCreate);
t:=TDecompressionStream.Create(src);
repeat
bytesread:=t.Read(mainbuffer,1024);
dest.Write(mainbuffer,bytesread);
until bytesread<1024;
t.free;
src.free;
dest.free;
end;
...
При наличии и отсутствии жирной строки всё распаковывалось без ошибок (результат правильный, исключений не вызывает).
<programming>
deflated payload -> gzip 11.05.11 06:34  
Автор: developertmp Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Есть deflated payload архива (без header & footer ). Извесна также длина inflated файла.
Как праильно добавить header/footer чтобы получить welformed gzip? Какую либу использовать, чтобы разархивировать затем? minizip ? zlib?

Понятно, что надо смотреть спек... Но может есть идеи которые бы ускорили дело?
Если я правильно понял, 11.05.11 12:41  
Автор: Ustin <Ustin> Статус: Elderman
<"чистая" ссылка>


zlib->gzip
Не совсем то, но всё равно спасибо. 12.05.11 05:31  
Автор: developertmp Статус: Незарегистрированный пользователь
Отредактировано 12.05.11 05:32  Количество правок: 1
<"чистая" ссылка>
Не совсем то, но всё равно спасибо.

Задача немного другая. У меня есть кусок сжатого gzip - это не полноценный gzip. Отличие от нормального gzip - у этого файла нет заголовка (10 байт) и футера (8 байт). Заголовок несложно прикрутить. А вот футер невозможно, поскольку он содержит CRC подсчитанный по исходному (не сжатому) файлу. Если прикрутить пустой футер, то например 7Z разархивирует файл, но при этом обругется на CRC.

Мне надо это сделать программно, то есть разархивировать файл без хедера и футера. В ZLIB есть такая фунция InflateBack. Но уж сильно мудрено её использование. Нет ли нормального примера?
В дельфи написал: 12.05.11 10:31  
Автор: Ustin <Ustin> Статус: Elderman
Отредактировано 12.05.11 10:36  Количество правок: 2
<"чистая" ссылка>
uses zlib;
...
procedure ubzlib(srcfn:string);
...
begin
s:=FileToString(srcfn);
s:=substr(s,1,length(s)-4);
src:=TStringStream.Create(s);
dest:=TFileStream.Create(srcfn+'.dc',fmCreate);
t:=TDecompressionStream.Create(src);
repeat
bytesread:=t.Read(mainbuffer,1024);
dest.Write(mainbuffer,bytesread);
until bytesread<1024;
t.free;
src.free;
dest.free;
end;
...
При наличии и отсутствии жирной строки всё распаковывалось без ошибок (результат правильный, исключений не вызывает).
Проверил вариант с InflateBack 16.05.11 18:58  
Автор: developertmp Статус: Незарегистрированный пользователь
Отредактировано 16.05.11 18:58  Количество правок: 1
<"чистая" ссылка>
Проверил вариант с InflateBack из ZLIB - работает.
ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
                                    in_func in, void FAR *in_desc,
                                    out_func out, void FAR *out_desc));

---

Странные вещи оказались с инициализацией

ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
                                        unsigned char FAR *window));


---
Оказалось, что только одно значение разме буфера (int windowBits = 15) работает - а именно 32К.
Это нигде не документировано.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach