O que é esta ferramenta?
NTLM (NT LAN Manager) é o protocolo legado de autenticação desafio-resposta da Microsoft, ainda usado hoje em logons de contas locais do Windows e como alternativa em muitos ambientes de Active Directory. Seu verificador de senha — comumente chamado de "hash NTLM" — é definido na própria especificação do protocolo MS-NLMP da Microsoft como `MD4(UTF-16-LE(password))`: a senha é primeiro codificada em UTF-16 little-endian (cada caractere passa a ocupar 2 bytes, ao contrário do UTF-8), e essa sequência de bytes é então submetida uma única vez ao algoritmo MD4 da RFC 1320.
A etapa em UTF-16LE é o detalhe que mais gera erro na reimplementação do NTLM: calcular o hash dos bytes UTF-8 de uma string em vez dos seus bytes UTF-16LE produz um resumo completamente diferente e incorreto, mesmo que o texto visível pareça idêntico. Esta ferramenta codifica corretamente, então sua saída corresponde exatamente ao que o próprio Windows armazena e ao que ferramentas como o hashcat (modo 1000) e o Mimikatz esperam.
Como o NTLM é anterior ao design moderno de hashing de senhas, ele não tem nenhuma das proteções criadas depois especificamente para dificultar a quebra: nenhum salt por usuário, nenhum fator de custo configurável, nenhuma iteração deliberada. É uma única passagem de MD4, o que torna o cálculo extremamente rápido — algo conveniente para compatibilidade com sistemas legados, mas desastroso na hora de resistir a ataques de força bruta e de dicionário.
Por que usar?
- Você acabou de extrair um lote de hashes do NTDS.dit de um cliente durante um pentest autorizado e quer conferir rapidamente se o seu próprio script de parsing gerou o formato de hash correto antes de jogar o dump completo no hashcat.
- Está construindo uma ferramenta própria de auditoria de credenciais e acabou de escrever sua implementação de MD4(UTF-16LE) a partir da especificação MS-NLMP — cole um vetor de teste conhecido como "password" aqui para confirmar que a saída do seu código bate com o valor correto 8846F7EAEE8FB117AD06BDD830B7586C antes de confiar nele com dados reais.
- Está resolvendo um desafio de CTF ou um exercício de laboratório caseiro sobre autenticação do Windows e precisa calcular rapidamente como deveria ser o hash NTLM de uma senha específica, sem precisar subir uma VM Windows só para checar um valor.
- Está lecionando um curso de segurança sobre falhas de autenticação legada e quer mostrar aos alunos, ao vivo, por que a falta de salt no NTLM faz com que a mesma senha sempre produza o hash idêntico — não importa a qual conta ou domínio ela pertença.
- 100% local: sua entrada nunca sai do navegador, então é seguro usar mesmo com material de credenciais sensível em uma avaliação autorizada.
Como usar
- Digite a senha ou string que deseja gerar hash na caixa de entrada.
- Clique em "Gerar hash NTLM".
- Leia o hash NTLM de 32 caracteres hexadecimais (a saída em maiúsculas vem ativada por padrão, do mesmo jeito que o Windows e a maioria das ferramentas de quebra de senha exibem — desmarque a caixa para minúsculas).
- Clique em "Copiar" para copiar o hash para a área de transferência.
Exemplo
Entrada
passwordResultado
8846F7EAEE8FB117AD06BDD830B7586CEste é um vetor de teste bem conhecido e verificável de forma independente: o hash NTLM da string literal "password" é sempre 8846F7EAEE8FB117AD06BDD830B7586C. Você pode conferir a saída desta ferramenta com qualquer outra implementação NTLM correta.
NTLM comparado ao hashing moderno de senhas
A tabela abaixo destaca por que o NTLM é considerado obsoleto para proteger sistemas novos, mesmo permanecendo presente na infraestrutura legada do Windows e do Active Directory.
| Propriedade | NTLM | bcrypt / scrypt / Argon2 |
|---|---|---|
| Primitiva subjacente | Uma única passagem de MD4 | Hash lento criado propositalmente, com custo ajustável |
| Salt | Nenhum — senhas idênticas sempre geram o mesmo hash | Salt aleatório único por senha |
| Iteração / stretching | Nenhuma | Fator de custo configurável, que pode ser aumentado com o tempo |
| Resistência a força bruta | Muito fraca — bilhões de tentativas por segundo em GPUs atuais | Propositalmente custoso a cada tentativa |
| Onde ainda é encontrado | Autenticação legada do Windows, fallback do Active Directory | Aplicações novas, melhor prática atual |
Ferramentas relacionadas
Se você precisa de um hash criptográfico de propósito geral em vez da construção MD4(UTF-16LE) específica do NTLM, estas ferramentas podem servir melhor.
→ Gerador de hash multialgoritmo · Gerador de MD5 · Gerador de senhas
Fluxos comuns de verificação de NTLM
Esta ferramenta é mais útil como uma checagem rápida de sanidade dentro de um fluxo de trabalho autorizado maior — confirmando um valor antes de confiar nele num pipeline maior, em vez de substituir esse pipeline por completo.
| Cenário | O que você está checando | Por que isso importa |
|---|---|---|
| Validação de script próprio | Sua implementação de MS-NLMP contra um vetor de teste conhecido | Detecta o erro UTF-8 vs. UTF-16LE antes que corrompa silenciosamente um dataset inteiro |
| Checagem pontual de hash extraído | Uma entrada extraída de SAM/NTDS.dit contra um texto puro esperado | Confirma que sua ferramenta de extração interpretou o formato corretamente |
| Checagem de formato hashcat/Mimikatz | Se a estrutura de saída corresponde ao esperado pelo modo 1000 | Evita rodadas de quebra desperdiçadas contra uma lista de hash malformada |
| Exercícios de treinamento e CTF | Um hash calculado manualmente contra a saída da ferramenta | Constrói intuição sobre como o MS-NLMP realmente funciona, passo a passo |
Perguntas frequentes
O que exatamente é um hash NTLM?
É o verificador de senha que o Windows calcula e armazena para a autenticação NT LAN Manager, definido na especificação MS-NLMP da Microsoft como MD4(UTF-16LE(password)) — uma única passagem de MD4 sobre a codificação em bytes UTF-16 little-endian da senha. Sempre tem 128 bits, exibidos como 32 caracteres hexadecimais.
Por que especificamente UTF-16LE, e não UTF-8 ou ASCII?
O Windows armazena texto internamente em UTF-16LE desde que o NT foi projetado, então as senhas também são codificadas dessa forma antes do hashing. Cada caractere passa a ocupar 2 bytes (em ordem little-endian), inclusive caracteres ASCII simples como "a", que se tornam 0x61 0x00 em vez de apenas 0x61. Calcular o hash dos bytes UTF-8 da mesma string produz um resultado totalmente diferente e errado — esse é o erro mais comum em implementações de NTLM feitas do zero.
É seguro usar NTLM hoje em dia?
Não, e a própria Microsoft recomenda migrar para o Kerberos sempre que possível. O NTLM não usa salt, então senhas idênticas sempre geram hashes idênticos em qualquer usuário e sistema, o que permite buscas em rainbow tables pré-calculadas. Também não tem iteração nem fator de custo — é uma única passagem de MD4 sem salt —, então GPUs modernas conseguem testar bilhões de combinações por segundo contra um hash capturado. Ele sobrevive basicamente por compatibilidade com sistemas e aplicativos Windows mais antigos.
Em que o NTLM difere do hashing moderno de senhas, como bcrypt, scrypt ou Argon2?
Os algoritmos modernos de hashing de senha são propositalmente lentos e usam salt: bcrypt, scrypt e Argon2 adicionam, cada um, um salt aleatório único por senha e um fator de custo ajustável que pode ser aumentado com o tempo à medida que o hardware fica mais rápido, justamente para tornar o brute-force caro mesmo em larga escala. O NTLM não faz nenhuma das duas coisas — foi projetado numa época em que o brute-force offline ainda não era uma ameaça prática, e isso fica evidente. É exatamente por isso que o NTLM nunca deveria ser usado para proteger algo criado hoje; os casos de uso reais desta ferramenta são compatibilidade com infraestrutura Windows já existente e testes de segurança autorizados, não a construção de sistemas novos.
Quais são os usos legítimos de um gerador de hash NTLM?
Verificar hashes extraídos de um banco de dados SAM ou de um NTDS.dit durante um teste de invasão autorizado ou uma auditoria de credenciais; conferir se suas próprias ferramentas ou scripts implementam o MS-NLMP corretamente; gerar hashes de teste para o hashcat (modo 1000) ou verificações de compatibilidade com o formato do Mimikatz em um laboratório sob seu controle; e resolver exercícios de CTF ou treinamento que envolvam explicitamente NTLM. Usar esta ferramenta para atacar contas ou sistemas que não são seus, ou para os quais você não tem autorização por escrito, não é um uso legítimo.
Minha senha ou entrada é enviada a um servidor?
Não. O cálculo do MD4 é executado inteiramente em JavaScript no seu navegador — não existe nenhuma API nativa do navegador para MD4, por isso ela é implementada diretamente no código do lado do cliente desta página — e nada do que você digita é transmitido para lugar nenhum.
Esta ferramenta também lida com o hash LM, ou só com NTLM?
Só NTLM. O hash LM mais antigo usa um esquema completamente diferente e mais fraco (divide a senha em duas metades de 7 caracteres e faz hash de cada uma com DES), e a Microsoft desativou o armazenamento de hash LM por padrão desde o Windows Vista. Se você precisar trabalhar especificamente com hashes LM legados, vai precisar de uma ferramenta separada feita para esse algoritmo.
Por que a mesma entrada sempre produz exatamente o mesmo hash, sem nenhuma aleatoriedade?
Isso é esperado e reflete exatamente o comportamento real do NTLM — o NTLM não tem salt, então MD4(UTF-16LE(entrada)) é uma função puramente determinística. A mesma entrada sempre gera a mesma saída, que é justamente a fraqueza que torna o NTLM vulnerável a ataques de rainbow table pré-calculadas.
Posso usar isso para gerar hash de outra coisa além de uma senha, tipo um nome de usuário ou um valor de desafio?
Tecnicamente sim — a ferramenta apenas calcula MD4(UTF-16LE(entrada)) sobre qualquer texto que você digitar, então funciona para qualquer string. Mas se você está trabalhando com o handshake completo de desafio-resposta do NTLMv2 (que envolve o hash NTLM mais um desafio do servidor, um nonce do cliente e HMAC-MD5), vai precisar de passos adicionais além desta calculadora de hash único.
Como posso verificar se a saída desta ferramenta está realmente correta?
Use o exemplo incluído: o hash NTLM da string literal "password" é um vetor de teste bem conhecido e publicado de forma independente — 8846F7EAEE8FB117AD06BDD830B7586C. Digite-o e confirme que obtém exatamente esse resultado, depois cruze com outra implementação confiável, como os próprios vetores de teste do hashcat, se quiser mais confiança.