IPB

Добро пожаловать, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> STUNS - STupid UNcompreSsor
-=CHE@TER=-
Jun 1 2013, 15:00
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,161
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 276 раз(а)



Собрал новую версию.

CODE
STUNS v1.1
© CTPAX-X Team 2013-2018, Andrew Frolov aka FAL 2004
http://www.CTPAX-X.org/

v1.1 [2018.03.26]
o UCL/NRV compression (ucl2b and ucl2d) returned back
o single file name replaced from "UNPACKED.###" to one specified with the -out option
o fixed typo ("is specified" -> "if specified")
o change help text so it will fit into 80x25 screen

v1.0 [2017.11.30]
o completely dropped old STUNS v0.x codebase
o GCC 3.2 with hacks instead of MSVC 6.0 - smaller executable size
o updated puff and blast from latest zlib sources
o dropped UCL/NRV compression (ucl2b and ucl2d) as rarely used
o changed output text: offset (hex), size (dec), algo, info
o new option to merge all output to a single file
o new option to view matched compressions and don't save anything

v0.5 [2016.08.17]
o minilzo: updated from v1.08 (2002) to v2.09 (2015) (fixes rare crash)
o UCL: just in case updated too from v0.92 (2000) to v1.02 (2003)
(new variants of compression formats like NRV2E and NRV2E-99 not included)

v0.4 [2016.06.26]
o Allow to set the scanning start offset for the input file (in hex)
o Allow to stop after a certain number of unpacked files has been reached
o Now if one or more compression algorithms are specified without the "-"
at the end, they will be the only ones used for unpacking

v0.3 [2014.03.31]
o PKWare: fixed a crash in output buffer overrun
o Deflate and PKWare: flag exhausted output buffer as normally unpacked (see the next note),
other libraries already work this way
o Output buffer won't be saved to disk if it reaches the end of an output memory block,
because this usually indicates an invalid input stream, so now instead of saving data
you'll get a warning message like this one:
> PKWare: Failed! Output buffer 256 Mb exhausted at: 0 (0x0)
if you still want to save these files, try to increase the memory block size
or you can disable mentioned compression library (if you don't need it)
to speed up the unpacking process
o Fixed typo in the usage text ("addind" -> "adding")

v0.2 [2013.06.01]
o Updated zlib modules:
- puff (Deflate) updated to v2.3
- blast (PKWare) replace "blast.c" with original
o Temporary file "$$$tmp$$$.$$$" replaced with output memory block
o Allow to change output memory block size from command line
o Allow to skip creation for files less than specified size from command line
o Change output file names from "%04x" to "%08X"
o Some tweaks to reduce final executable size


>>> stuns11.zip <<<

Старая версия, больше не поддерживается:
Old codebase version, not supported anymore:
stuns05.rar

Русским языком:
- больше не создаётся временный файл в 256 Мб (у меня из-за него иногда места на диске нехватало), а выделяется блок памяти
- размер этого блока памяти можно настроить через командную строку, например: -mem128 отведёт уже 128 Мб памяти
- наконец-то (!!!) добавлена возможность пропускать файлы меньше чем указанный размер, чтобы не рыться в том, что не нужно: -skip123 пропустит файлы размером <=123 байта
- пара косметических изменений


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Jun 27 2013, 14:59
Сообщение #2


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,161
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 276 раз(а)



Опять, блин, вылез баг с puff (deflate/zlib) - обновил с 2.2 до 2.3 (последняя - за апрель 2013), теперь всё ок.
Архив обновлён (версию не менял), лежит там же.
Приношу всем извинения.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Apr 1 2014, 05:15
Сообщение #3


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,161
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 276 раз(а)



Собрал новую версию v0.3.
Описание на английском (спасибо Grom PE за пруфрид!) и ссылку в первом сообщении обновил.

Русским языком:
- поправлена ошибка переполнения буфера (вернее отсутствие проверки на его конец) для PKWare - программа больше не падает
- для PKWare и Deflate если выходной буфер кончился раньше входного, то, как и у других алгоритмов, такой буфер передаётся дальше, а не возвращается ошибка (см. следующий пункт)
- собственно, самое главное изменение: если на запись в файл (декомпрессор отработал успешно) приходит размер равный всему блоку памяти выделенному под выходной буфер (256 Мб по умолчанию), то такой файл не сохраняется, а пишет ошибку типа:
> PKWare: Failed! Output buffer 256 Mb exhausted at: 0 (0x0)
потому как полностью заполненный выходной буфер (если, конечно, его не уменьшили до 1 Мб), как правило, свидетельствует о неверном входном потоке, если же его всё равно нужно сохранить, то рекомендуется увеличить размер выходного буфера или вовсе отключить упомянутую в сообщении бибилиотеку (если она не нужна - см. справку по командной строке программы), чтобы увеличить скорость работы (256 Мб заполняются очень не быстро)
- поправлена опечатка - долго глаза мозолила, но собирать новую версию ради неё одной не особо хотелось


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Jun 25 2016, 21:03
Сообщение #4


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,161
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 276 раз(а)



Собрал новую версию v0.4.
Описание на английском (спасибо Grom PE за его пруфрид, а также справки по командной строке!) и ссылку в первом сообщении обновил.
Пришлось правда в справке по ключам командной строки кое-чего тут и там подсократить, чтобы в стандартный экран 80x25 влезало. Вообще, хотел всё это ещё в октябре прошлого года выложить, но забыл.

Русским языком:
- появилась возможность задать смещение (только в hex) откуда сканировать, что помогает пропустить лишние данные в начале файла (по умолчанию 0 - с начала файла)
- появилась возможность задать максимальное количество файлов (например, 25) после распаковки которых программа завершает работу (по умолчанию 0 - неограниченно)
- наконец, появилась та штука, которую, видимо, планировал сделать ещё сам автор оригинальной программы - если вы помните, то ключи с именами алгоритма указываются просто и с "-" на конце если алгоритм нужно отключить; при этом т.к. по умолчанию все алгоритмы включены, то простое использование любого алгоритма без "-" на конце ничего не меняло; т.е. если в сканируемом файле использовался только один, скажем, deflate, то все остальные приходилось отключать:
stuns -pkware- -lzo- -ucl2b- -ucl2d- ...
что раздувало командную строку, да и раздражало набирать; теперь же достаточно написать:
stuns -deflate ...
и все остальные алгоритмы сами отключатся; если нужно два каких-то, то пишем:
stuns -deflate -pkware ...
будут использованы только deflate и pkware, а остальные отключатся - по-моему очень удобно.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Aug 17 2016, 10:15
Сообщение #5


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,161
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 276 раз(а)



Собрал новую версию v0.5.

Русским языком:
Натолкнулся на падение STUNS из-за minilzo, причём на потоке, где был, как оказалось, только deflate. Блин, давно надо было обновить все библиотеки распаковщиков. Также, на всякий случай, обновил UCL. Там, кстати, есть новые алгоритмы сжатия, типа NRV2E и NRV2E-99, но их тогда надо отдельными ключами командной строки добавлять - сейчас нет времени и желания с этим копаться, так что лишние файлы просто выкинул для уменьшения размера дистрибутива. Главное, что не падает больше. Все библиотеки в STUNS сейчас должны быть последних версий.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Nov 30 2017, 16:37
Сообщение #6


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,161
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 276 раз(а)



Собрал новую версию v1.0.

Русским языком:
- нафиг дропнут старый код и всё переписано начисто;
- GCC 3.2 с хаками вместо MSVC 6.0 - меньше занимает;
- обновлены puff и blast из последних исходных кодов zlib;
- алгоритмы UCL/NRV (ucl2b and ucl2d) выброшены как малоиспользуемые;
- изменён текст вывода сообщений: смещение (в hex), размер (десятичный), алгоритм, информация;
- новая опция, чтобы всё распакованное сохранялось в один файл (Corak просил);
- новая опция, позволяющая ничего не сохранять - давно надо было такое сделать: сначала всё настраиваешь, а когда видишь, что будет распаковываеться только то что нужно, то уже распаковываешь.

Т.к. переписывал начисто и заново, то возможны появления ошибок в самых неожиданных местах.
Если заметили - сообщайте.
Старую версию v0.5 оставил кому нужна в первом сообщении.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Mar 26 2018, 10:45
Сообщение #7


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,161
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 276 раз(а)



Собрал новую версию v1.1.

Русским языком:
- по просьбе (в поддержку писали) возвращены назад алгоритмы UCL/NRV (ucl2b and ucl2d);
- имя файла для сохранения, когда всё пишется в один файл, задаётся через опцию -out как и префикс для каталогов (Corak просил);
- поправлена опечатка и несколько изменён вывод справки, чтобы умещалась в стандартный экран 80x25.

В общем, старую версию v0.5 теперь точно можно с чистой совестью выкинуть.

P.S. Пробелов между ключами командной строки и их параметрами быть не должно! Даже оригинальный STUNS, ещё без моих правок, так работал.
QUOTE
Правильно: -skip200
Неправильно: -skip 200
Правильно: -outunpacked.txt
Неправильно: -out unpacked.txt
Параметры можно писать и в верхнем регистре, если хочется зрительно отделять имя от параметра: -OUTunpacked.txt
Если, вдруг, имя файла нужно с пробелом, то весь параметр нужно заключить в двойные кавычки: "-outun pack ed.txt" (файл будет называться "un pack ed.txt")
Можно, конечно, и вот так: "-out unpacked.txt" - но тогда имя файл будет с пробела начинаться и по маске, скажем "un*.*" его уже не найти (потому что первый символ не "u", а " " - пробел).
И да, имя файла для распаковки должно быть последним параметром после всех опций:
QUOTE
stuns [options] <filename.ext>
В принципе ничего страшного и программа должна и так отработать, если остальные ключи заданы верно, но на всякий случай предупреждаю. Читайте внимательно справку.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Siberian GRemlin
Mar 29 2018, 08:09
Сообщение #8


Advanced Member
***

Группа: CTPAX-X
Сообщений: 465
Регистрация: 4-February 08
Пользователь №: 2
Спасибо сказали: 194 раз(а)



Наверное, стоило сделать более понятный вид у параметров.
QUOTE
-skip=200
-out=unpacked.txt


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Mar 29 2018, 12:14
Сообщение #9


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,161
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 276 раз(а)



QUOTE(Siberian GRemlin @ Mar 29 2018, 08:09) *
Наверное, стоило сделать более понятный вид у параметров.
Кстати да. Хорошая идея, спасибо! Просто формат параметров "остался в наследство" от оригинальной версии программы и я его не менял. Но если уж менять, то, думаю, ещё и '-' заменить на '/', потому что имя файла таки может начинаться с '-'. Или даже лучше - я закреплю первый параметр в обязательном порядке именем входного файла, тогда с ключами после и с чего они начинаются проблем не будет.

todo list:
- добавить разделитель для параметров;
// "-skip200" => "-skip=200"
- жёстко зафиксировать входной файл первым параметром.
// "stuns [options] <filename.ext>" => "stuns <filename.ext> [options]"
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 15th July 2018 - 20:39