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

Diferenças para "GerandoPasswords"

Diferenças entre as versões de 6 e 7
Revisão 6e 2004-01-19 01:08:09
Tamanho: 4283
Comentário:
Revisão 7e 2004-01-19 04:07:12
Tamanho: 6224
Editor: FelipeLessa
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 5: Linha 5:
''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'' ''Essa descrição não foi criada pelo autor Rodrigo Calanca Nishino, e sim por FelipeLessa. Veja a seção Autor abaixo.''
Linha 7: Linha 7:
== Codigo == O programa Pass Generator cria senhas aleatórias a partir de uma série de caracteres. Os caracteres que serão usados para criar a senha e o número de caracteres da mesma são selecionados pelo usuário.

Para a criação da senha em si é usada a função padrão do python random.choice(), que escolhe (óbvio, não? :) um item de uma sequência aleatoriamente, sendo que a sequência em questão são os caracteres em si. Por isso o programa não leva em consideração senhas muito fáceis ou dífceis que ocasinalmente podem ser criadas.



== Código ==
Linha 19: Linha 25:
# - Modificado por FelipeLessa para (2004/01/19):
# o Possibilitar a importação do arquivo sem que a instalação do anygui seja necessária.
Linha 30: Linha 38:
from anygui import *
try:
    from anygui import *
    anygui_disponivel = True # Caso alguém queira a função apenas e não tenha a anygui.
except ImportError:
    print "AVISO: Desabilitando interface gráfica."
    anygui_disponivel = False
Linha 54: Linha 68:
# Iniciar criação da GUI
app = Application()
Linha 57: Linha 69:
janela = Window()
janela.title = "Password Generator"
if anygui_disponivel:
    # 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
}}}
Linha 60: Linha 174:
texto = TextField()
texto.hstretch = 1
== Autor ==
Linha 63: Linha 176:
### Botões de escolha
# Todos os tipos de caracteres
ball = Button()
ball.position = 5, 65
ball.text = "ToDa5"
''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''
Linha 69: Linha 178:
# 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
}}}
Eu não sou o autor do Pass Generator, devo deixar claro, e sim Rodrigo Calanca Nishino, como descrito no cabeçalho do programa. Ele aparentemente não criou uma descrição para este aplicativo e, a pedidos de OsvaldoSantanaNeto, eu criei uma simples baseada no código (para dizer a verdade, nem cheguei a rodar o programa visto que não possuo o anygui no meu computador). Rodrigo, se você vier aqui de novo, por favor faça as alterações necessárias. -- FelipeLessa

Gerando Password

Essa descrição não foi criada pelo autor Rodrigo Calanca Nishino, e sim por FelipeLessa. Veja a seção Autor abaixo.

O programa Pass Generator cria senhas aleatórias a partir de uma série de caracteres. Os caracteres que serão usados para criar a senha e o número de caracteres da mesma são selecionados pelo usuário.

Para a criação da senha em si é usada a função padrão do python random.choice(), que escolhe (óbvio, não? :) um item de uma sequência aleatoriamente, sendo que a sequência em questão são os caracteres em si. Por isso o programa não leva em consideração senhas muito fáceis ou dífceis que ocasinalmente podem ser criadas.

Código

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

Autor

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

Eu não sou o autor do Pass Generator, devo deixar claro, e sim Rodrigo Calanca Nishino, como descrito no cabeçalho do programa. Ele aparentemente não criou uma descrição para este aplicativo e, a pedidos de OsvaldoSantanaNeto, eu criei uma simples baseada no código (para dizer a verdade, nem cheguei a rodar o programa visto que não possuo o anygui no meu computador). Rodrigo, se você vier aqui de novo, por favor faça as alterações necessárias. -- FelipeLessa


FelipeLessa