Esiste un'utilità integrata di checksum su Windows 7?
Esiste un'utilità integrata di checksum/hash su Windows 7?
CertUtil è un'utilità Windows preinstallata che può essere usata per generare hash checksum:
certUtil -hashfile pathToFileToCheck [HashAlgorithm]
``` ```
CertUtil -hashfile C:\TEMP\MyDataFile.img MD5
HashAlgorithm choices: MD2 MD4 MD5 MD5 SHA1 SHA256 SHA384 SHA512
Quindi, per esempio, quanto segue genera un checksum MD5 per il file C:\TEMP\MyDataFile.img
:
$(CertUtil -hashfile C:\TEMP\MyDataFile.img MD5)[1] -replace " ",""
Per ottenere un output simile a quello dei sistemi *Nix si può aggiungere qualche magia PowerShell:
&001
C'è un'utilità integrata, come specificato in questa altra risposta .
Si può, tuttavia, desiderare di utilizzare questa applicazione freeware chiamata HashTab che si integra perfettamente con Windows Explorer registrando una… beh, una scheda nella finestra di dialogo delle proprietà dei file. È piuttosto dolce.
Sto usando HashCheck ultima versione ) che si integra come pagina di proprietà per i file e include un menu contestuale da confrontare con i file di controllo dell'hash check (SFV).
E’ gratuito, e la fonte è disponibile.
C'è l'utilità FCIV di Microsoft, il Microsoft File Checksum Integrity Verifier link download ).
Lo strumento Microsoft File Checksum Integrity Verifier è un'utilità a riga di comando non supportata che calcola gli hash crittografici MD5 o SHA1 per i file.
Non mostra Windows 7 nei requisiti di sistema ma l'ho appena usato in Windows 8 e ha funzionato.
PowerShell versione 4 e oltre include il Get-FileHash cmdlet.
powershell get-filehash -algorithm md5 <file_to_check>
``` ```
doskey sha1sum=powershell get-filehash -algorithm sha1 "$1"
doskey md5sum=powershell get-filehash -algorithm md5 "$1"
Utilizzare doskey per creare un alias persistente più facile da ricordare.
&001
Ecco uno che ho usato in precedenza che si integra bene con il dialogo “Proprietà” di Explorer: Proprietà estive . E’ sorgente aperto , ed è disponibile anche una versione x64.
Mi piace anche FileAlyzer di Safer Networking, che fornisce anche funzioni aggiuntive. Ma solo per i checksum, Summer Properties è leggero e fa il suo lavoro.
Ho trovato questo script PowerShell:
param([switch]$csv, [switch]$recurse)
[Reflection.Assembly]::LoadWithPartialName("System.Security") | out-null
$sha1 = new-Object System.Security.Cryptography.SHA1Managed
$pathLength = (get-location).Path.Length + 1
$args | %{
if ($recurse) {
$files = get-childitem -recurse -include $_
}
else {
$files = get-childitem -include $_
}
if ($files.Count -gt 0) {
$files | %{
$filename = $_.FullName
$filenameDisplay = $filename.Substring($pathLength)
if ($csv) {
write-host -NoNewLine ($filenameDisplay + ",")
} else {
write-host $filenameDisplay
}
$file = [System.IO.File]::Open($filename, "open", "read")
$sha1.ComputeHash($file) | %{
write-host -NoNewLine $_.ToString("x2")
}
$file.Dispose()
write-host
if ($csv -eq $false) {
write-host
}
}
}
}
Source: Calcolando SHA1 in PowerShell
Esso fa leva su .NET che presumo abbiate installato
Aggiungo questo qui solo perché non ho visto nessun esempio di powershell completamente funzionante, pronto per il copia-incolla:
C:\> powershell "Get-FileHash %systemroot%\system32\csrss.exe"
Algorithm Hash
--------- ----
SHA256 CB41E9D0E8107AA9337DBD1C56F22461131AD0952A2472B4477E2649D16E...
C:\> powershell -c "(Get-FileHash -a MD5 '%systemroot%\system32\csrss.exe').Hash"
B2D3F07F5E8A13AF988A8B3C0A800880
C:\> CertUtil -hashfile "%systemroot%\system32\csrss.exe" MD5 | findstr -v file
b2 d3 f0 7f 5e 8a 13 af 98 8a 8b 3c 0a 80 08 80
C:\>
L'uscita certutil
sembra essere cambiata rispetto a Windows 8, quindi il mio vecchio filtro per isolare l'hash non funziona più. Anche gli spazi estranei sono andati via - una cosa in meno di cui preoccuparsi quando si fa scripting. Ecco la nuova demo copia-incolla:
C:\>CertUtil -hashfile "%systemroot%\system32\csrss.exe" | findstr -v ash
0300c7833bfba831b67f9291097655cb162263fd
C:\>CertUtil -hashfile "%systemroot%\system32\csrss.exe" SHA256 | findstr -v :
a37d616f86ae31c189a05b695571732073b9df97bf5a5c7a8ba73977ead3e65b
C:\>ver
Microsoft Windows [Version 10.0.16299.1451]
C:\>
``` ```
C:\>CertUtil -hashfile "C:\windows\fonts\arial.ttf" | findstr -vrc:"[^0123-9aAb-Cd-EfF]"
12c542ef8c99cf3895ad069d31843a5210857fdc
Per rendere questo più resistente contro la rottura dell'ennesimo futuro cambiamento di certutil
, dovremmo cercare linee con caratteri non esagonali per filtrare: [^0-9a-zA-Z]
. Questo dovrebbe renderlo più sicuro anche per altri locali e lingue.
C:\>powershell -c "Get-FileHash -?" | findstr gori
Get-FileHash [-Path] <string[]> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 | RIPEMD160}]
Get-FileHash -LiteralPath <string[]> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 |
Get-FileHash -InputStream <Stream> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 | RIPEMD160}]
C:\>certutil -hashfile -v /? | findstr gori
CertUtil [Options] -hashfile InFile [HashAlgorithm]
Hash algorithms: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
``` &001
Perché è così strano l'anti-hex regex vero e proprio? Vedi [ questa domanda ](https://stackoverflow.com/questions/2635740/why-does-findstr-not-handle-case-properly-in-some-circumstances) per sapere come le gamme regex in `findstr` non funzionano come dovrebbero. Ho incluso un carattere di spazio extra per la retrocompatibilità con le vecchie versioni di `certutil`, ma è opzionale.
Si noti che l'impostazione predefinita di powerhell `Get-FileHash` è SHA256, mentre `certutil` è ancora impostato su SHA1. Specificare quindi esplicitamente il proprio algoritmo dove necessario. È possibile verificare rapidamente le opzioni disponibili come questa:
&001
Microsoft File Checksum Integrity Verifier _. Può calcolare MD5 e SHA-1 valori hash.
Scaricare, estrarre i file, quindi aprire un prompt di comandi, andare al percorso estratto e poi digitare il seguente comando:
fciv -md5 filepath\filename.extension
Per esempio:
fciv -md5 d:\programs\setup.exe
Purtroppo non che io sappia, ma la suite Sysinternals di Microsoft include un simpatico strumento chiamato * sigcheck **.
Un file batch basato sul commento di pbarney alla risposta con il maggior numero di voti: Questo copia l'hash MD5 di qualsiasi file trascinato nel file batch negli appunti:
@ECHO OFF
FOR /f "tokens=*" %%i IN ('@certutil -hashfile %1 MD5 ^| find /v "hash of file" ^| find /v "CertUtil"') DO SET r=%%i
SET r=%r: =%
ECHO %r% | clip
``` ```
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Get MD5]
@="Copy MD5 to Clipboard"
[HKEY_CLASSES_ROOT\*\shell\Get MD5\command]
@="\"C:\<PATH TO BAT FILE>\getMD5.bat\" \"%1\""
Per farne una voce di menu contestuale invece:
&001
Questo è solo uno script di shell cmd che usa risposta di tedr2 , ma elimina le linee e gli spazi di uscita estranei:
:: hash.cmd : Get a hash of a file
:: p1: file to be hashed
:: p2: Hash algorithm in UPPERCASE
:: p3: Output file
@setlocal
@for /f "tokens=*" %%a in (
'@certutil -hashfile %1 %2 ^|find /v "hash of file" ^|find /v "CertUtil"'
) do @(
@set str=%%a
)
@set str=%str: =%
@echo %str%
@endlocal
L'uscita può essere reindirizzata ad un file se necessario:
@echo %str% > %3
``` ```
sys> \dev\cmd\hash.cmd MyApp.dll SHA1
8ae6ac1e90ccee52cee5c8bf5c2445d6a92c0d4f
, ad esempio
&001
MD5 Context Menu fa esattamente questo. Aggiunge un'opzione * MD5 ** al menu contestuale dei file:
MD5 Context Menu è un'estensione di shell freeware per Windows che visualizza la somma di hash MD5 del file selezionato.
Dice che è compatibile con Windows 95, 98, ME, NT, 2000, e XP, anche se per me funziona perfettamente bene su Windows 7. È un piccolo download (238 KB) e include tutto il necessario.
Cygwin contiene un'utilità md5sum.exe
che dovrebbe fare quello che si vuole.
Uso checksum utilità a riga di comando.
md5
, sha1
, sha256
, sha512
e -?
. Uso:
checksum [-t=sha1|sha256|sha512|md5] [-c=f=firma] [-f=]filepath
--help
, -h
, -f
, --file=VALUE
Stampa le opzioni. -t
, --type
Nome del file. --hashtype=VALUE
- md5
, -c
, --check=VALUE
Hashtype Defaults to &007. # Check md5 for "E:\Саша Неотразима\Sasha-Irresistible.exe" file
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe"
342B45537C9F472B93A4A0C5997A6F52
# Check sha256
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256
F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4
# Correct 41474147414741474147 sha256 hash or not?
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256 -c 41474147414741474147
Error - hashes do not match. Actual value was 'F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4'
# One more attempt
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256 -c F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4
Hashes match..
Questa non è un'utilità incorporata, ma è un'ottima opzione http://checksumcompare.sanktuaire.com &003
Si può confrontare il checksum per file e/o sommari se due cartelle differiscono o sono identiche.
È possibile utilizzare MD5sums per Windows , un download di soli 28 KB Cygwin potrebbe essere eccessivo se tutto quello che si vuole fare è calcolare gli hash MD5).
Il modo più semplice per usarlo è usare Explorer per trascinare e rilasciare i file su md5sums.exe per ottenere i loro hash MD5.
La risposta corretta è ovviamente sì, CertUtil (vedi la risposta di tedr2 ).
Ma aggiungerò il programma gratuito di Penteract File Checksum Verifier che, credo, è uno dei programmi più facili da usare. (Disclaimer: sono affiliato a Penteract.)
Alcuni dei suoi vantaggi:
Per verificare l'integrità di questo programma (contro gli attacchi man-in-the-middle ) - si scarica su una connessione sicura.
Plus: gratuito, offline (in modo da non dover caricare i file), facile da usare (trascinare un file e ottenere il risultato), si lancia dal menu di avvio (non è necessario cercare l'eseguibile scaricato quando si vuole usarlo tra un anno), e supporta MD5, SHA1, SHA256, ecc.
HashTab 3.0** è un'estensione shell gratuita che calcola molti checksum, incluso MD5. È integrata come nuova scheda nelle Proprietà del file.
Si può provare msys2, è qui .
Solo digitare (algoritmo)somma. (algoritmo) è l'algoritmo di hash che si vuole usare ad esempio md5, sha1, sha256 …
A differenza di Cygwin, questo strumento è portatile, basta scaricare il file .zip ed estrarlo dove si vuole. È possibile utilizzarlo con un semplice click(msys2.exe).
Hop questo strumento vi aiuterà.
Bene, ho fatto un programma per calcolare alcuni hash da un file. Spero che vi sia d'aiuto.
Cosa fa questo? Calcola l'hash SHA-1 , l'hash SHA-384, MD5 e l'hash SHA-256 . Bene, questo è tutto :)
Per una soluzione che funziona su Windows o su qualsiasi altro ambiente, utilizzare Python.
installare Python – un programma di installazione di Windows è fornito su https://www.python.org/downloads/ (http://pastebin.com/raw.php?i=cKATyGLb)
scaricare un'implementazione testata cksum
, ad esempio [ http://pastebin.com/raw.php?i=cKATyGLb ]&003 – salva il contenuto di questa per dire, c:\cksum.py
o ovunque trovi conveniente
Poi per eseguire un checksum:
python c:\cksum.py INPUTFILE
Non è veloce come un programma di utilità compilato, ma è compatibile con Unix cksum
e funziona ovunque.