script quase impossivel de se fazer [RESOLVIDO]

1. script quase impossivel de se fazer [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/04/2009 - 17:04h

galera

estou a dias e dias tentando criar um script que faça o seguinte

==========================

cria um arquivo chamado: combinações-numéricas.txt

faz todas combinações possiveis de: 1 á 999

ex:
1
2
3
.
.
.
10
11
12
.
.
.
100
200
300
.
.
.
999

e salvar no arquivo criado "combinações-numéricas.txt"

===================================================

minhas tentativa

++++++++++++++++++++++++++++


#!/bin/bash

clear #limpar tudo que tem no terminal

echo "Todas as combinaçoes numéricas possíveis de 0 á 999999!!" #exibiçao no topo do programa
echo
echo
echo

if [ -e combinações-numéricas.txt ]

then

cat > 0 combinações-numéricas.txt

else

touch combinações-numéricas.txt

fi

n=1

if [ $n -eq 999999 ]


then


echo "$n" >> combinações-numéricas.txt


else

echo "$n" >> combinações-numéricas.txt
n=`expr $n + 1`


fi

+++++++++++++++++++++++++++++++

agradeço desde jah

flw


  


2. MELHOR RESPOSTA

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 10/04/2009 - 00:04h

Ae caros colegas! Quando se fala em combinações o segredo é recursividade. Na maior parte das linguagens de programação (inclusive scripts) podemos fazer funções se chamarem, criando combinações infinitas. Outro segredo no shell é utilizar variaveis locais para isto. Pois bem, segue o script e os devidos comentários, para executa-lo, você pode passar a quantidade de letras que quer combinar, mas lembre-se, dependendo do numero de letras será lento:
#~ ./letras.sh 3

#~ ./letras.sh 3 | wc -l
18278

#~ ./letras.sh 4 | wc -l
475254

#!/bin/bash

function letras() {

# Vamos criar uma variavel com o conteudo anterior e outra variavel com um total de recursividade que
# queremos que sera diminuido de acordo com a chamada da propria funcao
local ANTERIOR=$1
local TOTAL=$2
local TOTAL=`expr $TOTAL - 1`

# Depois processamos todas as letras de A ate Z
for LETRA in {A..Z}
do

# Aqui mostramos a combinacao
echo "$ANTERIOR $LETRA"

if [ $TOTAL -ne 0 ]; then
# E aqui a chamada da recursividade
letras "$ANTERIOR $LETRA" $TOTAL
fi

done;
}

# Aqui chamamos a propria funcao com a quantidade de vezes que queremos processar baseado em um parametro
letras "" $1

----
Espero que tenham captado...
Agora para jogar isso em um arquivo texto é facil... deixo essa parte para vocês!!!!

PS: Como podem ver 4 letra geram quase 500 mil combinações... fazer um programa que quebre senhas por força bruta é mais ou menos neste caminho, porém como podem ver... dependendo do tamanho a testar pode demorar muito!!!



3. Re: script quase impossivel de se fazer [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/04/2009 - 17:07h

teria como eu fazer isso em C/C++??

seria mais pratico??


4. Re: script quase impossivel de se fazer [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 08/04/2009 - 17:11h

O erro é o seguinte: vc deve fazer a função while e não if. Dessa forma:

while [ $n -le 999999 ]
do
echo "$n" >> combinações-numéricas.txt
n=`expr $n + 1`
done

Falow!


5. Re: script quase impossivel de se fazer [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/04/2009 - 21:00h

nossa mano

funcionou certinho xD

vlw msm

e para fazer com letras?? de A - Z??

tem que atribuir valores a elas??

ex:

1=a
2=b
3=c
4=d
5=e
6=f
.
.
.
.
26=z

nao entendo quase nada, comecei a mexer com script desse nivel esses dias

vlw


6. Re: script quase impossivel de se fazer [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 09/04/2009 - 12:16h

Dessa forma q vc disse dá certo tb, mas eu tenho certeza q tem uma maneira mais fácil d fazer, q infelizmente eu não sei. Dessa forma vc faria assim:

#!/bin/bash

clear #limpar tudo que tem no terminal

echo "Todas as combinaçoes numéricas possíveis de 0 á 999999!!" #exibiçao no topo do programa
echo
echo
echo
if [ -e combinações-numéricas.txt ]
then
cat > 0 combinações-numéricas.txt
else
touch combinações-numéricas.txt
fi

n=1

1=a
2=b
3=c
4=d
5=e
6=f
7=g
8=h
9=i
10=k
.
.
.
26=z

while [ $n -le 26 ]
do
echo "$($n)" >> combinações-numéricas.txt
n=`expr $n + 1`
fi


7. Re: script quase impossivel de se fazer [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/04/2009 - 13:24h

os numeros nao estao reconhecendo como variável

e agr??

======================================

#!/bin/bash

clear #limpar tudo que tem no terminal

echo "Todas as combinaçoes numéricas possíveis de A á Z!!" #exibiçao no topo do programa
echo
echo
echo
if [ -e combinações-de-A_Z.txt ]
then
cat > 0 combinações-de-A_Z.txt
else
touch combinações-de-A_Z.txt
fi

n=0

0=a
1=b
2=c
3=d
4=e
5=f
6=g
7=h
8=i
9=j
10=k
11=l
12=m
13=n
14=o
15=p
16=q
17=r
18=s
19=t
20=u
21=v
22=w
23=x
24=y
25=z

while [ $n -le 25 ]
do
echo "( $n )" >> combinações-de-A_Z.txt
n=`expr $n + 1`
done

=====================================================

devo colocar os numeros entre aspas??

se for, quais serao?? "" '' ``


8. Re: script quase impossivel de se fazer [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/04/2009 - 13:26h

se o

25=Z
26=??? qual será o valor de 26?? 26=cg??


9. Re: script quase impossivel de se fazer [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 09/04/2009 - 14:06h

Na linha:

echo "( $n )" >> combinações-de-A_Z.txt

Coloque assim:

echo $`echo $n` >> combinações-de-A_Z.txt


10. Re: script quase impossivel de se fazer [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/04/2009 - 15:30h

Todas as combinaçoes numéricas possíveis de A á Z!!



teste.sh: line 18: 0=a: command not found
teste.sh: line 19: 1=b: command not found
teste.sh: line 20: 2=c: command not found
teste.sh: line 21: 3=d: command not found
teste.sh: line 22: 4=e: command not found
teste.sh: line 23: 5=f: command not found
teste.sh: line 24: 6=g: command not found
teste.sh: line 25: 7=h: command not found
teste.sh: line 26: 8=i: command not found
teste.sh: line 27: 9=j: command not found
teste.sh: line 28: 10=k: command not found
teste.sh: line 29: 11=l: command not found
teste.sh: line 30: 12=m: command not found
teste.sh: line 31: 13=n: command not found
teste.sh: line 32: 14=o: command not found
teste.sh: line 33: 15=p: command not found
teste.sh: line 34: 16=q: command not found
teste.sh: line 35: 17=r: command not found
teste.sh: line 36: 18=s: command not found
teste.sh: line 37: 19=t: command not found
teste.sh: line 38: 20=u: command not found
teste.sh: line 39: 21=v: command not found
teste.sh: line 40: 22=w: command not found
teste.sh: line 41: 23=x: command not found
teste.sh: line 42: 24=y: command not found
teste.sh: line 43: 25=z: command not found

======================================

os numeros nao estao sendo variaveis

estava pensando em fazer algo mais simples

==================================================================

#!/bin/bash

clear #limpar tudo que tem no terminal

echo "Todas as combinaçoes numéricas possíveis de A á Z!!" #exibiçao no topo do programa
echo
echo
echo
if [ -e combinações-de-A_Z.txt ]
then
cat > 0 combinações-de-A_Z.txt
else
touch combinações-de-A_Z.txt
fi



for (( n = a ; n <= z ; n++ ))
do
echo $`echo $n` >> combinações-de-A_Z.txt
done

=======================================

mas nao está dando certo tbm, oq esta errado?


11. Re: script quase impossivel de se fazer [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 09/04/2009 - 18:21h

Aprendi. Faça assim:

echo -n "\nLetra "{A..Z}

Simples! E nem sabia...


12. Re: script quase impossivel de se fazer [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/04/2009 - 22:19h

ae mano

tamo quase lah

esta aparecendo um monte de letra no terminal, mas o loop esta infinito

e o arquivo soh esta aparecendo o numero 0






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts