6224
Comentário:
|
7576
Comentários e Agradecimentos do Rodrigo Nishino
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 5: | Linha 5: |
''Essa descrição não foi criada pelo autor Rodrigo Calanca Nishino, e sim por FelipeLessa. Veja a seção Autor abaixo.'' | ''Essa descrição foi criada por FelipeLessa com alguns comentários do Rodrigo Nishino (aparece com um * na frente). Veja a seção Autor abaixo.'' |
Linha 9: | Linha 9: |
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. | 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 dificeis que ocasinalmente possam ser criadas. * O programa é bem simples e tem alguns bugs como por exemplo, se você coloca um numero negativo ele não faz senha nenhuma. * Além disso, se você segura o botão "+" ou "-" nada acontece ... ainda vou melhorar isto. |
Linha 22: | Linha 26: |
# Atenção: Ele usa o anyguy | # Atenção: Ele usa o anygui |
Linha 144: | Linha 148: |
def handler_size(event, source, time): | def handler_size(event, source, time): ## * Ah esta função não funciona ... ignorem ela |
Linha 180: | Linha 184: |
"Antes de tudo, gostaria de agradecer ao FelipeLessa pelos trechos de código, aprendi novas coisas com a colaboração dele. O programa surgiu para mostrar para um colega meu que Python poderia fazer programas gráficos também. Como eu sou um newbie em Python , meu primeiro script imprimia na tela um monte de texto randômico ... (acredite eu sou fissurado neste módulo random) e para não perder as raízes ... decidi fazer meu primeiro programa gráfico semelhante ao meu primeiro script. Ele me garantiu que se ele tentasse fazer este mesmo programa em VB ele seria no mínimo umas 3 vezes maior. O programa não é lá uma maravilha, particularmente eu questiono a aplicabilidade dele, porém baseado no que eu aprendi nele, pretendo construir aplicações maiores ou pelo menos mais úteis que o PassGenerator (aliás esse nome é horrível). Sem dúvida que se não fosse graças PythonBrasil eu não teria sequer me metido com interfaces gráficas... permaneceria no meu programa de escrever coisas randomicas na tela" -- RodrigoNishino |
Gerando Password
Essa descrição foi criada por FelipeLessa com alguns comentários do Rodrigo Nishino (aparece com um * na frente). 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 dificeis que ocasinalmente possam ser criadas.
* O programa é bem simples e tem alguns bugs como por exemplo, se você coloca um numero negativo ele não faz senha nenhuma.
* Além disso, se você segura o botão "+" ou "-" nada acontece ... ainda vou melhorar isto.
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 anygui
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): ## * Ah esta função não funciona ... ignorem ela
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
"Antes de tudo, gostaria de agradecer ao FelipeLessa pelos trechos de código, aprendi novas coisas com a colaboração dele. O programa surgiu para mostrar para um colega meu que Python poderia fazer programas gráficos também. Como eu sou um newbie em Python , meu primeiro script imprimia na tela um monte de texto randômico ... (acredite eu sou fissurado neste módulo random) e para não perder as raízes ... decidi fazer meu primeiro programa gráfico semelhante ao meu primeiro script. Ele me garantiu que se ele tentasse fazer este mesmo programa em VB ele seria no mínimo umas 3 vezes maior.
O programa não é lá uma maravilha, particularmente eu questiono a aplicabilidade dele, porém baseado no que eu aprendi nele, pretendo construir aplicações maiores ou pelo menos mais úteis que o PassGenerator (aliás esse nome é horrível). Sem dúvida que se não fosse graças PythonBrasil eu não teria sequer me metido com interfaces gráficas... permaneceria no meu programa de escrever coisas randomicas na tela" -- RodrigoNishino