Descriptografar MD5

26 respostas
L

Salve!

Estou tentando há algum tempo fazer a descriptografia de uma senha em md5, porém, não sei qual API em java que me auxiliaria nessa tarefa!

Fiz alguns testes de criptografia usando java.security.MessageDigest, porém, não consigo fazer o processo inverso. Li a documentação mas não vi nenhum método que faça isso.

alguém pode me ajudar?

obrigado. 8O

26 Respostas

J

MD5 é um algoritmo de hash unidirecional e, portanto, uma vez criptografados, os dados não podem mais ser descriptografados.

F

Conselho: Se descobrir como descriptografar, venda pra Nasa.
hiihih

_

hm…

hehhe esses dias vi um tópico aqui de um chines, se nao me engano, que quebrou o a codificaçÃo MD5 e SHA-1…

Pergunta pra ele como faz ehehhe :grin:

J

Pois é!

http://en.epochtimes.com/news/7-1-11/50336.html

8O

C

A codificação do MD5 é unidirecional. Logo, se vc criptografar os dados NÃO conseguirá descriptografá-los.

T

não entendo nada disso não, mas qual a finalidade de vc criptografar e não conseguir mais decriptografar a sua informação?

P

a informação se mantem segura para quem não conheçe do q se trata aquilo…

vc consegue sim, criptografar uma informação e comparar com a q ja esta criptografada, isso a grosso modo…

J

Bom … é o seguinte, não foi fácil, mais eu estava com esse mesmo problema esses dias… então segue ai a solução…

aj221ca64543574ev3254ga1239424387

supomos que temos esse MD5 que por acaso é minha senha…
vamos descriptografa-la:

Não vou dar o código assim fácil né ! hehehe… mais segue a lógica…

Separe as letras dos números, e o que sobra é:

ajcaevga

Agora ficou fácil, pegue apenas as letras de índice par… e a senha é …

ajcaevga

java

Espero ter ajudado… estou tentando quebrar agora a SHA-512

Qualquer coisa eu posto novamente abraços !

P

caro javerson…

pela sua lógica, o Hash aa5717e6412e75ecd6c6dca6632b8f2b

tirando os numeros ficaria: aaeeecdcdcabfb

então a senha seria: aecccbb ???

a senha criptografada para gera esse Has foi h4e8riew, se vc reparar o Hash não possui as letras h,r,i,w q estão na senha…e se a senha tiver numeros???

ajuda a gente a entender o seu raciocinio…eu ateh o pouco q eu conheço, a forma de se quebrar MD5 eh atraves de Rainbow Tables

bom…acho q a discussão sobre isso vai longe, hehehehe

vlw

J

Olá pedrobusto,

A classe que o pessoal do GUJ me passou para criptografia MD5(Marcelo Dimas version 5.0) foi a seguinte...

/**@author Marcelo Dimas/
 * @version 5
 */
public class MD5 {
 
 public String encrypt(String enc){
  String RESULTADO = "";
  for(int i = 0; i < enc.length(); i++){
   RESULTADO += getNUMBER();
   RESULTADO += getKEY();
   RESULTADO += enc.substring(i, i+1);
  }
  return RESULTADO;
 }
 
 
 public String getKEY(){
  return new Character((char)(Math.random()*23+97)).toString();
 }

 
 public String getNUMBER(){
  return String.valueOf(Math.round(Math.random() * 1000 % 999));
 }
 
 public static void main(String[] args) {
  System.out.println(new MD5().encrypt("java"));
 }
 
}

Essa classe está licensiada pelo LGPL, se quiser pode utiliza-la.

Creio que você deve ter se enganado sobre Rainbow Tables, nem tem isso nessa classe :grin: .. mais belesa a gente ta aqui pra se ajudar.. hj foi minha vez de te ajudar.. amanha alguem pode precizar de voçe.

Se quiser lhe mando no email.. a classe que estou fazendo pra criptografia SHA ....

Abraços..

L

Concordo com o colega pedrobusko, Rainbow Tables é realmente o melhor caminho, eu possuo uma tabela de Rainbow de 37 gb, são todas as combinações possíveis de 3 a 10 dígitos usando os caracteres do 32 ao 196 da tabela ascII.
O que levaria anos p ser desvendado, acaba levando 10 min, isso pq está em um banco usando mysql e a máquina é um k6II-500 usando slackware…
É praticamente impossível descubrir uma chave md5, o cara precisa têr uma mente muito louca se conseguir.
Tentar entender o processo chave de como é encriptado é válido, o que é insano, é fazer um algorítimo do tipo BF(brute force) que vá varrendo todas as combinações.

M

Algo que eu sempre digo quando me perguntam isso:
Quem descobrir como desafazer o md5, vai ter inventado o melhor compactador/descompactador do mundo :stuck_out_tongue:
Imagina, qualquer quantidade absurda de dados compactada em míseros 128 bytes :slight_smile:
Dá pra decorar e levar os dados na mente se quiser hehe.

Bom, falando serio, é só raciocinar um pouco que a gente vê que é impossível desfazer um md5 e obter a chave original com 100% de precisão, porque a quantidade de hashes possíveis, apesar de imensa, é limitada.
Mesmo usando força bruta, rainbow tables, vc só vai obter algo que vc sabe que produz o mesmo hash, mas nunca vai poder afirmar que aquele foi o valor original usado pra produzir o hash(Pode ser que isso seja importante pra vc, pode ser que não…)

M

Bom dia companheiros, parece que não é tão impossível assim retornar o Hash do MD5 não, como este site: http://md5.rednoize.com/ que faz isso com um grande rapidez, e todos que testei agora, de senha de até 6 digitos, ele fez pereitamente, agora resta sabermos como isso foi feito, abraços a todos.

diego_qmota

lusilva1982PJ:
Salve!

Estou tentando há algum tempo fazer a descriptografia de uma senha em md5, porém, não sei qual API em java que me auxiliaria nessa tarefa!

Fiz alguns testes de criptografia usando java.security.MessageDigest, porém, não consigo fazer o processo inverso. Li a documentação mas não vi nenhum método que faça isso.

alguém pode me ajudar?

obrigado. 8O

Pergunte para alguém da CIA, MI6… algum serviço de inteligência deve saber… kk :slight_smile:

A

Meu filho...

Você confundiu criptografia MD5 (Message-Digest algorithm 5) com MD5(Marcelo Dimas version 5.0) ????

kkkkkkkkkkkkk

e antes de tentar aprender java, volta pro ensino fundamental porque você escreve tudo errado!!! kkkkkkk

belesa e precizar

kkkkkkkk

javersonPJ:
Olá pedrobusto,

A classe que o pessoal do GUJ me passou para criptografia MD5(Marcelo Dimas version 5.0) foi a seguinte...

/**@author Marcelo Dimas/
 * @version 5
 */
public class MD5 {
 
 public String encrypt(String enc){
  String RESULTADO = "";
  for(int i = 0; i < enc.length(); i++){
   RESULTADO += getNUMBER();
   RESULTADO += getKEY();
   RESULTADO += enc.substring(i, i+1);
  }
  return RESULTADO;
 }
 
 
 public String getKEY(){
  return new Character((char)(Math.random()*23+97)).toString();
 }

 
 public String getNUMBER(){
  return String.valueOf(Math.round(Math.random() * 1000 % 999));
 }
 
 public static void main(String[] args) {
  System.out.println(new MD5().encrypt("java"));
 }
 
}

Essa classe está licensiada pelo LGPL, se quiser pode utiliza-la.

Creio que você deve ter se enganado sobre Rainbow Tables, nem tem isso nessa classe :grin: .. mais belesa a gente ta aqui pra se ajudar.. hj foi minha vez de te ajudar.. amanha alguem pode precizar de voçe.

Se quiser lhe mando no email.. a classe que estou fazendo pra criptografia SHA ....

Abraços..

A

Para o hash MD5 - aa5717e6412e75ecd6c6dca6632b8f2b
a string e: h4e8riew

pedrobuskoPJ:
caro javerson…

pela sua lógica, o Hash aa5717e6412e75ecd6c6dca6632b8f2b

tirando os numeros ficaria: aaeeecdcdcabfb

então a senha seria: aecccbb ???

a senha criptografada para gera esse Has foi h4e8riew, se vc reparar o Hash não possui as letras h,r,i,w q estão na senha…e se a senha tiver numeros???

ajuda a gente a entender o seu raciocinio…eu ateh o pouco q eu conheço, a forma de se quebrar MD5 eh atraves de Rainbow Tables

bom…acho q a discussão sobre isso vai longe, hehehehe

vlw

A

Um pouco sobre MD5

MD5
Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321, e muito utilizado por softwares com protocolo ponto-a-ponto (P2P, ou Peer-to-Peer, em inglês) na verificação de integridade de arquivos e logins.

Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que tinha alguns problemas de segurança. Por ser um algoritmo unidirecional, uma hash md5 não pode ser transformada novamente no texto que lhe deu origem. O método de verificação é, então, feito pela comparação das duas hash (uma da mensagem original confiável e outra da mensagem recebida). O MD5 também é usado para verificar a integridade de um arquivo através, por exemplo, do programa md5sum, que cria a hash de um arquivo. Isto pode-se tornar muito útil para downloads de arquivos grandes, para programas P2P que constroem o arquivo através de pedaços e estão sujeitos a corrupção dos mesmos. Como autenticação de login é utilizada em vários sistemas operacionais unix e em muitos sites com autentificação.

Em 2008, Ronald Rivest e outros, publicaram uma nova versão do algoritmo o MD6 com hash de tamanhos 224, 256, 384 ou 512 bytes. O algoritmo MD6 iria participar do concurso para ser o novo algoritmo SHA-3[1] [2], porém após removeu-o do concurso por considera-lo muito lento, anuncionado que os computadores de hoje são muito lentos para usar o MD6.

Fonte:

luistiagos

bem tem uma maneira… faça um algoritimo que tente todas as combinações de caracteres possiveis… em cerca de 5 min se tiver muita sorte ou 5 trilhões de anos se tiver azar ele descobre pra vc… XD

M

Hoje em dia o MD5 não é tão confiável… bom, É CONFIÁVEL, mas não tanto assim!
Dado que já existem dezenas de bancos com hashes md5, inclusive disponíveis na internet.
A título de exemplo:

http://md5online.net/

:!:

gledson85

Esse site vai te ajudar:

http://passcracking.com/

Vingdel

javersonPJ:
Bom … é o seguinte, não foi fácil, mais eu estava com esse mesmo problema esses dias… então segue ai a solução…

aj221ca64543574ev3254ga1239424387

supomos que temos esse MD5 que por acaso é minha senha…
vamos descriptografa-la:

Não vou dar o código assim fácil né ! hehehe… mais segue a lógica…

Separe as letras dos números, e o que sobra é:

ajcaevga

Agora ficou fácil, pegue apenas as letras de índice par… e a senha é …

ajcaevga

java

Espero ter ajudado… estou tentando quebrar agora a SHA-512

Qualquer coisa eu posto novamente abraços !

Boa Tarde, javersonPJ!

Mas, se não me engano, o MD5 para a string “java” é 93f725a07423fe1c889f448b33d21f46

Fiz de cabeça… me corrijam se eu estiver errado… rsrs

Abraço!

Vingdel

Boa Tarde, TeeheePJ!

Uma das finalidades é de assegurar a integrifade de um arquivo, por exemplo, para ver se houve falha na transferencia do arquivo.

Espero ter esclarecido, abraço!

M

Boa Tarde, TeeheePJ!

Uma das finalidades é de assegurar a integrifade de um arquivo, por exemplo, para ver se houve falha na transferencia do arquivo.

Espero ter esclarecido, abraço!

Ué, e as senhas?
Imagina alguém acessar seu banco, terá todas as credenciais em suas mãos!
Fora que um simples vazamento também poderia te fazer perder credibilidade e clientes (DINHEIRO!). Pois muitas pessoas utilizam uma mesma senha para vários locais e não seria nada agradável saber que sua senha vazou.

Sisbratec

EAE galera ou novo aqui no forum. gostaria de uma Dica, criei meu banco de dados Rainbow Tables
devo ter uma Tabela só au dividir por etapas para nao ficar muito grante.
Da uma força ai.
fiz um script em PHP para criptografar os Numeros em sequencia funciona, mais se alguem tiver e puder me passar um outro eu agradeço

Vlw pessoal
até aproxima.

L

O que os caras conseguem e fazer BF(Brute Force) força bruta e não descobrir a senha.

MD5, SHA1, Adler 32, etc são métodos de hash e NÃO criptografia, porque no conceito de criptografia você tem que ter a possibilidade da volta, no caso descriptografia, neste caso o hash é unidirecional como disse o lsouzabrPJ, são cálculos matemáticos que a mesma entrada gerará sempre a mesma saída (hash).

Existem vários sistemas, que vão ficar tentando pegar um hash e ficar tentando descobrir qual foi a senha que gerou um hash igual ao que se quer descobrir. Por isso que sistemas mais robustos eles fazem a validação na criação de senhas com regras do tipo, a senha deve possuir letras e números, pelo menos uma letra maiúscula, etc. Isso é feito com expressões regulares a lógica de criação da senha.

Então é tentiva e erro.

D

lcbrito:
O que os caras conseguem e fazer BF(Brute Force) força bruta e não descobrir a senha.

MD5, SHA1, Adler 32, etc são métodos de hash e NÃO criptografia, porque no conceito de criptografia você tem que ter a possibilidade da volta, no caso descriptografia, neste caso o hash é unidirecional como disse o lsouzabrPJ, são cálculos matemáticos que a mesma entrada gerará sempre a mesma saída (hash).

Existem vários sistemas, que vão ficar tentando pegar um hash e ficar tentando descobrir qual foi a senha que gerou um hash igual ao que se quer descobrir. Por isso que sistemas mais robustos eles fazem a validação na criação de senhas com regras do tipo, a senha deve possuir letras e números, pelo menos uma letra maiúscula, etc. Isso é feito com expressões regulares a lógica de criação da senha.

Então é tentiva e erro.

E mesmo que esses sistemas (brute force) consigam chegar ao hash… não é garantido que a senha que ele utilizou para chegar ao hash é a mesma senha do hash que ele esta tentando descobrir.
Pelo que vi por ai, algumas entradas de Strings diferentes podem gerar o mesmo hash…

Criado 30 de janeiro de 2007
Ultima resposta 27 de jun. de 2014
Respostas 26
Participantes 20