Что нового

Простой генератор паролей

Altlans

Знающий
Сообщения
10
Репутация
5
AutoIt: 3.3.8.1
Версия: 1.0

Категория: Разное

Описание: простой генератор паролей.

Код/Пример:
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "RandomString.au3"
#NoTrayIcon

$Form1 = GUICreate("Генератор паролей v.1.0", 347, 200)
$MenuItem1 = GUICtrlCreateMenu("Файл")
$MenuItem2 = GUICtrlCreateMenuItem("Выход", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenu("Помощь")
$MenuItem4 = GUICtrlCreateMenuItem("Сайт программы", $MenuItem3)
$MenuItem5 = GUICtrlCreateMenuItem("О программе", $MenuItem3)
$Checkbox1 = GUICtrlCreateCheckbox("Цифры", 16, 8)
   GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Строчные буквы", 16, 32)
   GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox3 = GUICtrlCreateCheckbox("Заглавные буквы", 16, 56)
   GUICtrlSetState(-1, $GUI_CHECKED)
$Label1 = GUICtrlCreateLabel("Длина паролей:", 17, 80)
$Input1 = GUICtrlCreateInput("8", 102, 77, 35, 21, $ES_READONLY)
   GUICtrlCreateUpdown(-1)
	  GUICtrlSetLimit(-1, 99, 1)
$Label2 = GUICtrlCreateLabel("Кол-во паролей:", 16, 104)
$Input2 = GUICtrlCreateInput("9", 102, 101, 35, 21, $ES_READONLY)
   GUICtrlCreateUpdown(-1)
	  GUICtrlSetLimit(-1, 99, 1)
$Button1 = GUICtrlCreateButton("Генерировать", 16, 130, 121, 33)
   GUICtrlSetState(-1, $GUI_DEFBUTTON)
$Edit1 = GUICtrlCreateEdit("", 145, 8, 185, 155, BitOR($ES_READONLY, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
GUISetState(@SW_SHOW)

While 1
   $Msg1 = GUIGetMsg()
   Switch $Msg1
	  Case $GUI_EVENT_CLOSE
		 Exit
	  Case $MenuItem2
		 Exit
	  Case $MenuItem4
		 ShellExecute("http://autoit-script.ru")
	  Case $MenuItem5
		 MsgBox(0, "Генератор паролей", "by Altlans" & @CRLF & "http://autoit-script.ru")
	  Case $Button1
		 GUICtrlSetData($Edit1, "")
		 $Read1 = GUICtrlRead($Input1)
		 $Read2 = GUICtrlRead($Input2)
		 $Read3 = GUICtrlRead($Checkbox1)
		 $Read4 = GUICtrlRead($Checkbox2)
		 $Read5 = GUICtrlRead($Checkbox3)
		 $Flag1 = 0
		 $Flag2 = 0
		 $Flag3 = 0
		 If $Read3 = 1 Then $Flag1 = 1
		 If $Read4 = 1 Then $Flag2 = 4
		 If $Read5 = 1 Then $Flag3 = 2
		 $Sum1 = $Flag1 + $Flag2 + $Flag3
		 For $Counter1 = 1 To $Read2
			$Pass1 = _Crypto_GetRandomString($Read1, $Sum1)
			GUICtrlSetData($Edit1, $Pass1 & @CRLF, 1)
		 Next
   EndSwitch
WEnd

Файл: x86 версия "Генератор паролей v.1.0.exe", x64 версия "Генератор паролей v.1.0 (x64).exe"

Снимок:


История версий:
v.1.0
Первый релиз

Источник: autoit-script.ru
Автор(ы): Altlans


Добавлено:
Сообщение автоматически объединено:

Хотелось бы генератор ников.
Пример генерации:
Для генерации используются английские буквы.
Гласные: A, E, I, O, U, Y.
Согласные: B, C, D, F, G, H, J, K, L, M, N, P, Q, R, S, T, V, W, X, Z.
Первая буква - согласная, вторая - гласная, третья - согласная и т. д.
Где-то по две согласных подряд, где-то по две гласных подряд.
Знаю, что реализовать - реально. Но, как, не знаю.
 

atlake

Новичок
Сообщения
40
Репутация
0
Содержимое RandomString.au3
Код:
; =============================================================================
; _Crypto_GetRandomString($iLen[, $iFlag])
; -----------------------------------------------------------------------------
; Получение случайной символьной строки заданной длины
;
; $iLen       : длина получаемой строки
; $iFlag      : какие символы используются при генерации строки
;             : 1  - цифры
;             : 2  - большие английские буквы
;             : 4  - малые английские буквы
;             : 8  - основные спецсимволы
;             : 16 - дополнительные спецсимволы
;             : 32 - русские буквы
;
; При успехе  : возвращает бинарную строку
;
; При неудаче : пустая строка:
;             :   @error, @extended - код ошибки _Crypto_GetRandomBinary()
;
;             : AutoIT v3.3.0.0
; =============================================================================
Func _Crypto_GetRandomString($iLen, $iFlag = 15)
    Local $iMid, $sABC = "", $sOut = ""
    If BitAND($iFlag,1)  Then $sABC &= "0123456789"
    If BitAND($iFlag,2)  Then $sABC &= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    If BitAND($iFlag,4)  Then $sABC &= "abcdefghijklmnopqrstuvwxyz"
    If BitAND($iFlag,8)  Then $sABC &= "~!@#$%^&*()_"
    If BitAND($iFlag,16) Then $sABC &= '`+-=",.<>/?\|[]{};:'&"'"
    If BitAND($iFlag,32) Then $sABC &= 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'
    Local $iABC = StringLen($sABC)
    Local $bPWD = _Crypto_GetRandomBinary($iLen)
    If @error Then Return SetError(@error, @extended, $sOut) ; Ошибка _Crypto_GetBinary

    For $i=1 To BinaryLen($bPWD)
        $iMid = Int(BinaryMid($bPWD,$i,1))*$iABC/0x100+1
        $sOut &= StringMid($sABC, $iMid, 1)
    Next
    Return $sOut
EndFunc ; ==> _Crypto_GetRandomString

; =============================================================================
; _Crypto_GetRandomBinary($iLen)
; -----------------------------------------------------------------------------
; Получение случайной строки байтов заданной длины
;
; $iLen       : количество байтов в бинарной строке
;
; При успехе  : возвращает бинарную строку
;
; При неудаче : возвращаемое значение не является бинарной строкой:
;             :   @error=1, @extended=1 - ошибка открытия advapi32.dll
;             :   @error=1, @extended=2 - ошибка открытия kernel32.dll
;             :   @error=2 - RunTime ошибка API, @extended - код ошибки
;
;             : AutoIT v3.3.0.0
; =============================================================================
Func _Crypto_GetRandomBinary($iLen)
    Local $phProv = DllStructCreate("ulong_ptr"), $aRet
    Local $pbBuffer = DLLStructCreate("byte[" & $iLen & "]")
    ; Открытие DLL
    Local $hAdvApi = DllOpen("advapi32.dll"), $hKernel = DllOpen("kernel32.dll")
    If $hAdvApi=-1 Then Return SetError(1, 1, DllClose($hKernel)) ; Ошибка открытия advapi32.dll
    If $hKernel=-1 Then Return SetError(1, 2, DllClose($hAdvApi)) ; Ошибка открытия kernel32.dll
    ; Создание описателя криптохранилища
    $aRet = DllCall($hAdvApi, "int", "CryptAcquireContext", _
        "ptr", DllStructGetPtr($phProv), "ptr", 0, "ptr", 0, "dword", 1, "dword", 0xF0000000)
    If $aRet[0]=0 Then $aRet = DllCall($hKernel, "int", "GetLastError")
    If UBound($aRet)=1 And $aRet[0]=0x80090016 Then
        $aRet = DllCall($hAdvApi, "int", "CryptAcquireContext", _
            "ptr", DllStructGetPtr($phProv), "ptr", 0, "ptr", 0, "dword", 1, "dword", 0xF0000008)
        If $aRet[0]=0 Then $aRet = DllCall($hKernel, "int", "GetLastError")
    EndIf
    If UBound($aRet)>1 Then
        ; Генерация случайной последовательности байтов
        $aRet = DllCall($hAdvApi, "int", "CryptGenRandom", _
            "ptr", DllStructGetData($phProv, 1), "dword", $iLen, "ptr", DllStructGetPtr($pbBuffer))
        If $aRet[0]=0 Then $aRet = DllCall($hKernel, "int", "GetLastError")
        ; Закрытие описателя криптохранилища
        DllCall($hAdvApi, "long", "CryptReleaseContext", _
            "ulong_ptr", DllStructGetData($phProv, 1), "dword", 0)
    EndIf
    DllClose($hKernel)
    DllClose($hAdvApi)

    If UBound($aRet)=1 Then Return SetError(2, $aRet[0], 0) ; Ошибка API RunTime
    Return DllStructGetData($pbBuffer, 1) ; Возврат строки
EndFunc ; ==> _Crypto_GetRandomBinary
 

xklx

Новичок
Сообщения
50
Репутация
3
Altlans [?]
Хотелось бы генератор ников.

Вот допустим составил 2 примерчика реализации генераторов ников
Код:
MsgBox(4096,"Nick",RandomName())
Func RandomName()
	Dim $a[123] = ['Te','Ni','Nila','Andro','Androma','Sha', _
	'Ara','Ma','Mana','La','Landa','Do','Dori','Pe','Peri','Conju','Co','Fo','Fordre', _
	'Da','Dala','Ke','Kele','Gra','Grani','Jo','Sa','Mala','Ga','Gavi','Gavinra','Mo', _
	'Morlu','Aga','Agama','Ba','Balla','Ballado','Za','Ari','Ariu','Au','Auri','Bra', _
	'Ka','Bu','Buza','Coi','Bo','Mu','Muni','Tho','Thorga','Ke','Gri','Bu','Buri','Hu', _
	'Hugi','Tho','Thordi','Ba','Bandi','Ga','Bea','Beaze','Mo','Modi','Ma','Malo', _
	'Gholbi','Gho','Da','Dagda','Nua','Nuada','Oghma','Ce','Centri','Cere','Ce','Ka', _
	'Kathri','Ado','Adora','Mora','Mo','Fe','Felo','Ana','Anara','Kera','Mave','Dela', _
	'Mira','Theta','Tygra','Adrie','Diana','Alsa','Mari','Shali','Sira','Sai','Saithi', _
	'Mala','Kiri','Ana','Anaya','Felha','Drela','Corda','Nalme','Na','Um','Ian','Opi', _
	'Lai','Ygg','Mne','Ishn','Kula','Yuni']

	Dim $b[89] = ['nn','las','math','th','ath','zar','ril','ris', _
	'rus','jurus','dred','rdred','lar','len','nis','rn','ge','lak','nrad','rad','lune', _
	'kus','ma nd','gamand','llador','dor','dar','nadar','rius','nius','zius','tius', _
	'sius','wield','helm','zan','tus','bor','nin','rgas','gas','lv','kelv' ,'gelv', _
	'rim','sida','ginn','grinn','nn','huginn','rdin','ndis','bandis','gar','zel', _
	'di','ron','rne','lbine','gda','ghma','ntrius','dwyn',' wyn','swyn','thris', _
	'dora','lore','nara','ra','las','gra','riel','lsa','rin','lis','this','lace','ri', _
	'naya','rana','lhala','lanim','rdana', 'lmeena','meena','fym','fyn','hara']
	$name = $a[Random(1,123)] & $b[Random(1,89)]
	Return $name
EndFunc
Код:
Dim $S1,$S2,$S3,$S4,$S5

$S1=StringSplit("Б|В|Г|Д|Ж|З|Й|К|Л|М|Н|Р|С|Т|Ф|Х|Ч",'|')
$S2=StringSplit("а|е|и|о|у|э|ю|я",'|')
$S3=StringSplit("б|в|г|д|ж|з|й|к|л|м|н|р|с|т|ф|х|ч",'|')
$S4=StringSplit("п|л|н|д|р|т",'|')
for $i= 0 to 100
$S5 = $S1[random(1,UBound($S1)-1)+1] & _
	  $S2[random(1,UBound($S2)-1)+1] & _
 	  $S3[random(1,UBound($S3)-1)+1] & _
	  $S3[random(1,UBound($S3)-1)+1] & _
	  $S2[random(1,UBound($S2)-1)+1] & _
	  $S4[random(1,UBound($S4)-1)+1]
ConsoleWrite($S5 & @CRLF)
Next
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
OffTopic:
У меня тоже валяется генератор, но я думаю он "зафлужен" циклами в функции генерации :smile:
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=D:\ss\ico\GrnoBoxoWindows.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Run_Obfuscator=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $combo,$guika
For $i=6 To 119
	$combo&=$i&"|"
Next
$combo&="120"
#Region ### START Koda GUI section ### Form=
$guika = GUICreate("Генератор паролей", 621, 368, 189, 152)
$MenuItem1 = GUICtrlCreateMenu("Меню")
$menusavepass = GUICtrlCreateMenuItem("Сохранить пароль в файл", $MenuItem1)
$menuexit = GUICtrlCreateMenuItem("Выход", $MenuItem1)
$Button1 = GUICtrlCreateButton("Сгенерировать пароль", 0, 0, 126, 23)
$Button2 = GUICtrlCreateButton("Выйти", 269, 0, 75, 23)
$Edit1 = GUICtrlCreateEdit("", 0, 94, 620, 153,BitOR($ES_AUTOVSCROLL,$WS_VSCROLL))
$Group1 = GUICtrlCreateGroup("Включаемые элементы в пароль", 0, 22, 345, 71)
$latin = GUICtrlCreateCheckbox("Английские буквы (a-z)", 8, 35, 137, 17)
$number = GUICtrlCreateCheckbox("Цифры (0-9)", 8, 52, 97, 17)
$kiril = GUICtrlCreateCheckbox("Русские буквы (а-я)", 8, 70, 121, 17)
$uncheked = GUICtrlCreateButton("Снять галочки", 168, 35, 83, 23)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Savepass = GUICtrlCreateButton("Сохранить пароль в файл", 128, 0, 139, 23)
$Group2 = GUICtrlCreateGroup("Количество символов в строке", 346, 22, 188, 39)
$numbersimvol = GUICtrlCreateCombo("5", 352, 35, 177, 25)
GUICtrlSetData(-1,$combo)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Комментарий к паролю (будет включен в файл)", 0, 247, 414, 99)
$comment = GUICtrlCreateEdit("", 2, 262, 409, 81,BitOR($WS_HSCROLL,$ES_WANTRETURN,$ES_MULTILINE))
GUICtrlSetData(-1, "")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$clearpass = GUICtrlCreateButton("Стереть пароль", 346, 61, 91, 23)
$clearcomment = GUICtrlCreateButton("Стереть коментарий", 424, 250, 115, 23)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $Savepass,$menusavepass
			$puth = FileSaveDialog("Сохранение файла с паролем",@DesktopDir,"Текстовый файл(*.txt)",16,"",$guika)
			If @error Then
				;
			Else
				$com = GUICtrlRead($comment)
				$pass = GUICtrlRead($Edit1)
				$sim = GUICtrlRead($numbersimvol)
				If $com == "" Then
					FileWrite($puth&".txt","Сгенерированный пароль - "&$pass&@CRLF&"Количество символов в пароле - "&$sim&@CRLF& _
						"~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+")
				Else
					FileWrite($puth&".txt","Сгенерированный пароль - "&$pass&@CRLF&"Количество символов в пароле - "&$sim&@CRLF&"Комментарий к паролю - "&$com&@CRLF& _
						"~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+")
				EndIf
			EndIf
		Case $uncheked
			GUICtrlSetState($latin,$gui_unchecked)
			GUICtrlSetState($kiril,$gui_unchecked)
			GUICtrlSetState($number,$gui_unchecked)
		Case $clearpass
			GUICtrlSetData($Edit1,"")
		Case $clearcomment
			GUICtrlSetData($comment,"")
		Case $GUI_EVENT_CLOSE,$Button2,$menuexit
			Exit
		Case $Button1
			If GUICtrlRead($numbersimvol) > 120 Then
				GUICtrlSetData($Edit1,"Пароль составленный из символов более чем 120 не имеет место быть!")
			ElseIf BitAND(GUICtrlRead($latin),$GUI_UNCHECKED) And BitAND(GUICtrlRead($number),$GUI_UNCHECKED) And BitAND(GUICtrlRead($kiril),$GUI_UNCHECKED) Then
				GUICtrlSetData($Edit1,"Вы не отметили галочки означающие функции генератора!")
			Else
				Select
					Case BitAND(GUICtrlRead($latin),$GUI_CHECKED) And BitAND(GUICtrlRead($number),$GUI_CHECKED) And BitAND(GUICtrlRead($kiril),$GUI_CHECKED)
						$gen = _generatepass(GUICtrlRead($numbersimvol),1)
						GUICtrlSetData($Edit1, $gen)
					Case BitAND(GUICtrlRead($latin),$GUI_CHECKED) And BitAND(GUICtrlRead($number),$GUI_CHECKED)
						$gen = _generatepass(GUICtrlRead($numbersimvol),2)
						GUICtrlSetData($Edit1, $gen)
					Case BitAND(GUICtrlRead($latin),$GUI_CHECKED) And BitAND(GUICtrlRead($kiril),$GUI_CHECKED)
						$gen = _generatepass(GUICtrlRead($numbersimvol),3)
						GUICtrlSetData($Edit1, $gen)
					Case BitAND(GUICtrlRead($kiril),$GUI_CHECKED) And BitAND(GUICtrlRead($number),$GUI_CHECKED)
						$gen = _generatepass(GUICtrlRead($numbersimvol),4)
						GUICtrlSetData($Edit1, $gen)
					Case BitAND(GUICtrlRead($kiril),$GUI_CHECKED)
						$gen = _generatepass(GUICtrlRead($numbersimvol),5)
						GUICtrlSetData($Edit1, $gen)
					Case BitAND(GUICtrlRead($number),$GUI_CHECKED)
						$gen = _generatepass(GUICtrlRead($numbersimvol),6)
						GUICtrlSetData($Edit1, $gen)
					Case BitAND(GUICtrlRead($latin),$GUI_CHECKED)
						$gen = _generatepass(GUICtrlRead($numbersimvol),7)
						GUICtrlSetData($Edit1, $gen)
				EndSelect
			EndIf
	EndSwitch
WEnd
Func _generatepass($still,$num)
	Local $resultat, $random,$step = $still - 1
	Switch $num
		Case 7
			For $i = 0 To $step
				Do
					$random = Random(48,255,1)
				Until ($random >= 65 And $random <= 90) Or ($random >= 97 And $random <= 122)
				$resultat &= Chr($random)
			Next
		Case 6
			For $i = 0 To $step
				Do
					$random = Random(48,255,1)
				Until $random >= 48 And $random <= 57
				$resultat &= Chr($random)
			Next
		Case 5
			For $i = 0 To $step
				Do
					$random = Random(48,255,1)
				Until $random >= 192 And $random <= 255
				$resultat &= Chr($random)
			Next
		Case 4
			For $i = 0 To $step
				Do
					$random = Random(48,255,1)
				Until ($random >= 48 And $random <= 57) Or ($random >= 192 And $random <= 255)
				$resultat &= Chr($random)
			Next
		Case 3
			For $i = 0 To $step
				Do
					$random = Random(48,255,1)
				Until ($random >= 65 And $random <= 90) Or ($random >= 97 And $random <= 122) Or ($random >= 192 And $random <= 255)
				$resultat &= Chr($random)
			Next
		Case 2
			For $i = 0 To $step
				Do
					$random = Random(48,255,1)
				Until ($random >= 48 And $random <= 57) Or ($random >= 65 And $random <= 90) Or ($random >= 97 And $random <= 122)
				$resultat &= Chr($random)
			Next
		Case 1
			For $i = 0 To $step
				Do
					$random = Random(48,255,1)
				Until ($random >= 48 And $random <= 57) Or ($random >= 65 And $random <= 90) Or ($random >= 97 And $random <= 122) Or ($random >= 192 And $random <= 255)
				$resultat &= Chr($random)
			Next
	EndSwitch
	Return $resultat
EndFunc
 
Верх