Qual ' é a diferença entre esses hashes MD5?

Qual é a diferença entre este formato:

Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0 

e o seguinte:

5f4dcc3b5aa765d61d8327deb882cf99 

E também,

Como transformar o primeiro formato hash no segundo?

Obrigado em antecipadamente.

Comentários

  • Duvido que o primeiro exemplo seja apenas um hash. Parece que contém o nome do usuário em claro e possivelmente outras informações . Onde você conseguiu isso? Não é realmente possível refazer o hash sem saber o valor do texto não criptografado.
  • Isso ' é o que eu ' também estou pensando. Mas descobri isso depois de executar routersploit em meu roteador usando Kali Linux e a saída diz exatamente que > > Hash found: admin:$1$$oLN1UCc1Y3T30QkMcKMSx0. Também encontrei um caso semelhante aqui link

Resposta

O primeiro exemplo se parece com um formato de arquivo sombra em: ID (admin) Algoritmo (1 = MD5) Sal (nenhum) Hash (oLN1UCc1Y3T30QkMcKMSx0), com o hash no que parece ser o formato Base64.

O segundo (5f4dcc3b5aa765d61d8327deb882cf99) parece ser uma string hexadecimal de 128 bits consistente com um hash MD5 como bem.

No entanto, convertendo ambos para binários & e de volta para seus formatos opostos, os dois hashes não correspondem:

  • Base64 do valor binário representado pela string hexadecimal (5f4dcc3b5aa765d61d8327deb882cf99) é X03MO1qnZdYdgyfeuILPmQ.

  • Por outro lado, a string hexadecimal do hash base64 (oLN1UCc1Y3T30QkMcKMSx0) é a0b3755027356374f7d1090c70a312c7.

     ------- Edit ----- 

Como user1686 apontou: oLN1UCc1Y3T30QkMcKMSx0 é MD5crypt, que é mil rodadas de MD5 com extras em cada rodada. Se ambos os hashes forem de fato da mesma senha, deve ser possível converter o hash MD5 direto em seu equivalente no-salt MD5Crypt ignorando o primeiro cálculo MD5 no MD5Crypt e alimentando-o com o hash em vez da senha.

Resposta

A parte após o último $ é codificada em base64, que é uma maneira razoavelmente compacta (quatro caracteres se tornam três bytes) para representar dados binários como caracteres comuns para impressão (não códigos de controle ASCII ou qualquer coisa que exija o bit alto). O segundo hash é simplesmente codificado em hexadecimal, que é menos eficiente (quatro caracteres se tornam dois bytes), mas mais fácil de ler, especialmente para programadores (que usam hexadecimal o tempo todo).

EDITAR: Além disso, o primeiro o algoritmo é quase certamente md5 crypt , que é um MD5 iterado com algumas coisas adicionais feitas. Portanto, não vai produzir a mesma saída que o MD5 de base para uma determinada entrada. E de fato vemos que não: se você converter a parte posterior do último $ em hexadecimal, sai a0b3755027356374f7d1090c70a312c7. Isso também pode (em pelo menos em parte) porque acho que md5crypt usa uma base64 personalizada, que tem os mesmos caracteres da base64 normal em uma ordem diferente.

O primeiro hash é um exemplo do formato de senha / etc / shadow. $1 significa MD5crypt e a falta de qualquer coisa entre os próximos dois caracteres $ significa que não tem sal. Não temos essa informação para o segundo; pode ser salted ou, possivelmente, uma senha diferente, um algoritmo de hash diferente ou ambos. No entanto, é mais provável ser MD5 vazio do que md5crypt.

Editado para refletir a diferença entre MD5 e md5crypt

Comentários

  • Mesmo que ' seja sem sal, $ 1 $ ainda não é apenas MD5 vazio – é ' s md5crypt , que envolve 1000 rodadas de MD5 com alguns outros temperos adicionados.
  • O segundo hash é apenas md5 (' senha '). echo -n 'password' | md5sum produz 5f4dcc3b5aa765d61d8327deb882cf99

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *