associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Revisão 6e 2004-01-19 01:08:09

Excluir mensagem

GerandoPasswords

Gerando Password

Felipe, escreva aqui alguma coisa sobre essa aplicação. Conte um pouco da história dela e fale um pouco sobre o funcionamento dela também. -- OsvaldoSantanaNeto

Codigo

   1 #!/usr/bin/env python
   2 # Pass Generator
   3 # Rodrigo Calanca Nishino
   4 # 
   5 # Programa simples que gera passwords
   6 # Atenção: Ele usa o anyguy
   7 #
   8 # ChangeLog:
   9 #  - Modificado por FelipeLessa para (2004/01/17):
  10 #     o Otimizar conjuntos de letras.
  11 #     o Utilizar "".join ao invés de laço for em password() . 
  12 #     o Retirar tag coding visto que quando o código for copiado & colado do Wiki ele pode ser alterado.
  13 #     o Texto que aparece por padrão deve corresponder ao especificado no início do arquivo.
  14 #     o Adicionada a possibilidade de importar arquivo sem abrir a janela.
  15 #     o Modificações menores.
  16 
  17 
  18 # Import's
  19 from random import choice
  20 from anygui import *
  21 
  22 # Tamanho padrão do password
  23 pass_tamanho = 5
  24 
  25 # Conjuntos de letras
  26 maius = "ABCDEFGHIJKLMNOPQRSTUVXWYZ"
  27 minus = "abcdefghijklmnopqrstuvwxyz" # maius.lower()
  28 numeros = "0123456789"
  29 todas = maius + minus + numeros
  30 
  31 # Função por onde todo o programa se desenrola
  32 def password(vezes, conjunto=todas):
  33     """Gera uma senha aleatória de vezes dígitos baseado numa lista de caracteres passados
  34 através da variável conjunto."""
  35     lista = []                  # Lista vazia para guardar caracteres temporariamente.
  36 
  37     for n in range(vezes):      # Laço repetido o número de vezes especificado
  38         char = choice(conjunto) # Escolhe um caracterer da variável "a".
  39         lista.append(char)      # Coloca o mesmo no fim da lista. 
  40 
  41     result = "".join(lista)     # Pega a senha recém-criada e põe em uma string vazia.
  42     return result               # Retorna a string.
  43 
  44 # Iniciar criação da GUI
  45 app = Application()
  46 
  47 janela = Window()
  48 janela.title = "Password Generator"
  49 
  50 texto = TextField()
  51 texto.hstretch = 1
  52 
  53 ### Botões de escolha
  54 # Todos os tipos de caracteres
  55 ball = Button()
  56 ball.position = 5, 65
  57 ball.text = "ToDa5"
  58 
  59 # Caracteres em letras minúsculas
  60 bmin = Button()
  61 bmin.text = "a-z"
  62 
  63 # ... em letras maiúsculas
  64 bmaius = Button()
  65 bmaius.text = "A-Z"
  66 
  67 # ... apenas números
  68 bnum = Button()
  69 bnum.text = "0-9"
  70 
  71 
  72 tamanho = TextField()            # Espaço onde aparece o tamanho dos passwords.
  73 tamanho.text = str(pass_tamanho) # Texto que aparece por padrão quando o programa começa.
  74 
  75 bot_mais = Button()
  76 bot_mais.text = "+"
  77 
  78 bot_menos = Button()
  79 bot_menos.text = "-"
  80 
  81 titulo = Label(text="Cria novos passwords")
  82 
  83 
  84 
  85 janela.add(titulo, hstretch = 1)
  86 
  87 janela.add(texto, position=(0,30), right=5, hstretch=1)
  88 
  89 janela.add(ball, top=(texto, 5), hmove=0)
  90 janela.add(bmin, top=(ball,5), left = 5, hmove=0)
  91 janela.add(bmaius, top=(bmin,5), left = 5, hmove=0)
  92 janela.add(bnum, top=(bmaius,5), left = 5, hmove=0)
  93 
  94 janela.add(tamanho, top=(bnum, 15), left=5, width = 35, hmove=0)
  95 
  96 # Botoes de controle do tamanho do password
  97 janela.add(bot_menos, top=(tamanho, 15), left=5, width = 35, hmove=0)
  98 janela.add(bot_mais, top=(tamanho, 15), left=(bot_menos, 5), width = 35, hmove=0)
  99 
 100 janela.size = 180, 280
 101 
 102 #########
 103 ###### Funções que os botões acessam quando clicados
 104 #########
 105 
 106 def handler_ball(event, source, time):
 107     texto.text = password(pass_tamanho, todas)
 108 
 109 def handler_bmin(event, source, time):
 110     texto.text = password(pass_tamanho, minus)
 111 
 112 def handler_bmaius(event, source, time):
 113     texto.text = password(pass_tamanho, maius)
 114 
 115 def handler_bnum(event, source, time):
 116     texto.text = password(pass_tamanho, numeros)
 117 
 118 def handler_size(event, source, time):
 119     pass_tamanho = int(tamanho.text)
 120 
 121 def mais_tamanho(event, source, time):
 122     global pass_tamanho 
 123     pass_tamanho = pass_tamanho + 1
 124     tamanho.text = pass_tamanho
 125 
 126 def menos_tamanho(event, source, time):
 127     global pass_tamanho
 128     pass_tamanho = pass_tamanho - 1
 129     tamanho.text = pass_tamanho
 130           
 131 ###
 132 # Associando os botões às suas respectivas funções
 133 ###
 134 
 135 link(ball, handler_ball)
 136 link(bmin, handler_bmin)
 137 link(bmaius, handler_bmaius)
 138 link(bnum, handler_bnum)
 139 link(bot_mais, mais_tamanho)
 140 link(bot_menos, menos_tamanho)
 141 
 142 app.add(janela) # Coloca a janela dentro do programa
 143 
 144 if __name__=="__main__":
 145     app.run()   # Roda o programa


FelipeLessa