Tcl/Tk: Gerando senhas aleatórias em modo gráfico

Discussões sobre linguagens gerais do mundo *NIX, não listadas nas seções anteriores, como Asm, Ruby. E outras tecnologias não necessariamente linguagens: XML, XSL, HTML, CSS, WebServices, SOAP, etc.

Moderador: Time de Moderação

Tcl/Tk: Gerando senhas aleatórias em modo gráfico

Mensagempor SMarcell » Qui Fev 28, 2008 2:44 pm

Aqui no fórum postei um versão em modo texto deste script. Agora é a versão em modo gráfico! Tá meio tosco, mas... :)

Código: Selecionar todos
#!/usr/bin/wish
#
# Gerando senhas aleatorias em modo grafico.
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Obs.:
# - Caso o usuario nao marque nenhuma das opcoes, as senhas serao geradas
# utilizando caracteres alfabeticos, numericos, sinais de pontuacao e
# simbolos;
# - As senhas geradas por padrao possuem 10 caracteres, caso queira alterar
# esse valor, basta modificar a variavel 'qcs';
# - Para obter ajuda sobre os comandos aqui utilizados, num terminal
# digite: tclhelp

# Procedimento responsavel por gerar a senha:
proc _gera.senha_ {} {
   # Quantidade de caracteres na senha:
   set qcs 10
   # 'Resetando' valor para a funcao rand():
   eval {expr srand([clock clicks -milliseconds])}

   # Lista principal de caracteres:
   set cars {
      a b c d e f g h i j k l m n o p q r s t u v w x y z
      A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
   }

   # Qual o tipo de senha foi selecionado?
   if {$::marcado == 1} {
      # Senha alfabetica:
      lappend cars
   } elseif {$::marcado == 2} {
      # Senha alfanumerica:
      lappend cars 0 1 2 3 4 5 6 7 8 9
   } else {
      # Se nada for marcado, este e o padrao:
      lappend cars 0 1 2 3 4 5 6 7 8 9 ! ? ^ ~ @ # $ % & * - _ + =
   }
   
   # Loop de controle:
   for {set i 0} {$i < $qcs} {incr i} {
      # Gerando numero randomico com base no tamanho de $cars:
      set nrd [expr {int([llength $cars]*rand())}]
      # Buscando o valor de $nrd em $cars e guardando-o
      append senha [lindex $cars $nrd]
   }

   # Reconfigurando o label '.mostrar -text {}':
   .mostrar configure -text $senha

}

# Montando 'widgets':
tk_setPalette black
wm title . "Tcl/Tk: senhas aleatórias"
wm minsize . 280 140
wm maxsize . 280 140

# Botao 'Gerar senha':
button .botao -text "Gerar senha" -command { _gera.senha_ }
pack .botao -side bottom -expand yes

# Escolhendo o tipo de senha a ser gerada:
label .informe -text "Que tipo de senha gerar?"
pack .informe -side top -fill x -expand yes

# Mostrando resultado:
label .mostrar -text {} -relief ridge -padx 5 -pady 5
pack .mostrar -side bottom -fill x -expand yes 

# Opcoes de senha:
checkbutton .opcao_1 -text "Alfabética" -variable marcado -onvalue 1 \
-selectcolor yellow
pack .opcao_1 -side left -expand yes
checkbutton .opcao_2 -text "Alfanumérica" -variable marcado -onvalue 2 \
-selectcolor yellow
pack .opcao_2 -side right -expand yes

# Fechando aplicacao (use F1) ou clique no 'x' da janela =)
bind all <F1> { destroy . }
# Fim


Falou!!!
echo 1244394795515721490698P | dc
Linux registered user #499148
Blog: http://sanmarcell.wordpress.com
Avatar do usuário
SMarcell
kill -9 "mosca na tela"
 
Mensagens: 1308
Registrado em: Qui Set 01, 2005 4:13 pm
Localização: Boa Vista, Roraima

Re: Tcl/Tk: Gerando senhas aleatórias em modo gráfico

Mensagempor thais sampaio » Qua Mar 24, 2010 3:31 pm

#!/usr/bin/wish
#
# Gerando senhas aleatorias em modo grafico.
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Obs.:
# - Caso o usuario nao marque nenhuma das opcoes, as senhas serao geradas
# utilizando caracteres alfabeticos, numericos, sinais de pontuacao e
# simbolos;
# - As senhas geradas por padrao possuem 10 caracteres, caso queira alterar
# esse valor, basta modificar a variavel 'qcs';
# - Para obter ajuda sobre os comandos aqui utilizados, num terminal
# digite: tclhelp

# Procedimento responsavel por gerar a senha:
proc _gera.senha_ {} {
# Quantidade de caracteres na senha:
set qcs 10
# 'Resetando' valor para a funcao rand():
eval {expr srand([clock clicks -milliseconds])}

# Lista principal de caracteres:
set cars {
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
}

# Qual o tipo de senha foi selecionado?
if {$::marcado == 1} {
# Senha alfabetica:
lappend cars
} elseif {$::marcado == 2} {
# Senha alfanumerica:
lappend cars 0 1 2 3 4 5 6 7 8 9
} else {
# Se nada for marcado, este e o padrao:
lappend cars 0 1 2 3 4 5 6 7 8 9 ! ? ^ ~ @ # $ % & * - _ + =
}

# Loop de controle:
for {set i 0} {$i < $qcs} {incr i} {
# Gerando numero randomico com base no tamanho de $cars:
set nrd [expr {int([llength $cars]*rand())}]
# Buscando o valor de $nrd em $cars e guardando-o
append senha [lindex $cars $nrd]
}

# Reconfigurando o label '.mostrar -text {}':
.mostrar configure -text $senha

}

# Montando 'widgets':
tk_setPalette black
wm title . "Tcl/Tk: senhas aleatórias"
wm minsize . 280 140
wm maxsize . 280 140

# Botao 'Gerar senha':
button .botao -text "Gerar senha" -command { _gera.senha_ }
pack .botao -side bottom -expand yes

# Escolhendo o tipo de senha a ser gerada:
label .informe -text "Que tipo de senha gerar?"
pack .informe -side top -fill x -expand yes

# Mostrando resultado:
label .mostrar -text {} -relief ridge -padx 5 -pady 5
pack .mostrar -side bottom -fill x -expand yes

# Opcoes de senha:
checkbutton .opcao_1 -text "Alfabética" -variable marcado -onvalue 1 \
-selectcolor yellow
pack .opcao_1 -side left -expand yes
checkbutton .opcao_2 -text "Alfanumérica" -variable marcado -onvalue 2 \
-selectcolor yellow
pack .opcao_2 -side right -expand yes

# Fechando aplicacao (use F1) ou clique no 'x' da janela =)
bind all <F1> { destroy . }
# Fim
thais sampaio
Hello World!
 
Mensagens: 1
Registrado em: Qua Mar 24, 2010 3:30 pm


Voltar para Outras

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes