Cadeias aleatórias
Publicado por Sandro Marcell 20/07/2008
[ Hits: 4.256 ]
Homepage: http://sanmarcell.wordpress.com
Simples script em Tcl/Tk que gera cadeias aleatórias em modo gráfico.
#!/usr/bin/wish
#
# Gerando cadeias aleatorias.
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Obs.:
# - As cadeias geradas por padrao possuem 13 caracteres;
# - Caso queira alterar esse valor, basta modificar a variavel 'qtd';
# - Caso o usuario nao marque nenhuma das opcoes, as cadeias serao geradas
# utilizando caracteres alfabeticos, numericos, sinais de pontuacao e
# outros simbolos;
# - Para obter ajuda sobre os comandos aqui utilizados, num terminal
# digite: tclhelp
# Codificacao do script:
encoding system iso8859-1
# 'Resetando' valor para a funcao rand():
expr srand([pid])
# Bloco principal:
proc _GeraCadeia_ {} {
# Quantidade de caracteres na cadeia:
set qtd 13
# 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 tipo de cadeia gerar?
if {$::marcado == 1} {
# Cadeia alfabetica:
lappend cars
set cor red
} elseif {$::marcado == 2} {
# Cadeia alfanumerica:
lappend cars 0 1 2 3 4 5 6 7 8 9
set cor blue
} else {
# Se nada for marcado, este e o padrao:
lappend cars 0 1 2 3 4 5 6 7 8 9 ! ? ^ ~ @ # $ % & * - _ + =
set cor black
}
# Loop de controle:
for {set i 0} {$i < $qtd} {incr i} {
# Gerando numero randomico com base no tamanho de $cars:
set nrd [expr {int([llength $cars]*rand())}]
# Buscando $nrd em $cars:
append str [lindex $cars $nrd]
# 'Limpando' $nrd:
unset nrd
}
# Reconfigurando o label '.mostrar -text {}':
.mostrar configure -text $str -background $cor
}
# Montando 'widgets':
tk_setPalette black
wm title . "[file tail $argv0]"
wm minsize . 280 140
wm maxsize . 280 140
# Botao 'Gerar cadeia':
button .botao -text "Gerar cadeia" -command { _GeraCadeia_ }
pack .botao -side bottom -expand yes
# Escolhendo o tipo de cadeia a ser gerada:
label .informe -text "Que tipo de cadeia 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 cadeia:
checkbutton .opcao_1 -text "Alfabética" -onvalue 1 \
-selectcolor red -variable marcado
pack .opcao_1 -side left -expand yes
checkbutton .opcao_2 -text "Alfanumérica" -onvalue 2 \
-selectcolor blue -variable marcado
pack .opcao_2 -side right -expand yes
# Fechando aplicacao (use F1 ou clique no 'X' da janela!):
bind all <F1> { destroy . ; exit }
# Fim
param - abre aplicativos com parâmetros no Blackbox e outros
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









