Preciso fazer um script que descubra um determinado valor.
Não vejo nenhum exemplo pratico a não ser a quebra de senhas(não é essa minha intenção, é apenas para estudo).
O que eu tenho até agora, vou postar logo abaixo, foi escrito em PHP, mas não usa nenhuma função específica do php, então está de fácil entendimento para qualquer programador(ou não).
<?php
#! quantidade mínima de caracteres
$min = 5;
#! quantidade máxima de caracteres
$max = 5;
#! caracteres que @match pode conter
$chars = 'abcdefg';
#! indice correspondente aos caracteres de @chars, neste caso, o valor é igual a: ab
$match = array(0, 1);
#! número de tentativas já realizadas
$num = 0;
#! valores da ultima tentativa
$arr = array();
for($i = $min; $i < $max; $i++){
// reseta todos os indices de @arr para 0
for($w = 0; $w < $i; $w++){
$arr[$w] = 0;
}
// adiciona um novo indice em @arr
$arr[] = 0;
// para cada um dos indices de @arr
for($j = 0; $j < $i+1; $j++){
// percorre toda string @chars
for($n = 0; $n < strlen($chars)-1; $n++){
// o valor foi encontrado
if($arr == $match){
print_r($match);
exit();
}
// o valor não foi encontrado
$num++;
$arr[$j]++;
}
}
}
?>
Legenda(caso seja necessário^^):
strle() : retorna o número de caracteres de uma string
print_r(): exibe todos os indices e valores de um array
exit(): encerra a execução do código
Até agora, ele está quase cumprindo o objetivo.
Dei um print_r em cada resultado, logo acima de $num++, e ele me retornou isso:
PS: tentei colocar aqui o que me foi retornado, mas o forum não permitiu porque ficou muito grande, mas acredito que pelo script já da pra ter uma base
Observe que do indice 1 em diante, só começam a ser alterados apos o indice 0 chegar no sei valor máximo(6).
O problema, é que ele fez apenas 30 tentativas, quando deveria ter feito, pelos meus calculos(7*7*7*7*7): 16807
7 corresponde ao número de caracteres em @chars e pelo método(não lembro o nome) que se usa para descobrir o numero depossibilidades, seria: 7^5, ou 7*7*7*7*7
Estarei tentando continuar isso, mas caso alguém souber o caminho das pedras, ficaria muito grato se pudesse compartilhar.
Pergunta
vini_loock
Olá.
Estou com um probleminha de lógica aqui.
Preciso fazer um script que descubra um determinado valor.
Não vejo nenhum exemplo pratico a não ser a quebra de senhas(não é essa minha intenção, é apenas para estudo).
O que eu tenho até agora, vou postar logo abaixo, foi escrito em PHP, mas não usa nenhuma função específica do php, então está de fácil entendimento para qualquer programador(ou não).
<?php #! quantidade mínima de caracteres $min = 5; #! quantidade máxima de caracteres $max = 5; #! caracteres que @match pode conter $chars = 'abcdefg'; #! indice correspondente aos caracteres de @chars, neste caso, o valor é igual a: ab $match = array(0, 1); #! número de tentativas já realizadas $num = 0; #! valores da ultima tentativa $arr = array(); for($i = $min; $i < $max; $i++){ // reseta todos os indices de @arr para 0 for($w = 0; $w < $i; $w++){ $arr[$w] = 0; } // adiciona um novo indice em @arr $arr[] = 0; // para cada um dos indices de @arr for($j = 0; $j < $i+1; $j++){ // percorre toda string @chars for($n = 0; $n < strlen($chars)-1; $n++){ // o valor foi encontrado if($arr == $match){ print_r($match); exit(); } // o valor não foi encontrado $num++; $arr[$j]++; } } } ?>Legenda(caso seja necessário^^):
strle() : retorna o número de caracteres de uma string
print_r(): exibe todos os indices e valores de um array
exit(): encerra a execução do código
Até agora, ele está quase cumprindo o objetivo.
Dei um print_r em cada resultado, logo acima de $num++, e ele me retornou isso:
PS: tentei colocar aqui o que me foi retornado, mas o forum não permitiu porque ficou muito grande, mas acredito que pelo script já da pra ter uma base
Observe que do indice 1 em diante, só começam a ser alterados apos o indice 0 chegar no sei valor máximo(6).
O problema, é que ele fez apenas 30 tentativas, quando deveria ter feito, pelos meus calculos(7*7*7*7*7): 16807
7 corresponde ao número de caracteres em @chars e pelo método(não lembro o nome) que se usa para descobrir o numero depossibilidades, seria: 7^5, ou 7*7*7*7*7
Estarei tentando continuar isso, mas caso alguém souber o caminho das pedras, ficaria muito grato se pudesse compartilhar.
[]'s
Vinicius
Editado por vini_loockLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.