Czy w systemie Windows 7 istnieje wbudowane narzędzie sum kontrolnych?
Czy w systemie Windows 7 istnieje wbudowane narzędzie sum kontrolnych/hash?
CertUtil jest preinstalowanym narzędziem Windows, które może być używane do generowania sum kontrolnych haszu:
certUtil -hashfile pathToFileToCheck [HashAlgorithm]
HashAlgorithm choices: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
Tak więc, na przykład, następujące narzędzie generuje sumę kontrolną MD5 dla pliku C:\TEMP\MyDataFile.img
:
CertUtil -hashfile C:\TEMP\MyDataFile.img MD5
Aby uzyskać wyjście podobne do *Nix systemów można dodać trochę magii PowerShell:
$(CertUtil -hashfile C:\TEMP\MyDataFile.img MD5)[1] -replace " ",""
Istnieje wbudowane narzędzie, jak określono w ta druga odpowiedź .
Możesz jednak użyć tej darmowej aplikacji o nazwie HashTab , która integruje się z Eksploratorem Windows poprzez zarejestrowanie a… dobrze, zakładki w oknie dialogowym właściwości plików. To całkiem słodkie.
Używam HashCheck najnowsza wersja ), która integruje się jako strona właściwości dla plików i zawiera menu kontekstowe do porównania z plikami hash check (SFV).
Jest darmowe, a źródło jest dostępne.
Istnieje narzędzie FCIV firmy Microsoft, Microsoft File Checksum Integrity Verifier link do pobrania ).
Narzędzie Microsoft File Checksum Integrity Verifier jest nieobsługiwanym narzędziem wiersza poleceń, które oblicza kryptograficzne skróty plików MD5 lub SHA1.
Nie pokazuje systemu Windows 7 w wymaganiach systemowych, ale właśnie użyłem go w Windows 8 i zadziałał.
PowerShell w wersji 4 i większej zawiera Get-FileHash cmdlet.
powershell get-filehash -algorithm md5 <file_to_check>
Użyj doskey aby utworzyć trwały alias, który jest łatwiejszy do zapamiętania.
doskey sha1sum=powershell get-filehash -algorithm sha1 "$1"
doskey md5sum=powershell get-filehash -algorithm md5 "$1"
Oto jeden z nich, którego używałem wcześniej, który ładnie integruje się z dialogiem “Właściwości” Explorera: Summer Properties . Jest to otwarte źródło, dostępna jest także wersja x64.
Lubię także Safer Networking’s FileAlyzer , który oferuje także dodatkowe funkcje. Ale tylko dla sum kontrolnych, Summer Properties jest lekkie i wykonuje swoją pracę.
Znalazłem ten skrypt 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
}
}
}
}
Źródło: Obliczenie SHA1 w PowerShell
Wykorzystuje on .NET, który zakładam, że masz zainstalowany
Dodaję to tutaj tylko dlatego, że nie widziałem żadnych w pełni działających przykładów powershell'a, gotowych do skopiowania:
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:\>
Wyjście certutil
wydaje się zmieniać od czasów Windows 8, więc mój stary filtr do izolowania haszu już nie działa. Zniknęły też zewnętrzne spacje - o jedną rzecz mniej, o którą trzeba się martwić podczas pisania skryptu. Oto nowe demo z możliwością kopiowania:
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:\>
Aby uczynić to bardziej odpornym na złamania z kolejnej przyszłej zmiany w certutil
, powinniśmy poszukać linii ze znakami innymi niż szesnastkowe do odfiltrowania: [^0-9a-zA-Z]
. To powinno również uczynić go bezpieczniejszym dla innych miejsc i języków.
C:\>CertUtil -hashfile "C:\windows\fonts\arial.ttf" | findstr -vrc:"[^0123-9aAb-Cd-EfF]"
12c542ef8c99cf3895ad069d31843a5210857fdc
Dlaczego ten rzeczywisty antyheksowy regex jest tak dziwny? Zobacz to pytanie aby dowiedzieć się jak zakresy regexowe w findstr
nie działają tak jak powinny. Dodałem dodatkowy znak spacji dla wstecznej kompatybilności ze starszymi wersjami certutil
, ale jest on opcjonalny.
Zauważ, że powershell Get-FileHash
domyślnie jest SHA256, podczas gdy certutil
nadal domyślnie jest SHA1. Określ więc wyraźnie swój algorytm tam, gdzie to konieczne. Możesz szybko sprawdzić dostępne opcje, takie jak:
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
Microsoft File Checksum Integrity Verifier _. Może on obliczyć MD5 i SHA-1 wartości hash.
Pobierz, rozpakuj pliki, następnie otwórz polecenie zachęty, przejdź do rozpakowanej ścieżki, a następnie wpisz następujące polecenie:
fciv -md5 filepath\filename.extension
Na przykład:
fciv -md5 d:\programs\setup.exe
Niestety, nie jestem tego świadom, ale pakiet Microsoft Sysinternals zawiera ładne narzędzie o nazwie * sigcheck **.
Plik wsadowy oparty na komentarzu pbarney'a do odpowiedzi z największą ilością głosów: To kopiuje hash MD5 dowolnego pliku, który jest przeciągnięty na plik wsadowy do schowka:
@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
Aby uczynić go pozycją menu kontekstowego zamiast:
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\""
Jest to tylko skrypt powłoki cmd, który wykorzystuje odpowiedź tedr2 , ale odcina obce linie wyjściowe i spacje:
:: 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
Wyjście może być przekierowane do pliku w razie potrzeby:
@echo %str% > %3
np.
sys> \dev\cmd\hash.cmd MyApp.dll SHA1
8ae6ac1e90ccee52cee5c8bf5c2445d6a92c0d4f
Menu kontekstowe MD5 robi dokładnie to. Dodaje opcję * MD5 ** do menu kontekstowego plików:
MD5 Context Menu jest darmowym rozszerzeniem powłoki dla Windows, które wyświetla sumę hash MD5 wybranego pliku.
Mówi, że jest kompatybilne z Windows 95, 98, ME, NT, 2000 i XP, chociaż działa dla mnie doskonale na Windows 7. Jest to mały plik do pobrania (238 KB) i zawiera wszystko czego potrzebujesz.
(http://cygwin.org) zawiera narzędzie md5sum.exe
, które powinno robić to, co chcesz.
Używam suma kontrolna narzędzia linii poleceń.
md5
, sha1
, sha256
i sha512
. Użycie:
suma kontrolna [-t=sha1|sha256|sha512|md5] [-c=podpis] [-f=]ścieżka pliku
-?
, --help
, -h
Prints out the options. -f
, --file=VALUE
Filename. -t
, --type
, --hashtype=VALUE
Hashtype Defaults to md5
. -c
, --check=VALUE
Optional: check - podpis, który chcesz sprawdzić. Wielkość liter nie ma znaczenia.
# 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..
Coś w tym stylu: (http://www.nullriver.com/products/winmd5sum). Ten też jest ładny: sendtoMD5 - kliknij prawym przyciskiem myszy, wyślij do…, i dostaniesz wynik.
Nie jest to wbudowane narzędzie, ale bardzo dobra opcja http://checksumcompare.sanktuaire.com
Można porównać sumy kontrolne według plików i/lub podsumowań, jeśli dwa foldery różnią się lub są identyczne.
Możesz użyć MD5sums dla Windows , pobranie tylko 28 KB Cygwin może być overkill jeśli wszystko co chcesz zrobić to obliczyć MD5 hashes).
Najprostszym sposobem użycia jest użycie Explorera do przeciągania i upuszczania plików na md5sums.exe aby uzyskać ich MD5 hashes.
Prawidłową odpowiedzią jest oczywiście, tak, CertUtil (patrz odpowiedź tedr2 ).
Ale dodam darmowy Penteract File Checksum Verifier , który, jak sądzę, jest jednym z najbardziej przyjaznych użytkownikowi programów. (Zastrzeżenie: Jestem związany z Penteractem.)
Niektóre z jego zalet:
Aby zweryfikować integralność tego programu (przeciwko man-in-the-middle attacks ) - pobiera się przez bezpieczne połączenie.
Plus: darmowy, offline (dzięki czemu nie musisz wczytywać swoich plików), przyjazny dla użytkownika (przeciągnij plik i uzyskaj wynik), uruchamia się z menu startowego (nie trzeba szukać pobranego pliku wykonywalnego, jeśli chcesz go używać za rok) oraz obsługuje MD5, SHA1, SHA256, itd.
HashTab 3.0 jest wolnym rozszerzeniem powłoki, które oblicza wiele sum kontrolnych, włączając MD5. Jest ono zintegrowane jako nowa karta we właściwościach plików.
Możesz spróbować msys2, to jest tutaj .
Po prostu wpisz (algorytm)sumę. (algorytm) jest algorytmem hash, który chcesz użyć np. md5, sha1, sha256 …
W przeciwieństwie do Cygwina, to narzędzie jest przenośne, wystarczy pobrać plik .zip i rozpakować w dowolnym miejscu. Możesz go użyć za pomocą prostego kliknięcia(msys2.exe).
Hop to narzędzie pomoże Ci.
Dla rozwiązania, które działa na Windowsie lub w innym środowisku, użyj Pythona.
zainstaluj Pythona – instalator Windows jest dostępny na stronie https://www.python.org/downloads/
pobierz przetestowaną implementację cksum
, np. http://pastebin.com/raw.php?i=cKATyGLb – zapisz jego zawartość do powiedzenia, c:\cksum.py
lub gdziekolwiek uznasz za wygodne
Następnie wykonaj sumę kontrolną:
python c:\cksum.py INPUTFILE
Nie tak szybko jak skompilowane narzędzie, ale kompatybilne z Unixem cksum
i działa w dowolnym miejscu.