Existe alguma forma de descobrir que tipo de encriptação/codificação está a ser utilizado?
Por exemplo, estou testando uma aplicação web que armazena a senha no banco de dados em um formato criptografado (WeJcFMQ/8+8QJ/w0hHh+0g==
). Como posso determinar qual hashing ou encriptação está sendo utilizada?
Edit: Eu acabei de notar um script muito legal chamado hashID. O nome praticamente o descreve.
Em geral, usar a experiência para fazer suposições educadas é como essas coisas são feitas.
Aqui está uma lista com um número muito grande de saídas de hash para que você saiba como cada uma se parece e criar assinaturas/patters ou apenas verificar opticamente.
- [Online Hash Crack Crack Hashes Generator](https://www.onlinehashcrack.com/hash-generator.php)
- [InsidePro Software Forum > Hash Types](https://web.archive.org/web/20160403135857/https://forum.insidepro.com/viewtopic.php?t=8225) (via Archive.org)
Há duas *principais* coisas a que você presta atenção primeiro:
- o comprimento do hash (cada função de hash tem um comprimento de saída específico)
- o alfabeto utilizado (são todas letras inglesas? números 0-9 e A-F por isso hex? que caracteres especiais existem, se os houver?)
Vários programas de quebra de senha (John, o estripador, por exemplo) aplicam alguma correspondência de padrão na entrada para adivinhar o algoritmo utilizado, mas isso só funciona em hashes genéricos. Por exemplo, se você pegar qualquer saída de hash e girar cada letra por 1, a maioria dos esquemas de combinação de padrões falhará.
A única maneira é adivinhar. Com a experiência, adivinhar trabalhos será mais correto.
Por exemplo: Com base no comprimento da saída: A saída MD5 é de 128 bits, ou 16 bytes, a saída SHA1 é de 160 bits, ou 20 bytes. Baseado no conjunto de caracteres de saída: BASE64 produz uma saída com caracteres imprimíveis.
No final do dia, é a abordagem de tentativa e erro que lhe ensina como.
A única maneira é quando há's alguns metadados que lhe dizem. Por exemplo, o I'tem trabalhado com PDFs ultimamente, e o formato inclui um dicionário contendo o filtro, algoritmo, tamanho da chave, etc. Mas se tudo o que você'tem é o texto cifrado, então tudo o que você'tem é um pouco de blob opaco de dados.