Vamos usar a string abaixo para pegar um texto dentro de um arquivo e colocar cada palavra por linha:
cat saida.txt | awk '{FS= " "}{for(i=1;i<NF+1;i++) if ($i ~ /[a-zA-Z0-9]+/) print $i}' > dicionario.txt
Neste exemplo o arquivo "documento.txt" tem o seguinte conteúdo:
"teste. tes) dsdas" :wq dfsds; dss@ dffd% fdsgfds!"
A string acima ira pegar cada palavra e colocar uma por linha e salvará o resultado no arquivo dicionario.txt, ficando assim:
teste.
tes)
dsdas"
:wq
dfsds;
dss@
dffd%
fdsgfds!
Agora precisamos tirar os caracteres especiais, para isso usaremos o comando sed do linux:
sed -i -r "s/[\"\!\@\#\$\%\&\(\)\:\.\;]//g" dicionario.txt
Agora podemos usar o script "lensort.pl" que criará vários arquivos com base no tamanho da palavra, segue abaixo o script:
#!/usr/bin/perl# Sort passwords into new files based on length# Input: password file# Output 1.txt, 2.txt, 3.txt, 4.txt, etcuse warnings;use strict;my @lines;# Read from stdn in if filename is -, otherwise open fileif (! $ARGV[0]) {print "Usage: $0\n" ;exit 2;}if ("$ARGV[0]" eq "-") {@lines =; } elsif ( -e $ARGV[0] ) {open my $ifh, '<', $ARGV[0] or die "Unable to open file $ARGV[0]: $!\n";@lines = <$ifh>;close $ifh;} else {print "Unable to open file: $ARGV[0]\n";exit 2;}chomp @lines;my %fhs; # Hash of filehandles, 1.txt, 2.txt, etcprint "Sorting ".scalar(@lines)." passwords by length\n";foreach my $pw (@lines) {if (!defined($fhs{length($pw)})) {open $fhs{length($pw)}, '>', "".length($pw).".txt";}print { $fhs{length($pw)} } "$pw\n";}foreach my $key (keys(%fhs)) {print "Finished $key.txt\n";close $fhs{$key};}Veja abaixo como executar o script e o resultado:./lensort.pl dicionario.txt Sorting 9 passwords by length Finished 4.txt Finished 0.txt Finished 3.txt Finished 7.txt Finished 2.txt Finished 5.txtEste script criou 6 arquivos conforme o número de caracteres, ideal para você usar em sistemas em que você sabe que a Política de Senha esta configurada para que a senha seja por exemplo no mínimo 7 caracteres - neste caso você ira usar o arquivo 7.txt - com isso agilizando o tempo de ataque.Segue o link de onde baixei o script:
Valeu a dica.
ResponderExcluirFaltou apenas remover as vírgulas no sed.
Mas como costumava dizer o meu professor, isso foi só para ver se o aluno prestou atenção.