minha ideia foi:
Criar um dicionario de dados tipo
cDicionario = "abcde" // vamos fazer somente assim pra não complicar, supondo q a possivel senha seja composta apenas com esses caracteres
Blz, ai não consigo montar uma logica para q vá armazenando as combinacoes e testando maior q 2 posições, até 2 posições blz, agora maior q 2 posições da um nó na cabeça kkk
Tipo a senha pode ser por exemplo "cbea"
Então vai começar testando
a
b
c
d
e
depois
aa
ab
...
ae
até
ee
Até 2 posições até q consegui fazer, o codigo abaixo seria uma ideia, mas acredito q talvez tenha q usar array e recursividade
o problema maior é de 3 posições em diante
pq teria q testar
Código: Selecionar todos
a a a
a a b
...
a a e
depois
a b a
...
a b e
...
a e e
b a a
b a b
...
b a e
b b a
...
b b e
até
e e e
e depois começar a quarta posição
a a a a
...
FUNCTION TestaBruteForce
PRIVATE sDictionary := "abcde"
PRIVATE sPass := "cbea"
PRIVATE sCombinacaoAnterior := ""
PRIVATE nPosFixo := 1
PRIVATE lAchou := .F.
PRIVATE nTentativa := 0
FOR nJ := 1 TO 4 // Tamanho da Senha
Bruteforce()
IF lAchou
QUIT
END
END
********************************************************************************
STATIC PROCEDURE BruteForce()
LOCAL nTotDict := Len(sDictionary)
FOR nI := 1 TO nTotDict
sLetra := SUBSTR(sDictionary, nI, 1)
sTentativa := sCombinacaoAnterior + sLetra
nTentativa++
Mensag(hb_cStr(nTentativa) +' '+ sTentativa) // vai mostrando uma janela com a sequencia da tentativa e a combinacao
IF sPass = sTentativa
Alert("senha localizada", sTentativa)
lAchou := .T.
RETURN
ELSE
IF nI = nTotDict // terminou variacao
IF nPosFixo = nTotDict
// aki teria q ir pra outra sequencia nova
ELSE
sCombinacaoAnterior := PegaCharFixo()
bruteforce()
END
END
END
NEXT
RETURN
********************************************************************************
STATIC PROCEDURE PegaCharFixo()
LOCAL nTotDict := Len(sDictionary)
LOCAL sLetra := SUBSTR(sDictionary, nPosFixo, 1)
nPosFixo++
RETURN sLetraSe eu fizer com WHILE encadeado ou for nex encadeado até 4 posições funciona, mas gostaria de fazer utilizando função para q a rotina service para qualquer tamanho de senha e tb q fosse testando começando com tamanho de senah 1 pq não sei se a senha é 1 posição, 2, 3 ou 4 então tem q ir combinando conforme o tamanho da senha.
Alguém já fez isso ou tem alguma ideia de como eu poderia resolver essa questão
Na verdade parece fácil, mas do tamanho 3 pra frente q complica, quem puder tenta pra ver não é facil não.

