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

Revisão 4e 2004-01-17 21:18:07

Excluir mensagem

GerandoPasswords

Codigo

# Pass Generator
# Rodrigo Calanca Nishino
# 
# Programa simples que gera passwords
# Atenção: Ele usa o anyguy
#
# ChangeLog:
#  - Modificado por FelipeLessa para (2004/01/17):
#     o Otimizar conjuntos de letras.
#     o Utilizar "".join ao invés de laço for em password() . 
#     o Retirar tag coding visto que quando o código for copiado & colado do Wiki ele pode ser alterado.
#     o Texto que aparece por padrão deve corresponder ao especificado no início do arquivo.
#     o Adicionada a possibilidade de importar arquivo sem abrir a janela.
#     o Modificações menores.


# Import's
from random import choice
from anygui import *

# Tamanho padrão do password
pass_tamanho = 5

# Conjuntos de letras
maius = "ABCDEFGHIJKLMNOPQRSTUVXWYZ"
minus = "abcdefghijklmnopqrstuvwxyz" # maius.lower()
numeros = "0123456789"
todas = maius + minus + numeros

# Função por onde todo o programa se desenrola
def password(vezes, conjunto=todas):
    """Gera uma senha aleatória de vezes dígitos baseado numa lista de caracteres passados
através da variável conjunto."""
    lista = []                  # Lista vazia para guardar caracteres temporariamente.

    for n in range(vezes):      # Laço repetido o número de vezes especificado
        char = choice(conjunto) # Escolhe um caracterer da variável "a".
        lista.append(char)      # Coloca o mesmo no fim da lista. 

    result = "".join(lista)     # Pega a senha recém-criada e põe em uma string vazia.
    return result               # Retorna a string.

# Iniciar criação da GUI
app = Application()

janela = Window()
janela.title = "Password Generator"

texto = TextField()
texto.hstretch = 1

### Botões de escolha
# Todos os tipos de caracteres
ball = Button()
ball.position = 5, 65
ball.text = "ToDa5"

# Caracteres em letras minúsculas
bmin = Button()
bmin.text = "a-z"

# ... em letras maiúsculas
bmaius = Button()
bmaius.text = "A-Z"

# ... apenas números
bnum = Button()
bnum.text = "0-9"


tamanho = TextField()            # Espaço onde aparece o tamanho dos passwords.
tamanho.text = str(pass_tamanho) # Texto que aparece por padrão quando o programa começa.

bot_mais = Button()
bot_mais.text = "+"

bot_menos = Button()
bot_menos.text = "-"

titulo = Label(text="Cria novos passwords")



janela.add(titulo, hstretch = 1)

janela.add(texto, position=(0,30), right=5, hstretch=1)

janela.add(ball, top=(texto, 5), hmove=0)
janela.add(bmin, top=(ball,5), left = 5, hmove=0)
janela.add(bmaius, top=(bmin,5), left = 5, hmove=0)
janela.add(bnum, top=(bmaius,5), left = 5, hmove=0)

janela.add(tamanho, top=(bnum, 15), left=5, width = 35, hmove=0)

# Botoes de controle do tamanho do password
janela.add(bot_menos, top=(tamanho, 15), left=5, width = 35, hmove=0)
janela.add(bot_mais, top=(tamanho, 15), left=(bot_menos, 5), width = 35, hmove=0)

janela.size = 180, 280

#########
###### Funções que os botões acessam quando clicados
#########

def handler_ball(event, source, time):
    texto.text = password(pass_tamanho, todas)

def handler_bmin(event, source, time):
    texto.text = password(pass_tamanho, minus)

def handler_bmaius(event, source, time):
    texto.text = password(pass_tamanho, maius)

def handler_bnum(event, source, time):
    texto.text = password(pass_tamanho, numeros)

def handler_size(event, source, time):
    pass_tamanho = int(tamanho.text)

def mais_tamanho(event, source, time):
    global pass_tamanho 
    pass_tamanho = pass_tamanho + 1
    tamanho.text = pass_tamanho

def menos_tamanho(event, source, time):
    global pass_tamanho
    pass_tamanho = pass_tamanho - 1
    tamanho.text = pass_tamanho
          
###
# Associando os botões às suas respectivas funções
###

link(ball, handler_ball)
link(bmin, handler_bmin)
link(bmaius, handler_bmaius)
link(bnum, handler_bnum)
link(bot_mais, mais_tamanho)
link(bot_menos, menos_tamanho)

app.add(janela) # Coloca a janela dentro do programa

if __name__=="__main__":
    app.run()   # Roda o programa