L’hash di un file è la sua impronta digitale, costituita in questo caso da una lunga serie di numeri e lettere, che identifica in modo univoco un file e certifica la sua integrità quando è appena stato scaricato da Internet, per esempio il file ISO di Windows 11 presente nel sito Microsoft, ma l’hash vale anche per qualsiasi eseguibile che installi un gioco o un programma nel computer. Se questa stringa non corrisponde al file appena scaricato, ci possono essere stati dei problemi durante il download che hanno danneggiato l’ISO, se il file eseguibile proviene da fonti non affidabili può essere stato alterato per nasconderci dentro un malware.

Verificare quindi l’hash è importante per essere sicuri di utilizzare sempre file genuini, ovviamente l’hash originale deve essere sempre disponibile nel sito da cui eseguiamo il download.

Come estrarre l’hash file PowerShell

Ci sono molti programmi che calcolano l’hash, ma in questo articolo utilizzeremo PowerShell per farlo. Vediamo alcuni esempi.

Get-FileHash

Get-FileHash estrae l’hash del file che gli indichiamo, in questo caso regedit.exe, e quindi il comando diventa:

  • Get-FileHash C:\Windows\regedit.exe

Se vogliamo invece l’hash di tutti gli eseguibili che si trovano dentro la cartella C:\Windows possiamo usare questo comando:

  • Get-ChildItem -Path C:\windows -Filter *.exe | Get-FileHash

Come estrarre l’hash file PowerShell

Una variante, con l’opzione | format-list finale, del comando visto in precedenza:

  • Get-FileHash C:\Windows\regedit.exe | format-list

Come estrarre l’hash file PowerShell

Creare file txt

Vi serve sapere se l’iso di Windows 11 che avete appena scaricato da Internet, magari da una fonte “alternativa”, è quella corretta Microsoft, basta indicare il nome e il percorso del file per saperlo. A causa delle dimensioni del file iso il calcolo sarà più lungo del solito.

  • Get-FileHash d:\iso\Win11_24H2_Italian_x64.iso | format-list

Se volete avere un file di testo con l’hash del file utilizzate:

  • Get-FileHash d:\iso\Win11_24H2_Italian_x64.iso | format-list > d:\hash.txt

Come estrarre l’hash file PowerShell

Creare file csv

Mentre per avere un file Excel con l’hash di tutti gli eseguibili della cartella Windows\System32 possiamo usare questo comando:

  • Get-Childitem -path "c:\windows\system32\*.exe" | Get-FileHash | Export-csv -path "d:\hash.csv" -Delimiter ";" -NoTypeInformation

Come estrarre l’hash file PowerShell

Se volete estrarre l’hash di tutti gli eseguibili presenti nel disco C dovete tenere conto che molte cartelle non saranno accessibili. Inoltre i tempi di estrazione dell’hash saranno molto lunghi a secondo del numero di file presenti.

  • Get-Childitem -path C:\* -Recurse -Filter *.exe | Get-FileHash | Export-csv -path "d:\hash.csv" -Delimiter ";" -NoTypeInformation

Come estrarre l’hash file PowerShell

Confronto hash

Se già conoscete l’hash del file scaricato, la potete confrontare direttamente, con risposta True o False a seconda della corrispondenza o meno:

  • (Get-FileHash d:\iso\Win11_24H2_Italian_x64.iso).Hash -eq "D95EC65EC06B4036835C7571FE0108159848D2883EF5DA3A67E480130B1F5862"

Come estrarre l’hash file PowerShell

Algoritmi diversi

Se volessimo tutti gli algoritmi con cui è stato firmato il file possiamo utilizzare questo comando:

  • 'SHA1','SHA256','SHA384','SHA512','MD5' | ForEach-Object {Get-FileHash -Algorithm $_ -Path 'c:\windows\regedit.exe' | Select-Object -Property Algorithm,Hash}

Come estrarre l’hash file PowerShell

Mentre per estrarre un singolo algoritmo da un file questi sono i comandi:

  • get-filehash "c:\windows\regedit.exe" -algo md5
  • Get-FileHash "d:\iso\Win11XPE_x64.ISO" -Algorithm SHA256 | Format-List

Come estrarre l’hash file PowerShell