forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на PureBasic (http://forum.boolean.name/forumdisplay.php?f=91)
-   -   Гламурный генератор паролей (http://forum.boolean.name/showthread.php?t=15827)

DniproPirate 11.11.2011 08:14

Гламурный генератор паролей
 

Во время изучения PureBasic я написал генератор паролей. Размер бинарника такой же, как и размер скриншота. Это 26 килобайт.:)



Исходный код:
Код:

Global Msg1$

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Combo_Lang
  #Text_Lang
  #Spin_PassLen
  #Text_KeyLen
  #Frame3D_TKWC
  #CheckBox_N
  #CheckBox_BL
  #CheckBox_SL
  #Button_ToClipboard
  #Button_Generate
  #String_Pass
EndEnumeration

Enumeration
  #UKR_LANG
  #ENG_LANG
  #RUS_LANG
EndEnumeration

Procedure SetWindowLang(Lang)
Select Lang
Case #UKR_LANG:
  SetGadgetText(#CheckBox_N, "Цифри")
  SetGadgetText(#CheckBox_BL, "Великі літери")
  SetGadgetText(#CheckBox_SL, "Малі літери")
  SetGadgetText(#Text_Lang, "Мова:")
  SetGadgetText(#Text_KeyLen, "Довжина пароля:")
  SetGadgetText(#Button_ToClipboard, "До буфера обміну")
  SetGadgetText(#Button_Generate, "Створити")
  SetGadgetText(#Frame3D_TKWC, "Пароль міститиме")
  Msg1$="Алфавіт пароля порожній!"
Case #ENG_LANG
  SetGadgetText(#CheckBox_N, "Numbers")
  SetGadgetText(#CheckBox_BL, "Big letters")
  SetGadgetText(#CheckBox_SL, "Small letters")
  SetGadgetText(#Text_Lang, "Language:")
  SetGadgetText(#Text_KeyLen, "Pass length:")
  SetGadgetText(#Button_ToClipboard, "To clipboard")
  SetGadgetText(#Button_Generate, "Generate")
  SetGadgetText(#Frame3D_TKWC, "The password will contains") 
  Msg1$="Alphabet of password is empty!"
Case #RUS_LANG
  SetGadgetText(#CheckBox_N, "Цифры")
  SetGadgetText(#CheckBox_BL, "Заглавные буквы")
  SetGadgetText(#CheckBox_SL, "Строчные буквы")
  SetGadgetText(#Text_Lang, "Язык:")
  SetGadgetText(#Text_KeyLen, "Длина пароля:")
  SetGadgetText(#Button_ToClipboard, "В буфер обмена")
  SetGadgetText(#Button_Generate, "Создать")
  SetGadgetText(#Frame3D_TKWC, "Пароль будет содержать") 
  Msg1$="Алфавит пароля пуст!"
EndSelect
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 331, 31, 261, 237, "Free Password Generator",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      ComboBoxGadget(#Combo_Lang, 80, 20, 160, 20)
      AddGadgetItem(#Combo_Lang, -1,"Українська")
      AddGadgetItem(#Combo_Lang, -1,"English")
      AddGadgetItem(#Combo_Lang, -1, "Русский")
      SetGadgetState(#Combo_Lang, 1)
      TextGadget(#Text_Lang, 10, 20, 60, 20, "")
      SpinGadget(#Spin_PassLen, 80, 60, 50, 20, 4, 50, #PB_Spin_Numeric)
      SetGadgetState(#Spin_PassLen, 8)
      TextGadget(#Text_KeyLen, 10, 55, 60, 30, "")
      Frame3DGadget(#Frame3D_TKWC, 10, 90, 240, 80, "")
      CheckBoxGadget(#CheckBox_N, 20, 110, 90, 20, "")
      CheckBoxGadget(#CheckBox_BL, 120, 110, 110, 20, "")
      CheckBoxGadget(#CheckBox_SL, 20, 140,100, 20, "")
      ButtonGadget(#Button_ToClipboard, 10, 180, 140, 20, "")
      ButtonGadget(#Button_Generate, 160, 180, 90, 20, "")
      StringGadget(#String_Pass, 10, 210, 240, 20, "")
      SetWindowLang(1)
  EndIf
EndProcedure

Open_Window_0()
Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    Select EventGadget()
    Case #Combo_Lang:
      SetWindowLang(GetGadgetState(#Combo_Lang))
    Case #Button_Generate:
      PassAlphabet$=""
      If GetGadgetState(#CheckBox_BL)=#PB_Checkbox_Checked
        PassAlphabet$=PassAlphabet$+"ABCDEFGHIJKLMNOPQRSTUVWXYZ"     
      EndIf
      If GetGadgetState(#CheckBox_SL)=#PB_Checkbox_Checked
        PassAlphabet$=PassAlphabet$+"abcdefghijklmnopqrstuvwxyz"     
      EndIf
      If GetGadgetState(#CheckBox_N)=#PB_Checkbox_Checked
        PassAlphabet$=PassAlphabet$+"0123456789"     
      EndIf
      If PassAlphabet$=""
          MessageBox_(NULL, Msg1$, "Free Password Generator", 16)
      Else
        X=Len(PassAlphabet$)
        Pass$=""
        PassLen=GetGadgetState(#Spin_PassLen)
        For N = 1 To PassLen
        Pass$=Pass$+Mid(PassAlphabet$, Random(X-1)+1, 1)
        Next N
        SetGadgetText(#String_Pass, Pass$)
      EndIf
    Case #Button_ToClipboard:
    SetClipboardText(GetGadgetText(#String_Pass))
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow

Ссылка на PasteBin
Исходник+Бинарник+Иконка Sendspace

baton4ik 11.11.2011 15:04

Ответ: Гламурный генератор паролей
 
Насчёт английского языка:
Не "contains", а "contain". Не "numbers", а "digits".

ABTOMAT 11.11.2011 15:21

Ответ: Гламурный генератор паролей
 
Не Big, а Capital

.Squid 11.11.2011 16:41

Ответ: Гламурный генератор паролей
 
Ну, тогда еще правильнее будет "Upper case" и "Lower case".

DniproPirate 11.11.2011 20:24

Ответ: Гламурный генератор паролей
 
Полный аналог лежит на соурцфорже и весит в 4 раза больше, ибо написан на Дельфи. Весь перевод я оттудого передрал. Я то понимаю что Capital, но под словом английский в програмах подразумевается "Basic English" или "Niggaz English". Как там Раммштайн по-русски поет "Я буду платить. Мая твая любить":)


Часовой пояс GMT +4, время: 12:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot