Страница 1 из 2

ConPaste - запрос пароля к архиву из Mulitarc

Добавлено: Вс окт 03, 2010 09:44
MVV
Раз возник интерес к утилите, выставлю её на суд широкой аудитории.

Написал я её, когда на официальном форуме один из пользователей выложил скомпилированный AHK-скрипт, который предоставляет схожую функциональность. Те, кто знаком с AHK, знают, что скомпилированные скрипты вместе с исполнимым модулем весят килобайт по 250-300, чего, разумеется, моя утилита себе не позволяет. Первую версию я прикрепил к посту на официальном форуме.

Информация о последней версии

Версия: 1.0.1.80
URL: ConPaste на wincmd.ru / ConPaste на totalcmd.net

Требования: Windows 95

Особенности:

+ можно задать заголовок и текст приглашения для запроса строки
+ возможность запомнить введенный текст, чтобы не вводить многократно (пароль хранится во временном файле в слегка зашифрованном виде)
+ параметр для очистки временного файла с сохраненным паролем
+ возможность прервать запущенную задачу по Esc или по таймауту (выдается вопрос)

Командная строка:

Код: Выделить всё

ConPaste[.exe] [<параметры>] "<искомая строка>" <команда запуска архиватора>
Параметры командной строки:

/c"Заголовок окна" - устанавливает заданный заголовок окна
/p"Введите пароль:" - устанавливает текст приглашения
/s[-] - задает начальное положение флага запоминания
/h"Строка" - если хэш этой строки меняется, сохраненный пароль считается устаревшим
/t20 - устанавливает таймаут после последнего вывода перед выводом запроса на завершение задачи


В качестве примера использования приведу строки аддона для архиватора 7-Zip, использующие ConPaste:

Код: Выделить всё

List="ConPaste.exe /c%AWQ /p\"Введите пароль к архиву:\" \"Enter password\" %PQA l {%S} %AQA"
Extract="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к архиву:\" \"Enter password\" %PQA e -y {%S} -scsWIN -- %AQA @%LQA"
ExtractWithPath="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к архиву:\" \"Enter password\" %PQA x -y {%S} -scsWIN -- %AQA @%LQA"
Test="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к архиву:\" \"Enter password\" %PQA t -y {%S} %AQA"
Delete="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к архиву:\" \"Enter password\" %PQA d -w%LQPA -y -r {%S} -scsWIN -- %AQA @%LQA"
А вот строка аддона для архиватора InnoUnp:

Код: Выделить всё

List="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к дистрибутиву:\" \"Type in a password\" %PQA -v -m %AQA"
Для очистки файла с сохраненным паролем используется такая команда:

Код: Выделить всё

ConPaste.exe /r
Это может быть полезно, например, если при вводе пароля с включенной опцией запоминания допущена ошибка - после запуска программы с таким параметром при повторном входе в архив пароль будет запрошен опять.

Добавлено: Вс окт 03, 2010 10:47
MVV
Последняя на данный момент версия позволяет задавать заголовок диалога и текст запроса пароля (первая версия использовала искомый в консоли текст). Юникод утилита не поддерживает за ненадобностью (в консоли его отобразить невозможно).


Сегодня (странно, что только сегодня) заметил на официальном форуме апрельский пост, в котором один из пользователей жаловался, что пароль запрашивается по 3 раза, и спрашивал, что можно сделать. Наверное, стоит добавить галочку для отправки той же строки на каждый запрос.


Ага, обновил версию, добавив галочку. Заодно пришлось добавить русскую версию диалога.
Н-да, не сообразил я сразу, что мультиарк запускает архиватор по несколько раз, поэтому галочка не спасает. :(

Прикрутил сохранение пароля во временном файле. Пароль слегка маскируется, ключ строится на основе хэндлов окна тотала и панели задач, поэтому после закрытия тотала или винды теряется.

Добавлено: Пн окт 04, 2010 22:04
Reflector
MVV писал(а): Юникод утилита не поддерживает за ненадобностью (в консоли его отобразить невозможно).
А зачем тебе отображать в консоли юникод? Например, в листинге консольной версии 7z я вижу "____________.txt", а когда читаю с консоли в UTF-8, то получаю "次にタレコミを。あなたの.txt", следовательно и при обратном процессе будет то же самое. Другое дело, что сам MultiArc юникод не понимает, как и все распространяемые плагины для 7z, потому надобности действительно нет :) Вот если бы кто-то подправил сам MultiArc...

Добавлено: Вт окт 05, 2010 21:39
MVV
Согласен, по идее даже при невозможности отобразить Юникод в консоли он все равно должен передаваться, другое дело что мультиарк его не примет, так что Юникод утилите все равно не нужен. :)


Добавил параметр /r для очистки сохраненного пароля - например, можно добавить в меню Запуск тотала и использовать, если вдруг при вводе пароля допущена ошибка.

Добавлено: Ср окт 20, 2010 13:41
angry_dog
В некоторых случаях после открытия iso.wv по Ctrl+PageDown и копированием по команде F5 содержимого iso.wv в другую директорию, появляется окошко "распаковка cab" с прогресс баром. После чего вылетает ошибка:
"Выполнявшаяся команда 'ConPaste.exe /c\"Image.iso.wv\"\"Enter password\" \"C:\Program Files\24\7-Zip\7z.exe\" x -y -scsWIN -\"D:\Downloads\Album\Image.iso.wv\" @C:\Users\83бD~l\AppData\Local\Temp\$mltwcx\lstAЗBA.tmp, вернула код выхода 259, который больше чем настроенный как нормальный для этой команды. Возможно возникла ошибка. Пожалуйста, проверьте ваши настройки..."
Вылетает не всегда. Почему это случается и как исправить? Спасибо.

Добавлено: Чт окт 21, 2010 02:22
MVV
1. Что за формат iso.wv?
2. Почему "распаковка cab", если архив другого типа?
3. Без ConPaste вылетает? По идее, ConPaste просто передает мультиарку код возврата архиватора, то есть, скорее всего ошибка возникла именно у архиватора.
4. Мультиарк настраивался самостоятельно, или используется какая-нибудь сборка?

0. Рекомендую включить консоль мультиарка, дождаться повторения ошибки и посмотреть вывод архиватора в консоли - если возникла ошибка, там будет её описание. Так у нас появится шанс ответить на вопрос "Почему это случается" и думать, "как исправить".

Добавлено: Вт ноя 23, 2010 15:06
Sasha33
а можно вас попросить целиком конфиг для multiarc?
а то что-то не получается заставить ваш плагин работать с 7-Zip 9.20

Добавлено: Вт ноя 23, 2010 17:26
MVV
Sasha33 писал(а):а можно вас попросить целиком конфиг для multiarc?
а то что-то не получается заставить ваш плагин работать с 7-Zip 9.20
Я еще не перешел на 9 версию 7-Zip. Да и, собственно, пока пользуюсь 7z-плагином. А от моей вот аддон:

Код: Выделить всё

[7-Zip]
Description="7-Zip"
; Сигнатуры форматов 7Z, NSIS, ISO, WIM, CHM
ID=37 7A BC AF 27, EF BE AD DE 4E 75 6C 6C 73 6F 66 74, 01 43 44 30 30 31 01, 4D 53 57 49 4D, 49 54 53 46
SkipSfxHeader=1
; Первая позиция для ISO
IDPos=32768, <SeekID>
Extension=7z
; Архиватор 7-Zip
Archiver="%ProgramFiles%\7-Zip\7z.exe"
List="ConPaste.exe /s /h%AQ /c%AWQ /p"Введите пароль к архиву:" "Enter password" %PQA l {%S} %AQA"
Start="^-------------------"
End="^-------------------"
Format0="yyyy tt dd hh mm ss aaaaa zzzzzzzzzzzz pppppppppppp  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Extract="ConPaste.exe /s /h%AQ /c%AWQ /p"Введите пароль к архиву:" "Enter password" %PQA e -y {%S} -scsWIN -- %AQA @%LQA"
ExtractWithPath="ConPaste.exe /s /h%AQ /c%AWQ /p"Введите пароль к архиву:" "Enter password" %PQA x -y {%S} -scsWIN -- %AQA @%LQA"
Test="ConPaste.exe /s /h%AQ /c%AWQ /p"Введите пароль к архиву:" "Enter password" %PQA t -y {%S} %AQA"
Delete="ConPaste.exe /s /h%AQ /c%AWQ /p"Введите пароль к архиву:" "Enter password" %PQA d -w%LQPA -y -r {%S} -scsWIN -- %AQA @%LQA"
; Степень сжатия Ultra, словарь 48 MB, слово 256 B, непрерывный
Add="%PQA a -mx=9 -mmt=2 -ms -m0=LZMA:a=2:d48m:fb=256 -w%LQPA -y -r {%S} -scsWIN -- %AQA @%LQA"
IgnoreErrors=0
Debug=0
UnixPath=0
SkipDirsInFileList=0
SkipEmptyNames=1
BatchUnpack=1
SearchForUglyDirs=1
(букв n в строке Format0 должно быть ровно 256)

Добавлено: Вт авг 23, 2011 12:09
MVV
angry_dog писал(а):"Выполнявшаяся команда 'ConPaste.exe /c"Image.iso.wv""Enter password" "C:\Program Files\24\7-Zip\7z.exe" x -y -scsWIN -"D:\Downloads\Album\Image.iso.wv" @C:\Users\83бD~l\AppData\Local\Temp\$mltwcx\lstAЗBA.tmp, вернула код выхода 259, который больше чем настроенный как нормальный для этой команды.
Наконец попался мне архив, с которым я смог воспроизвести подобную ошибку. Причина была банальной - ConPaste ждала 5 секунд после получения последнего консольного вывода от запущенной задачи и завершала работу (я делал это на случай зависания задачи). Код 259 в данном случае был сообщением о том, что задача всё ещё работает.


Выложил версию 1.0.1.72. В ней я сделал возможность задавать вышеупомянутый таймаут, по умолчанию он равен 20 секундам. Но теперь по его истечении ConPaste спрашивает у пользователя, стоит ли завершить задачу. Также можно зажать клавишу Esc для запроса завершения задачи - если надоело сидеть перед зависшим тоталом. :) При этом ConPaste вернёт код 259, о котором сообщит MultiArc.

Добавлено: Чт мар 01, 2012 20:44
MVV
Попался мне InnoSetup-архив, на котором ConPaste зависала. Пришлось отлаживать. Ошибка была исправлена, новая версия доступна для загрузки.

ConPaste 1.0.1.80

Добавлено: Пт мар 09, 2012 21:44
MVV
Потратил больше часа на исследование странного феномена: с последней версией ConPaste архив отображался пустым, хотя в командной строке его содержимое выводилось нормально, и без ConPaste тоже всё работало. Уже и тестовую версию положил вместо обычной, и коды ошибок проверять начал. Кладу предыдущую версию - работает. Обратно возвращаю последнюю - пустой архив. Оказалось, COMODO втихаря запускал последнюю версию в песочнице, и она не могла открыть пайп, поэтому ничего не писала в консоль...

Добавлено: Ср мар 14, 2012 00:57
ABTOP
А выложи, пожалуйста, полностью секцию для InnoSetup

Добавлено: Ср мар 14, 2012 09:51
MVV

Код: Выделить всё

[InnoSetup]
Description="InnoSetup"
ID=49 6E 6E 6F
IDPos=<SeekID>
Archiver="%COMMANDER_PATH%\Plugins\Packer\Multiarc\Archivers\InnoUnp\InnoUnp.exe"
List="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к дистрибутиву:\" \"Type in a password\" %PQA -v -m %AQA"
Start="^--------------------------------------"
End="^--------------------------------------"
Format0="zzzzzzzzzz  yyyy.tt.dd hh:mm  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
Extract="ConPaste.exe %C /s /h%AQ /c%AWQ /p\"Введите пароль к дистрибутиву:\" \"Type in a password\" %PQA -e -m %AQA {@%LQ}"
ExtractWithPath="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к дистрибутиву:\" \"Type in a password\" %PQA -x -m %AQA {@%LQ}"
Debug=0
BatchUnpack=1
Только букв n в строке Format0 побольше напиши (в моем аддоне их 144, а вообще по идее можно до 260), я убрал часть, чтобы смотрелось.

Добавлено: Ср мар 14, 2012 14:40
ABTOP
Благодарю! А на что влияет кол-во символов "n"?
И какие ещё типы файлов поддерживает ConPaste кроме [7z], [bz2], [gz], [ISO], [CAB], [UHA], [InnoSetup]?

В строке List="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к архиву:\" \"Enter password\" %PQA l {%S} %AQA" надпись "\"Enter password\"" обязательно нужна, или достаточно оставить только \"Введите пароль к архиву:\" ?

Добавлено: Ср мар 14, 2012 15:27
MVV
ABTOP писал(а):Благодарю! А на что влияет кол-во символов "n"?
На то, сколько символов из строк, выводимых архиватором в консоль, Multiarc будет включать в имена и пути файлов в архиве. Поэтому число букв n должно быть равно максимальной длине пути в архиве.
ABTOP писал(а):И какие ещё типы файлов поддерживает ConPaste кроме [7z], [bz2], [gz], [ISO], [CAB], [UHA], [InnoSetup]?
Для ConPaste вообще без разницы, с какими архивами работать. Она работает не с архивами, а с архиваторами.
ABTOP писал(а):В строке List="ConPaste.exe /s /h%AQ /c%AWQ /p"Введите пароль к архиву:" "Enter password" %PQA l {%S} %AQA" надпись ""Enter password"" обязательно нужна, или достаточно оставить только "Введите пароль к архиву:" ?
Да скорее наоборот. Параметр "Enter password" нельзя убирать ни в коем случае - в нём написана строка, при выводе которой в консоль ConPaste поймёт, что пора спрашивать пароль у пользователя (архиватор 7z.exe при запросе пароля выводит строку Enter password:, архиватор InnoUnp.exe - строку Type in a password:, другие архиваторы - свои строки). А вот /p"Введите пароль к архиву:" необязателен - он лишь содержит текст, отображаемый в диалоговом окне ConPaste. В первом же посте указан синтаксис командной строки.