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

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

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

Сообщение 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
Это может быть полезно, например, если при вводе пароля с включенной опцией запоминания допущена ошибка - после запуска программы с таким параметром при повторном входе в архив пароль будет запрошен опять.
Последний раз редактировалось MVV Чт мар 01, 2012 22:44, всего редактировалось 15 раз.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Последняя на данный момент версия позволяет задавать заголовок диалога и текст запроса пароля (первая версия использовала искомый в консоли текст). Юникод утилита не поддерживает за ненадобностью (в консоли его отобразить невозможно).


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


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

Прикрутил сохранение пароля во временном файле. Пароль слегка маскируется, ключ строится на основе хэндлов окна тотала и панели задач, поэтому после закрытия тотала или винды теряется.
Reflector
Сообщения: 56
Зарегистрирован: Вс ноя 29, 2009 17:51

Сообщение Reflector »

MVV писал(а): Юникод утилита не поддерживает за ненадобностью (в консоли его отобразить невозможно).
А зачем тебе отображать в консоли юникод? Например, в листинге консольной версии 7z я вижу "____________.txt", а когда читаю с консоли в UTF-8, то получаю "次にタレコミを。あなたの.txt", следовательно и при обратном процессе будет то же самое. Другое дело, что сам MultiArc юникод не понимает, как и все распространяемые плагины для 7z, потому надобности действительно нет :) Вот если бы кто-то подправил сам MultiArc...
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

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


Добавил параметр /r для очистки сохраненного пароля - например, можно добавить в меню Запуск тотала и использовать, если вдруг при вводе пароля допущена ошибка.
Аватара пользователя
angry_dog
Сообщения: 143
Зарегистрирован: Пт ноя 20, 2009 23:05
Откуда: Питер

Сообщение 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, который больше чем настроенный как нормальный для этой команды. Возможно возникла ошибка. Пожалуйста, проверьте ваши настройки..."
Вылетает не всегда. Почему это случается и как исправить? Спасибо.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

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

0. Рекомендую включить консоль мультиарка, дождаться повторения ошибки и посмотреть вывод архиватора в консоли - если возникла ошибка, там будет её описание. Так у нас появится шанс ответить на вопрос "Почему это случается" и думать, "как исправить".
Sasha33
Сообщения: 2
Зарегистрирован: Вт май 18, 2010 13:03

Сообщение Sasha33 »

а можно вас попросить целиком конфиг для multiarc?
а то что-то не получается заставить ваш плагин работать с 7-Zip 9.20
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение 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)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение 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.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Попался мне InnoSetup-архив, на котором ConPaste зависала. Пришлось отлаживать. Ошибка была исправлена, новая версия доступна для загрузки.

ConPaste 1.0.1.80
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Потратил больше часа на исследование странного феномена: с последней версией ConPaste архив отображался пустым, хотя в командной строке его содержимое выводилось нормально, и без ConPaste тоже всё работало. Уже и тестовую версию положил вместо обычной, и коды ошибок проверять начал. Кладу предыдущую версию - работает. Обратно возвращаю последнюю - пустой архив. Оказалось, COMODO втихаря запускал последнюю версию в песочнице, и она не могла открыть пайп, поэтому ничего не писала в консоль...
Аватара пользователя
ABTOP
Сообщения: 9
Зарегистрирован: Чт ноя 10, 2011 10:54

Сообщение ABTOP »

А выложи, пожалуйста, полностью секцию для InnoSetup
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение 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), я убрал часть, чтобы смотрелось.
Аватара пользователя
ABTOP
Сообщения: 9
Зарегистрирован: Чт ноя 10, 2011 10:54

Сообщение 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\"" обязательно нужна, или достаточно оставить только \"Введите пароль к архиву:\" ?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение 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. В первом же посте указан синтаксис командной строки.
Ответить