Obtener hashes de archivos puede resultar muy útil. Esto se puede usar, por ejemplo, para asegurarse de que los archivos respaldados no estén corruptos o modificados (generando hashes antes y después del proceso), o para asegurarse de que nadie haya manipulado un archivo importante.

También puede verlo en 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 esté comprometido. En teoría, esto podría significar al menos 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.

Obtener archivos hash con Windows PowerShell

Windows powershell get-hash

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

Puede que no sea tan cómodo como algunos de los programas de hash que existen, 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, p.ej get-filehash c: test.txt.

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

Soportados son: SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160

Tenga en cuenta que MD5 y SHA1 ya no se consideran seguros, pero siguen siendo compatibles.

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

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

  • LiteralPath: get-filehash -LiteralPath -Algorithm SHA512 c: test.txt.
  • Flujo de entrada get-filehash -InputStream -Algorithm SHA512 Stream.

La principal diferencia entre la ruta y la ruta literal es que la ruta literal no admite comodines y se usa exactamente como se escribe.

CertUtil

certutil

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

El comando base es certutil -hashfile PATH, p.ej 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, p. Ej. certutil -hashfile c: example.txt SHA512.

Palabras de cierre

Puede utilizar 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. (vía Genbeta (Español))

Por Deyanira