Obter hashes de arquivo usando o Windows PowerShell

Obter hashes de arquivo pode ser bastante útil. Isso pode ser usado, por exemplo, para garantir que os arquivos de backup não estejam corrompidos ou modificados (gerando hashes antes e depois do processo) ou para garantir que ninguém adulterou um arquivo importante.

Você também pode vê-lo em sites de download, mas o uso é limitado. O motivo é simples: se um invasor conseguiu alterar o arquivo de download, é possível que o site também tenha sido comprometido. Teoricamente, isso poderia pelo menos significar que o hash do arquivo exibido no site também foi modificado para se ajustar à nova versão maliciosa do download.

Analisamos um número considerável de programas relacionados a hash no passado: da extensão do shell do Windows HashTab, do HashMyFiles da Nirsoft ao File Check MD5 e MD5 Check Utility.

Obter hashes de arquivo usando o Windows PowerShell

Se você precisar gerar rapidamente o hash de um arquivo em uma máquina Windows, também poderá usar o PowerShell para isso.

Pode não ser tão confortável quanto alguns dos programas de hash existentes, mas é uma implementação nativa que não requer software de terceiros para funcionar. Útil em ambientes restritos, por exemplo, ou quando não há conexão com a Internet disponível para baixar esses programas.

A geração de hash foi integrada ao PowerShell 4.0. Ele está incluído no Windows 8.1 e Windows Server 2012 R2 e também está disponível para Windows 7 Service Pack 1, Windows Server 2012 e Windows Server 2008 R2 Service Pack 1.

  1. Toque na tecla Windows, digite PowerShell e pressione a tecla Enter para iniciá-la.

O comando principal é get-filehash FILEPATH, por exemplo, get-filehash c: \ test.txt .

Get-FileHash usa o algoritmo Sha256 por padrão. Você pode especificar um algoritmo diferente usando o parâmetro -Algorithm.

Os suportados são: SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160

Observe que MD5 e SHA1 não são mais considerados seguros, mas ainda são suportados.

Portanto, para gerar um hash Sha512, você usaria o comando get-filehash -Algorithm Sha512 c: \ test.txt.

Você também pode usar -LiteralPath ou -InputStream em vez da opção de caminho padrão.

  • LiteralPath: get-filehash -LiteralPath - Algoritmo SHA512 c: \ test.txt.
  • InputStream get-filehash -InputStream -Algorithm SHA512 Stream.

A principal diferença entre o caminho e o caminho literal é que o caminho literal não suporta caracteres curinga e é usado exatamente como é digitado.

CertUtil

CertUtil é outro programa nativo do Windows que você pode usar para calcular hashes de arquivos. Você pode executar o programa no prompt de comando ou usando o PowerShell.

O comando base é certutil -hashfile PATH, por exemplo, certutil -hashfile c: \ example.txt .

Você também pode especificar o algoritmo de hash. São suportados MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512. O algoritmo padrão é MD5.

Para usar um algoritmo de hash diferente, especifique-o após o comando, por exemplo, certutil -hashfile c: \ example.txt SHA512 .

Palavras finais

Você pode usar os comandos nos scripts para calcular hashes para vários arquivos em uma operação. As duas ferramentas nativas get-filehash e certutil são bastante úteis para o cálculo rápido de hashes no Windows e também para o uso de scripts. (via Genbeta (espanhol))