4283
Comentário:
|
6224
|
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