Obtenga hashes de archivos con Windows PowerShell

Obtener hashes de archivos puede ser bastante útil. Esto se puede usar, por ejemplo, para asegurarse de que los archivos respaldados no estén dañados o modificados (generando hashes antes y después del proceso), o para asegurarse de que nadie manipule un archivo importante.

También puede verlo en los sitios de descarga, pero el uso allí es limitado. La razón es simple: si un atacante logró cambiar el archivo de descarga, existe la posibilidad de que el sitio web también se vea comprometido. En teoría, esto al menos podría significar que el hash del archivo que se muestra en el sitio también se modificó para adaptarse a la nueva versión maliciosa de la descarga.

Hemos revisado una cantidad considerable de programas relacionados con el hash en el pasado: desde la extensión de shell de Windows HashTab, pasando por HashMyFiles de Nirsoft hasta File Check MD5 y MD5 Check Utility.

Obtenga hashes de archivos con Windows PowerShell

Si necesita generar el hash de un archivo rápidamente en una máquina con Windows, entonces también puede usar PowerShell para eso.

Puede que no sea tan cómodo como algunos de los programas de hash, pero es una implementación nativa que no requiere software de terceros para funcionar. Útil en entornos restringidos, por ejemplo, o cuando no hay conexión a Internet disponible para descargar estos programas.

La generación de hash se integró en PowerShell 4.0. Se incluye en Windows 8.1 y Windows Server 2012 R2, y también está disponible para Windows 7 Service Pack 1, Windows Server 2012 y Windows Server 2008 R2 Service Pack 1.

  1. Toque la tecla de Windows, escriba PowerShell y presione la tecla Intro para iniciarlo.

El comando principal es get-filehash FILEPATH, por ejemplo, get-filehash c: \ test.txt .

Get-FileHash utiliza el algoritmo Sha256 de forma predeterminada. En su lugar, puede especificar un algoritmo diferente utilizando el parámetro -Algorithm.

Se admiten: SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160

Tenga en cuenta que MD5 y SHA1 ya no se consideran seguros, pero aún son compatibles.

Entonces, para generar un hash Sha512, usaría el comando get-filehash -Algorithm Sha512 c: \ test.txt.

También puede usar -LiteralPath o -InputStream en lugar de la opción de ruta predeterminada.

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

La diferencia principal entre path y literalpath es que literalpath no admite comodines y se usa exactamente como se escribe.

CertUtil

CertUtil es otro programa nativo de Windows que puede usar para calcular hashes de archivos. Puede ejecutar el programa desde el símbolo del sistema o mediante PowerShell.

El comando base es certutil -hashfile PATH, por ejemplo, certutil -hashfile c: \ example.txt .

También puede especificar el algoritmo hash. Se admiten MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512. El algoritmo predeterminado es MD5.

Para usar un algoritmo hash diferente, especifíquelo después del comando, por ejemplo, certutil -hashfile c: \ example.txt SHA512 .

Palabras de clausura

Puede usar los comandos en scripts para calcular hashes para varios archivos en una sola operación. Las dos herramientas nativas get-filehash y certutil son bastante útiles para el cálculo rápido de hashes en Windows y también para el uso de scripts. (a través de Genbeta (español))