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

Diferenças para "GerandoPasswords"

Diferenças entre as versões de 3 e 4
Revisão 3e 2004-01-17 17:31:04
Tamanho: 3231
Editor: 200-153-141-253
Comentário:
Revisão 4e 2004-01-17 21:18:07
Tamanho: 4031
Editor: FelipeLessa
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 3: Linha 3:
# -*- coding: cp1252 -*- #!/usr/bin/env python
Linha 6: Linha 6:
# # 
Linha 9: Linha 9:
#
# 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.
Linha 10: Linha 19:

# Import's
Linha 13: Linha 24:
# Tamanho Padrao do password # Tamanho padrão do password
Linha 16: Linha 27:
# Conjuntos de letras
maius = "ABCDEFGHIJKLMNOPQRSTUVXWYZ"
minus = "abcdefghijklmnopqrstuvwxyz" # maius.lower()
numeros = "0123456789"
todas = maius + minus + numeros
Linha 17: Linha 33:
def password(vezes, opti):
    if opti == "maius" :
        a = "ABCDEFGHIJKLMNOPQRSTUVXWYZ"
    elif opti == "minus":
        a = "abcdefghijklmnopqrstuvwxyz"
    elif opti == "numeros":
        a = "0123456789"
    elif opti == "todas":
        a = "0123456789abcdefghijklmnopqrstuvwxyzABCEDFGHIJKLMOPQRSTUVWXYZ"
    lista = [] # Lista vazia
    for p in range(vezes):
        bb = choice(a) # Escolhe um caractere da variavel "a"
        lista.append(bb) # Coloca este caractere no fim da lista
    cc = ""
    for g in lista:
        cc = str(cc)+str(g) # Pega as letras e numeros e poe elas em uma string vazia
    return cc #retorna a string
# 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.
Linha 35: Linha 39:
    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
Linha 43: Linha 55:
##### Botoes de escolha
### Botões de escolha
Linha 50: Linha 61:
# Caracteres em letras minusculas # Caracteres em letras minúsculas
Linha 54: Linha 65:
# Maiusculas # ... em letras maiúsculas
Linha 58: Linha 69:
# Numeros # ... apenas números
Linha 63: Linha 74:
tamanho = TextField() # Espaço onde aparece o tamanho dos passwords
tamanho.text = "5" # Texto que aparece por padrão quando o programa começa
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.
Linha 73: Linha 84:

Linha 85: Linha 98:
#botoes de controle do tamanho do password # Botoes de controle do tamanho do password
Linha 96: Linha 109:
    texto.text = password(pass_tamanho, "todas")     texto.text = password(pass_tamanho, todas)
Linha 99: Linha 112:
    texto.text = password(pass_tamanho, "minus")     texto.text = password(pass_tamanho, minus)
Linha 102: Linha 115:
    texto.text = password(pass_tamanho, "maius")     texto.text = password(pass_tamanho, maius)
Linha 105: Linha 118:
    texto.text = password(pass_tamanho, "numeros")     texto.text = password(pass_tamanho, numeros)
Linha 121: Linha 134:
# Associando o botão a função # Associando os botões às suas respectivas funções
Linha 133: Linha 146:
app.run() # Roda o programa if __name__=="__main__":
    
app.run()   # Roda o programa

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