PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OpenSource » Генератор паролей


Генератор паролей

Сообщений 1 страница 4 из 4

1

Простая программка. Есть возможность выбирать из каких символов будет пароль(ABC, abc, 123), все вместе или в любом соотношении. Так же настраивается длина пароля. Версия компилятора 4.31

Код:
;Глобальная переменная 

Global simvol$ 

; Простая переменная 
sp=10  


;Константа окна 
Enumeration 
  #Window_0 
EndEnumeration 

;Константы гаджетов 
; 
Enumeration 
  #Editor_0 
  #Button_0 
  #Button_1 
  #Button_2 
  #CheckBox_0 
  #CheckBox_1 
  #CheckBox_2 
  #Text_0 
  #Text_1 
  #Text_2 
  #spin 
EndEnumeration 

;Шрифты 
Global FontID1 
FontID1 = LoadFont(1, "Arial", 10) 
Global FontID2 
FontID2 = LoadFont(2, "Arial", 8) 

; процедура открытия окна 

Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 400, 214, 268, 101, "Генератор паролей",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 

; Далее размещаем гаджеты в окне 

      EditorGadget(#Editor_0, 10, 15, 150, 35) 
      ButtonGadget(#Button_0, 175, 15, 60, 20, "Сгенерить") 
      ButtonGadget(#Button_1, 175, 45, 90, 32, "Скопировать пароль",#PB_Button_MultiLine) 
      ButtonGadget(#Button_2, 250, 85, 15, 15, "?") 
      CheckBoxGadget(#CheckBox_0, 15, 55, 20, 20, "") 
      CheckBoxGadget(#CheckBox_1, 50, 50, 15, 30, "") 
      CheckBoxGadget(#CheckBox_2, 85, 55, 20, 20, "") 
      TextGadget(#Text_0, 15, 80, 15, 20, "ab") 
      TextGadget(#Text_1, 50, 80, 15, 15, "AB") 
      TextGadget(#Text_2, 85, 80, 15, 15, "12") 
      SpinGadget(#spin, 120, 57, 30, 20, 0, 100,#PB_Spin_Numeric) 
      
      

  EndIf 
EndProcedure 



; открываем окно с помощью вызова процедуры Open_Window_0() 

Open_Window_0() 

; Обновление текущего состояния SpinGadget 
SetGadgetState (#spin, sp) 

; Блок с данными 
DataSection 
    StringData: 
      Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9" 
    StringData1: 
      Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" 
    StringData2: 
      Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z" 
    StringData3: 
      Data.s "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9" 
    StringData4: 
      Data.s "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9" 
    StringData5: 
      Data.s "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" 
    StringData6: 
      Data.s "0","1","2","3","4","5","6","7","8","9" 
EndDataSection 


;Процедура чтения случайного символа из блока с данными 
Procedure$ readsimvol(b) 

d=Random(b)  ;Присваеваем переменной d случайное число по значению не более заложенного в переменной b 
For x=0 To d 
  Read.s simvol$   ;Читаем символы до номера d включительно, и записывает в переменную simvol$ 
Next x             ;В переменной simvol$ сохраняется последнее значение. 

EndProcedure 


; начало цикла 

Repeat 

 ; Если произошло событие нажатия кнопки "?" , то вывести сообщение 

 If EventID = #PB_Event_Gadget 
        If EventGadget() = #Button_2 
            MessageRequester("О программе", "Автор Станислав Будинов") 
        EndIf 
 EndIf 

; результаты гаджетов:  CheckBoxGadget 
rez1 = GetGadgetState(#CheckBox_0)  ; rez1 равен "1" или "0" 
rez2 = GetGadgetState(#CheckBox_1)  ; rez2 равен "1" или "0" 
rez3 = GetGadgetState(#CheckBox_2)  ; rez3 равен "1" или "0" 


; Условия для чтения блока с данными(какие символы использовать в пароле) 
If rez1=1 And rez2=1 And rez3=1 
y=0 
b=61 
EndIf 
If rez1=1 And rez2=1 And rez3=0 
y=1 
b=51                                          ; переменная b кол-во символов в блоке минус "1" для цикла 
EndIf                                        ; переменная y  определяет номер блока StringData (0-6) 
If rez1=1 And rez2=0 And rez3=0 
y=2 
b=25 
EndIf 
If rez1=1 And rez2=0 And rez3=1 
y=3 
b=35 
EndIf 
If rez1=0 And rez2=1 And rez3=1 
y=4 
b=35 
EndIf 
If rez1=0 And rez2=1 And rez3=0 
y=5 
b=25 
EndIf 
If rez1=0 And rez2=0 And rez3=1 
y=6 
b=9 
EndIf 




; если выполнится нажатие кнопки, то выполнить процедуру:   readsimvol(b) 
; так же выбираем нужный блок для чтения 
; так же складываем символы в общую строку "sohr$" 
; и пишем результат(пароль) в EditorGadget 
; получаем значение(длину пароля) с помощью SpinGadget 

If EventID=#PB_Event_Gadget 
If EventGadget()=#Button_0 
   If rez1=0 And rez2=0 And rez3=0                                     ; если не отмечен ни один пункт 
     MessageRequester("Сообщение","Выберите пожалуйста символы для вашего пароля") ;выводим сообщение 
     Goto net                                  ;прыгаем на метку Net: и отключаем тем самым кнопку "сгенерить". 
   EndIf 

    sp = GetGadgetState(#spin)  ; получаем значение SpinGadget 
    
    For gl=1 To sp 
            Select y   ; обнуляем счетчики чтения блока на нуль при каждом прохождении цикла 
            Case 0     ; ну и конечно выбор нужного блока 
            Restore StringData 
            Case 1 
            Restore StringData1 
            Case 2 
            Restore StringData2 
            Case 3 
            Restore StringData3 
            Case 4 
            Restore StringData4 
            Case 5 
            Restore StringData5 
            Case 6 
            Restore StringData6 
            EndSelect 
            readsimvol(b) 
            
            sohr$=sohr$+simvol$ ; складываем каждый раз строку к предыдущей 
            clip$=sohr$  ; переносим результат(пароль) в переменную clip$ для копирования в буфер обмена 
            
    Next gl 
    
    
   SetGadgetText(#Editor_0,sohr$) ;пишем общий результат(пароль) в  EditorGadget 
    
    
EndIf 
EndIf 


; если происходит событие нажатия кнопки #Button_1, то копируем пароль в буфер обмена 

If EventID = #PB_Event_Gadget 
        If EventGadget() = #Button_1 
            SetClipboardText(clip$) 
        EndIf 
EndIf 



Net: 


sohr$="" ; обнуляем переменную "sohr$" 

 EventID = WaitWindowEvent(10) ;Стандартный вызов процедуры ожидания события в PureBasic 
Until EventID = #PB_Event_CloseWindow  ; если закрыли окно выход из цикла 
End  ; Конец всему делу венец

0

2

прикольная вещь. Я так понял она случайные данные генерирует?

0

3

daiomik написал(а):

Я так понял она случайные данные генерирует?

Ага, за случайность отвечает эта строчка

Код:
d=Random(b)  ;Присваеваем переменной d случайное число по значению не более заложенного в переменной b

0

4

Тоже писал такую шляпу  :rolleyes:
Вот мой вариант из моей копилки:

Код:
Enumeration
  #Window
  #String
  #Spin
  #Button
EndEnumeration

Procedure Rnd(min, max)
   a.l=Random(max-min)+min
  ProcedureReturn a
EndProcedure
Procedure.s Generation(max_symbol)
a$=""
For q=1 To max_symbol
begin_pass:
rn=rnd(48,122)
If rn>57 And rn<65
Goto begin_pass
EndIf
If rn>90 And rn<97
Goto begin_pass
EndIf
a$=a$+Chr(rn)
Next
ProcedureReturn a$
EndProcedure

OpenWindow(#Window, 216, 0, 254, 72, "Генератор пароля",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
CreateGadgetList(WindowID(#Window))
StringGadget(#String, 10, 10, 230, 20, "")
SpinGadget(#Spin, 10, 40, 60, 20, 0, 20):SetGadgetState(#Spin,5):SetGadgetText(#Spin, "5")
ButtonGadget(#Button, 100, 40, 120, 20, "Придумать пароль")

     Repeat
       Event = WaitWindowEvent()
       
       Select Event
       
         Case #PB_Event_Gadget
          Select EventGadget()
            Case #Spin
            SetGadgetText(#Spin,Str(GetGadgetState(#Spin)))
            Case #Button
             max_symbol=GetGadgetState(#Spin)
             SetGadgetText(#String,Generation(max_symbol))
             EndSelect
           EndSelect
       
     Until Event = #PB_Event_CloseWindow
     End

Отредактировано MishanayCool (16.12.2011 12:02:32)

0


Вы здесь » PureBasic - форум » OpenSource » Генератор паролей