Bem, fiz um algoritimo na linguagem C/C++, nele eu testei uma maneira que descobrir uma senha de no máximo 9 dígitos, na tentativa e erro (força bruta), nele tem duas funções, uma força bruta(normal) e outra força bruta(inteligente), a diferença entre as duas funções é que na força bruta inteligente você não precisa controlar o tamanho da senha, já na força bruta normal, nescessita-se igualar o número de for's ao numero de caracteres da senha, algo simples mas chato para algmas pessoas, você deve estar se perguntando, "por que ele não deixou apenas a função inteligente?", devido ao fato de ser um algoritmo para descobrir senhas, ele nescessita de um maior desempenho e apesar da diferença ser pequena usando apenas números, usando letras ou letras e números essa diferença aumenta muito. Queria também chamar a atenção sobre as impressões das senhas erradas na tela, atrasa muito o a execução do algoritimo, se estiver demorando pra achar a senha retire os printfs de senhas erradas. Vejamos alguns resultados dos testes que realizei em um Notebook Positivo sim+ 1455 Core2 duo 3gb Ram com Windows XP...
Para quebrar uma senha de 9 Dígitos(Apenas números)
11.5s Segundos usando Força Bruta (Inteligente)
8.5s Segundos usando Força Bruta (Normal)
Para quebrar uma senha de 6 Dígitos(Apenas letras minúsculas sem o Ç)
3.3s Segundos usando Força Bruta (Inteligente)
2.2s Segundos usando Força Bruta (Normal)
Para quebrar uma senha de 7 Dígitos(Apenas letras minúsculas sem o Ç)
85.2s Segundos usando Força Bruta (Inteligente)
56.6s Segundos usando Força Bruta (Normal)
Bem, chegou ao fim minha primeira postagem nesse blog, espero não ser a última. Vou disponibilizar o algoritimo feito em C/C++, compilado na IDE CodeBlocks para quem quiser testar, modificar e aprender ou até critica-lo :), A quem baixar comenta aí os resultados dos seus testes. Abaixo segue o link para o download do código e da IDE caso alguem nescessite.
Código em C/C++
IDE Codeblocks
Me perguntaram sobre a biblioteca time.h no código. É que eu estava usando o comando clock(); para medir o tempo de execução, mas como o codeblocks informa o tempo de execução no final do programa, eu retirei o comando clock() e me esqueci de tirar a time...
ResponderExcluir5 anos depois aqui estou eu com uma duvida, haha... e quando eu não souber a senha? você declarou a sua numa linha de codigo, porem para eu tentar descobrir uma aleatoria? como seria?
ResponderExcluirOlá Samuk, bem vindo ao blog.
ExcluirBem, esse código é apenas um exemplo, mas a única diferença entre esse exemplo e uma situação real é que na situação real, antes de efetuar um ataque você precisa capturar um hash ou handshake, esse hash/handshake vai depender de que sistema você quer obter a senha.
Antigamente se fazia ataque de força bruta diretamente nos serviços, mas as senhas eram fracas, 3 a 5 digitos, sem falar que os sistemas não tinham a proteção que tem hoje.
O negócio do hash/handshake é que eles são uma senha criptografada por algoritmos como MD5, sha-1 sha-2, ai antes de comparar a senha, você usa um algoritmo pra converter sua
senha(123456789) em um hash/handshake(5e4f6a6c6d6b6e6f6a6c6d6e5687a654e654d) <-- Exemplo
depois de converter sua senha para um hash/handshake, você compara com o hash/handshake capturado, e assim para todas as senhas da wordlist.
Velho, tu é muito pica, mas mano, oque posso alterar ou adicionar para poder aumentar o número de caracteres possíveis, preciso que possa usar até pelo menos 15 caracteres.
ResponderExcluirCara acho muito massa seu trabalho mas poderia postar como fazer esses tipos de código C ou me aconselhar um curso online pq só sei poucos códigos uns ... 5 códigos sabe bem....
ResponderExcluir