Bulat_Ziganshin
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: если запустить sfx архив распаковка обычно виснет | создавай с максимальным сжатием Цитата: если пытаешься сжать 1 ехе файл | это я вообще не понял Добавлено: Цитата: Unarc.dll теперь поддерживает запароленные архивы? Если да, то скажите пожалуйста, как этим пользоваться и в какой кодировке должен быть пароль. | 1. опция -p{Pwd} - точно так же, как в arc.exe 2. в будущем будет utf8, осталось только freearc исправить кроме того, я убрал "timer" event, поскольку он был причиной зависаний. нет возражений? и собираюсь добавить колбеки "overwrite?" и "password?". точнее они уже добавлены, но я собираюсь передавать в них больше информации. пока мысль у меня такая: event("password?", flags, pwd_len, pwd_buf) - запрос пароля если последний введённый или переданный в -p не подходит. pwd_buf/pwd_len - размер и адрес буфера куда надо записать введённый пользователем пароль (опять же в utf), а flags=0 если пароль для этого файла запрашивается впервые или 1 если уже запрашивался, но пользователь ввёл неверный пароль event("overwrite?", 0, 0, buf) - запрос на перезапись файла на диске, где buf содержит информацию о размере, дате и имени файла внутри архива Добавлено: насчёт кодировки паролей - там сейчас используется unicode, но в ошибочном виде, вместо utf8 просто берутся младшие 8 бит codepoint. например 'ф' имеет codepoint 0x444, для пароля же берётся 0x44, т.е. 'D' помимо этого, работая над unarc, я обнаружил в шифровании freearc серьёзную ошибку. при передаче key, salt и пр. шестнадцатеричные цифры 'a'-'f' передавались как '0'..'5', т.е. из каждых 16 значений использовалось лишь 10, причём с неодинаковой вероятностью. это означает, что 256-битное шифрование в freearc имеет реальную энтропию в ~192 бита обе проблемы будут исправлены, но поэтапно, чтобы не создавать лишних проблем пользователям. 0.70 будет уметь распаковывать архивы, зашифрованные правильно, а создавать такие архивы начнёт только 0.75 (точнее 0.71 alpha) |