1

Тема: AHK: Генератор паролей. Один пароль для всего )

Как часто мы пользуемся паролями, использование которых противоречит элементарным требованиям безопасности - слишком короткий либо простой пароль, подбор которого по словарю или методом "грубой силы" не представляет труда.
Либо один пароль к большому количеству аккаунтов. Чем это может быть чревато, понятно - достаточно взломать один аккаунт, и все учетные данные на других сайтах могут также пострадать.
Хранить десятки сложных паролей в голове - это возможно, но таким талантом могут похвастать считанные единицы. Чтобы не хранить пароли на бумажке, приходится пользоваться услугами доп.ПО.

Написанный мной скрипт не хранит пароли в защищенном хранилище и не заполняет сам поля username/password (по крайней мере, пока )
Он всего лишь генерирует пароли на основе введенного мастер-кода и строки, которая будет уникальной для каждого пароля - например, для мастер-пароля superpassword и ключа forum.script-coding.com,  скрипт выдаст пароль 7roLpw2OuaJFxvFO.

P.S. Скрипт написан после знакомства с этой темой, все предложения/замечания категорически приветствуются.


PASSWORD_TOOLTIP := True

Gui, New , +Owner +AlwaysOnTop +HwndId
Gui, Add, Slider, x120 w300 Range1-16 ToolTip vMySlider gNewPass, 16
Gui, Add, Text, x2 	y13 w100 h20 , Кол-во знаков
Gui, Add, Text, x2 y60 w100 h20 , Главный пароль
Gui, Add, Text, x2 w60 h30 , Ключ
Gui, Add, Edit, x120 y60 W300 vMasterPass gNewPass +Password -WantReturn
Gui, Add, Edit, W300 vNewStr gNewPass -WantReturn
Gui, Add, Button, x120 y120 w110 h30 Default, OK
Gui, Add, Button, x2 y120 w30 h30 , ?
Gui, Add, Button, x250 y120 w110 h30 , Cancel
Gui, Show,  w430 y140, PassGen v0.01
return	

NewPass:
Gui, Submit, NoHide
if PASSWORD_TOOLTIP
   tooltip % PassGen(MySlider, MasterPass NewStr)
return 

ButtonOK: 
Gui, Submit
Clipboard := PassGen(MySlider, MasterPass NewStr)
ExitApp
#If WinActive("ahk_id" Id)
Esc::
ButtonCancel:
GuiClose:
ExitApp
#If

Button?:
MsgBox,,Помощь,
( Join`s
`t`t`tГенератор паролей.`n`n
Позволяет  создавать  уникальные  пароли  длинной  от 1 до 16  символов.`n
В качестве параметра "Ключ" может служить название программы,
фраза или адрес сайта, для которого создается пароль.
`n`nПараметр  "Главный  пароль"  можно  вводить  один для  всех ключей,
он  гарантирует  защиту  паролей  -  даже зная  вводимые ключевые фразы и алгоритм,
без главного пароля невозможно восстановить генерируемые пароли,
кроме как используя метод полного перебора.
`n`nЕсли оставить поля "Главный пароль" и "Ключ" пустыми, программа
сгенерирует случайный пароль. При нажатии клавиши 'Enter' или кнопки 'OK'
программа закрывается, сохранив пароль в буфер обмена.
)
return

PassGen(PassLen, InitStr = "") { ; Параметры - длина пароля и строка инициализации
   alph = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890
   len := StrLen(alph)
   If !InitStr
      InitStr = % A_TickCount
   a := StrMD5(InitStr)
   loop % PassLen
      Pass .= SubStr(alph, mod("0x" SubStr(a, A_Index*2, 2), len), 1)
   return Pass
}

StrMD5( V ) { ; www.autohotkey.com/forum/viewtopic.php?p=376840#376840
 VarSetCapacity( MD5_CTX,104,0 ), DllCall( "advapi32\MD5Init", UInt,&MD5_CTX )
 DllCall( "advapi32\MD5Update", UInt,&MD5_CTX, A_IsUnicode ? "AStr" : "Str",V
 , UInt,StrLen(V) ), DllCall( "advapi32\MD5Final", UInt,&MD5_CTX )
 Loop % StrLen( Hex:="123456789ABCDEF0" )
  N := NumGet( MD5_CTX,87+A_Index,"Char"), MD5 .= SubStr(Hex,N>>4,1) . SubStr(Hex,N&15,1)
Return MD5
}

2

Re: AHK: Генератор паролей. Один пароль для всего )

Irbis
Требуется вариативность по ниже перечисленным параметрам.
1. Нужна длина от 8 до 32
2. Нужно учитывать спец. символы - `~!@"№ и т.д.
3. Желательно запоминать комментарии и ключевое слово.
4. Изменить тип шифрования на более устойчивый... хотя и этот сойдёт.

P.S. Обрабатывать ключ на основе кондукторов Криптосистема NICE и некоторые ее модификации - не обязательно, это я просто вспомнил.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download