Скрипт/плагин для генерирования случайных строк (random strings)
-
- Posts: 69
- Joined: Wed 02 Mar, 2011 19:31
- Has thanked: 43 times
Скрипт/плагин для генерирования случайных строк (random strings)
Приветствую.
Подскажите пжста существует ли плагин под Far который позволяет генерировать строки заданной длины из заданного алфавита символов?
Например, для паролей. Типа вот такого чтоб был, но локально.
Самое простое доступное решение, что я нашёл за минуту поисков - это вот этот bat-скрипт
Заранее благодарю.
Подскажите пжста существует ли плагин под Far который позволяет генерировать строки заданной длины из заданного алфавита символов?
Например, для паролей. Типа вот такого чтоб был, но локально.
Самое простое доступное решение, что я нашёл за минуту поисков - это вот этот bat-скрипт
Заранее благодарю.
Last edited by HaRT on Tue 23 Feb, 2021 18:35, edited 3 times in total.
Reason: Улучшен Заголовок Темы
Reason: Улучшен Заголовок Темы
Покажи мне список твоих плагинов, и я скажу кто ты...
-
- Posts: 1329
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 32 times
- Been thanked: 61 times
Плагин для генерирования random strings
Ну если уже есть bat файл, добавьте просто его в меню, замените константы на спец символы типа и в полет...
EDIT: Сам пользуюсь самописным консольным приложением, плагин из него делать не вижу смысла.
Code: Select all
!?<title>?<init>!
EDIT: Сам пользуюсь самописным консольным приложением, плагин из него делать не вижу смысла.
Last edited by Yegor on Mon 22 Feb, 2021 06:04, edited 1 time in total.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Плагин для генерирования random strings
Интересно… Наверно, у каждого есть собственный генератор
Плагин - нет, а макрос простенький. Самое сложное - диалог задания параметров
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Плагин для генерирования random strings
И хотя в моей практике PassGenerate.lua как таковой и не требуется, мне было полезно попробовать облачить скрипт в форму макроса. И тот, который у меня получился, работает.
Но, будьте добры, посмотрите, пожалуйста, достаточно ли правильно я сделал? А именно, достаточно ли верно я определил позицию в скрипте, в которую поместил конструкцию Macro?
Обновлённый Luacheck к макросу не придирается.
Code: Select all
local F = far.Flags
local function Fill(From, To)
local res = ''
for i=utf8.byte(From), utf8.byte(To) do
res = res .. utf8.char(i)
end
return res
end -- Fill
local function cInc(c,i)
return utf8.char(utf8.byte(c) + i)
end
local alp ={Fill(cInc(' ',1), cInc('0',-1) ), -- Cpc -- 1
Fill('A','Z'); -- 2
Fill( 'a', 'z' ); -- 3
Fill( 'А', 'Я' ); -- 4
Fill( 'а', 'я' ); -- 5
Fill( '0', '9' ); -- 6
}
local function PassGener(aPar)
local len, Spc, Num, Cyr, CaseSens, FirstAlpha = aPar.len, aPar.Spc, aPar.Num, aPar.Cyr, aPar.CaseSens, aPar.FirstAlpha
local set = alp[2]
if CaseSens then set = set .. alp[3] end
if Cyr then
set = set .. alp[4]
if CaseSens then set = set .. alp[5] end
end
if Spc then set = set .. alp[1] end
if Num then set = set .. alp[6] end
local n,res, i = set:len(),''
math.randomseed(Far.UpTime)
if FirstAlpha then
i = math.random(alp[2]:len())
res = alp[2]:sub(i,i)
end
while res:len() < len do
i = math.random(n)
res = res .. set:sub(i,i)
end
return res
end -- PassGener
local aDlg =
{
{"DI_DOUBLEBOX"; 3; 0; 64; 8; 0; 0; 0; 0; "Генерация пароля"};
{"DI_TEXT"; 15; 2; 0; 0; 0; 0; 0; 0; "Длина"};
{"DI_EDIT"; 22; 2; 25; 0; 0,[10]='20'};
{"DI_CHECKBOX"; 5; 4; 0; 0; 1; 0; 0; F.DIF_DISABLE; "Латиница"};
{"DI_CHECKBOX"; 27; 4; 0; 0; 0; 0; 0; 0; "Кириллица"};
{"DI_CHECKBOX"; 45; 4; 0; 0; 0; 0; 0; 0; "Цифры"};
{"DI_CHECKBOX"; 5; 5; 0; 0; 0; 0; 0; 0; "Регистрозависимый"};
{"DI_CHECKBOX"; 27; 5; 0; 0; 0; 0; 0; 0; "Спец.символы"};
{"DI_CHECKBOX"; 45; 5; 0; 0; 0; 0; 0; 0; "Первый - буква"};
{"DI_TEXT"; 0; 6; 0; 0; 0; 0; 0; F.DIF_SEPARATOR};
{"DI_BUTTON"; 0; 7; 0; 0; 0; 0; 0; bor(F.DIF_CENTERGROUP, F.DIF_DEFAULTBUTTON); "Ok"};
{"DI_BUTTON"; 0; 7; 0; 0; 0; 0; 0; F.DIF_CENTERGROUP; "Cancel"}
}
Macro{
id="75B0FED7-7722-4B68-ADEC-00F2E41FF0ED";
area="Common";
key="CtrlAltShiftP";
description="test: создать пароль заданной длины из заданного алфавита символов (bax)";
flags="";
condition=function()
return Menu.Id~="165AA6E3-C89B-4F82-A0C5-C309243FD21B" -- исключает работу макроса в Меню выбора макроса
end;
action=function()
while far.Dialog('',-1,-1,68,9,nil,aDlg) == #aDlg-1 do
local aPars =
{len=tonumber(aDlg[3][10]) or 6;
CaseSens= aDlg[7][6] == 1;
Spc = aDlg[8][6] == 1;
Num = aDlg[6][6] == 1;
Cyr = aDlg[5][6] == 1;
FirstAlpha = aDlg[9][6] == 1;
}
far.Show(PassGener(aPars))
end
end
}
Last edited by Ann on Mon 22 Feb, 2021 21:01, edited 3 times in total.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Плагин для генерирования random strings
А что на Луа или Питоне нет готовой библиотечки?
https://t.me/FarManager — Telegram чат
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Плагин для генерирования random strings
У Вас старый LuaCheck.
--
На самом деле я не знаю, зачем он (этот макрос) Вам нужен. Если для вставки сгенерированного пароля в поле ввода, то (а) надо указать в condition тип элемента (
and (Dlg.ItemType == 4 or Dlg.ItemType == 5)
); убрать цикл while, а вместо far.Show(PassGenerate…)
написать print(PassGenerate…)
. Правда, тут ловушка: пароль сгеерите, в поле вставите, но не увидите! И как Вы потом будете читать архив (например) - это для меня загадка. - buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
-
- Posts: 69
- Joined: Wed 02 Mar, 2011 19:31
- Has thanked: 43 times
Плагин для генерирования random strings
Я положил ваш скрипт в созданную мной папочку PassGenerate внутри Profile\Macros\scripts и он стал зачем-то запускаться автоматически при запуске Far Было бы удобней из меню конечно запускатьbuniak_a_h wrote: ↑Mon 22 Feb, 2021 07:41 Вот Вам скрипт. По-моему, генерит. Что делать знаете?
PassGenerate.lua
Скрипт уважаемого Ann из меню не запускается тоже
PS. Очень кстати предусмотрительно, что первый символ можно сделать буквенным - то, что мне и нужно. И чтоб сразу в клипборд его копировал как в батничке выше.
Last edited by Novosedoff on Mon 22 Feb, 2021 12:10, edited 2 times in total.
Покажи мне список твоих плагинов, и я скажу кто ты...
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Плагин для генерирования random strings
1. Положите куда угодно кроме подпапок %FarProfile%\macros\scripts: это - не макрос, его не надо загружать.Novosedoff wrote: ↑Mon 22 Feb, 2021 12:07 Я положил ваш скрипт в созданную мной папочку PassGenerate внутри Profile\Macros\scripts и он стал зачем-то запускаться автоматически при запуске Far Было бы удобней из меню конечно запускать
2. В меню сделайте пункт с таким содержанием:
lua:@путь_к_файлу
Или (раз Вы хотели плагин) положите в %FarProfile%\macros\scripts такой:
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Плагин для генерирования random strings
Если не поджимает время, подождите пару часов (просто сейчас мне некогда) - сделаю, чтоб в диалоге сгенерированный пароль вставлялся сразу в поле ввода, а в панелях - заносился в буфер
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Плагин для генерирования random strings
Ну вот. Вызывается из меню плагинов (как Вы и хотели). Если вызван из диалога, и при этом активно поле ввода, то результат можно поместить в поле ввода; также всегда можно запихнуть в буфер обмена.
-
- Posts: 69
- Joined: Wed 02 Mar, 2011 19:31
- Has thanked: 43 times
Плагин для генерирования random strings
Большое спасибо. Хотя, честно говоря, батничком быстрее получается, если его преднастроить заранее: нет при каждом запуске диалоговых окон..
Покажи мне список твоих плагинов, и я скажу кто ты...
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Плагин для генерирования random strings
Ну, Вы некорректно поставили задачу, а я исходил из своего опыта. Мне встречались разные требования к паролю. От длины до состава символов (то всё в верхнем регистре, то только латиница и цифры и т.п.). Потому и сделал диалог. Решить проблему легко: диалог вынести в настройку, а вызывать с последней настройкой без выбора. Надо?Novosedoff wrote: ↑Mon 22 Feb, 2021 19:55 Большое спасибо. Хотя, честно говоря, батничком быстрее получается, если его преднастроить заранее: нет при каждом запуске диалоговых окон..
P/S. Ну и за Вашу задачу взялся Ann, я ему пару советов дал … Он на какой-то хоткей макрос повесил… Обещал результат сюда поместить.
-
- Posts: 69
- Joined: Wed 02 Mar, 2011 19:31
- Has thanked: 43 times
Плагин для генерирования random strings
То есть вызов тогда будет по-прежнему через меню плагинов или как-то иначе?buniak_a_h wrote: ↑Tue 23 Feb, 2021 06:54 Ну, Вы некорректно поставили задачу, а я исходил из своего опыта. Мне встречались разные требования к паролю. От длины до состава символов (то всё в верхнем регистре, то только латиница и цифры и т.п.). Потому и сделал диалог. Решить проблему легко: диалог вынести в настройку, а вызывать с последней настройкой без выбора. Надо?
Ещё в этом отношении тогда было б здоров, если первый буквенный символ в строке можно было заранее тоже задавать..
Покажи мне список твоих плагинов, и я скажу кто ты...