Existe um utilitário de checksum integrado no Windows 7?
Existe um utilitário de checksum/hash integrado no Windows 7?
CertUtil é um utilitário Windows pré-instalado que pode ser utilizado para gerar checksums de hash:
certUtil -hashfile pathToFileToCheck [HashAlgorithm]
HashAlgorithm choices: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
Assim, por exemplo, o seguinte gera um checksum MD5 para o ficheiro C:\TEMP\MyDataFile.img
:
CertUtil -hashfile C:\TEMP\MyDataFile.img MD5
Para obter resultados semelhantes aos sistemas *Nix, pode adicionar alguma magia PowerShell:
$(CertUtil -hashfile C:\TEMP\MyDataFile.img MD5)[1] -replace " ",""
Existe um utilitário integrado, como especificado em esta outra resposta .
Pode, no entanto, desejar utilizar esta aplicação gratuita chamada HashTab que se integra perfeitamente com o Windows Explorer, registando um… bem, um separador no diálogo de propriedades dos ficheiros. É bastante doce.
Estou a utilizar HashCheck última versão ) que se integra como uma página de propriedade para ficheiros e inclui um menu de contexto para comparar com ficheiros de hash check (SFV).
É gratuito e a fonte está disponível.
Existe o utilitário FCIV da Microsoft, o Microsoft File Checksum Integrity Verifier download link ).
A ferramenta File Checksum Integrity Verifier da Microsoft é um utilitário de linha de comando não suportado que computa hashes criptográficos MD5 ou SHA1 para ficheiros.
Não mostra o Windows 7 nos requisitos do sistema mas acabei de o usar no Windows 8 e funcionou.
PowerShell versão 4 e superior inclui o Get-FileHash cmdlet.
powershell get-filehash -algorithm md5 <file_to_check>
Use doskey para fazer um alias persistente que seja mais fácil de lembrar.
doskey sha1sum=powershell get-filehash -algorithm sha1 "$1"
doskey md5sum=powershell get-filehash -algorithm md5 "$1"
Aqui está um que já usei antes que se integra bem com o diálogo “Propriedades” do Explorer: Propriedades de Verão . É fonte aberta , e uma versão x64 também está disponível.
Eu também gosto do FileAlyzer do Safer Networking, que também oferece funcionalidades adicionais. Mas só para checksums, o Summer Properties é leve e faz o trabalho.
Encontrei este 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
}
}
}
}
Fonte: Cálculo do SHA1 na PowerShell
Alavanca .NET que presumo que tenha instalado
Estou a adicionar isto aqui apenas porque não vi nenhum exemplo de powershell totalmente funcional, pronto para copiar-colar:
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:\>
A saída do certutil
parece ter mudado desde o Windows 8, por isso o meu antigo filtro para isolar o hash já não funciona. Os espaços estranhos também desapareceram - uma coisa a menos com que se preocupar quando se escreve scripts. Aqui está a nova demonstração de copy-paste-able:
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:\>
Para tornar isto mais resistente contra quebras de mais uma futura mudança no certutil
, devemos procurar linhas com caracteres não hexadecimais para filtrar: [^0-9a-zA-Z]
. Isso também deve torná-lo mais seguro para outros locais e línguas.
C:\>CertUtil -hashfile "C:\windows\fonts\arial.ttf" | findstr -vrc:"[^0123-9aAb-Cd-EfF]"
12c542ef8c99cf3895ad069d31843a5210857fdc
Porque é que o actual anti-hex regex é tão estranho? Veja esta pergunta para saber como os intervalos regex em findstr
não funcionam como deveriam. Incluí um carácter de espaço extra para compatibilidade com versões anteriores do certutil
, mas é opcional.
Note que o padrão do powerhell Get-FileHash
é SHA256, enquanto que o certutil
ainda tem o padrão SHA1. Por isso, especifique o seu algoritmo explicitamente quando necessário. Pode verificar rapidamente as opções disponíveis desta forma:
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 _. Pode calcular MD5 e SHA-1 valores de hash.
Download, extrair os ficheiros, depois abrir um prompt de comando, ir para o caminho extraído e depois digitar o seguinte comando:
fciv -md5 filepath\filename.extension
Por exemplo:
fciv -md5 d:\programs\setup.exe
Infelizmente, não que eu saiba, mas a suite Sysinternals da Microsoft inclui uma boa ferramenta chamada * sigcheck ***.
Um ficheiro de lote baseado no comentário do pbarney à resposta com mais votos: Isto copia o hash MD5 de qualquer ficheiro arrastado para o ficheiro de lote para a área de transferência:
@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
Para fazer dele um item de menu de contexto:
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\""
Este é apenas um script de shell cmd que usa tedr2’s answer mas retira as linhas e espaços de saída estranhos:
:: 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
A saída pode ser redireccionada para um ficheiro se necessário:
@echo %str% > %3
e.g.
sys> \dev\cmd\hash.cmd MyApp.dll SHA1
8ae6ac1e90ccee52cee5c8bf5c2445d6a92c0d4f
O Menu Contexto MD5 faz exactamente isto. Adiciona uma opção * MD5 *** ao menu de contexto de ficheiros:
MD5 Context Menu é uma extensão de shell freeware para Windows que mostra a soma hash MD5 do ficheiro seleccionado.
Diz ser compatível com Windows 95, 98, ME, NT, 2000, e XP, embora funcione perfeitamente no Windows 7. É um pequeno download (238 KB) e inclui tudo o que você precisa.
O Cygwin contém um utilitário md5sum.exe
que deve fazer o que você quer.
Uso checksum utilitário de linha de comando.
md5
, sha1
, sha256
e sha512
. Utilização:
checksum [-t=sha1|sha256|sha512|md5] [-c=signature] [-f=]filepath
-?
, --help
, -h
Imprime as opções. -f
, --file=VALUE
Nome do ficheiro. -t
, --type
, --hashtype=VALUE
, md5
Hashtype Defaults to -c
. --check=VALUE
, &007
Opcional: verifique - a assinatura que pretende verificar. Não sensível a maiúsculas e minúsculas. # 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..
Esta não é uma utilidade integrada, mas é uma opção muito boa http://checksumcompare.sanktuaire.com
Pode comparar soma de verificação por ficheiro e/ou resumos se duas pastas diferirem ou forem idênticas.
Você pode usar MD5sums para Windows , um download de apenas 28 KB Cygwin pode ser exagerado se tudo que você quiser fazer é computar hashes MD5).
A maneira mais fácil de usar é usar o Explorer para arrastar e soltar arquivos no md5sums.exe para obter seus hashes MD5.
A resposta correcta é, claro, sim, CertUtil (ver resposta de tedr2 ).
Mas vou acrescentar o File Checksum Verifier gratuito da Penteract que, penso eu, é um dos programas mais fáceis de utilizar. (Aviso: Sou afiliado da Penteract.)
Algumas das suas vantagens:
Para verificar a integridade deste programa (contra man-in-the-middle attacks ) - faz o download através de uma ligação segura.
Plus: gratuito, offline (para que não tenha de carregar os seus ficheiros), de fácil utilização (arraste um ficheiro e obtenha o resultado), lança a partir do menu inicial (não necessita de procurar o executável descarregado quando o quiser utilizar daqui a um ano), e suporta MD5, SHA1, SHA256, etc.
O HashTab 3.0 é uma extensão livre que calcula muitos checksums, incluindo o MD5. Está integrado como um novo separador nas Propriedades do Ficheiro.
Você pode tentar msys2, é aqui .
Basta digitar (algoritmo)soma. (algoritmo) é o algoritmo hash que você quer usar, por exemplo, md5, sha1, sha256 …
Ao contrário do Cygwin, esta ferramenta é portátil, você só precisa fazer o download do arquivo .zip e extrair em qualquer lugar que você quiser. Pode utilizá-lo com um simples clique(msys2.exe).
Hop esta ferramenta irá ajudá-lo.
Bem, eu fiz um programa para calcular alguns hashes a partir de um arquivo. Espero que isso o ajude.
O que é que isto faz? Calcula o SHA-1 hash, SHA-384 hash, MD5 hash e SHA-256 hash. Bem, é mais ou menos isso :)
Para uma solução que funcione no Windows ou em qualquer outro ambiente, use Python.
instale o Python – um instalador Windows é fornecido em https://www.python.org/downloads/
faça o download de uma implementação testada do cksum
, por exemplo http://pastebin.com/raw.php?i=cKATyGLb – salve o conteúdo deste para dizer, c:\cksum.py
ou onde achar conveniente
Então para executar um checksum:
python c:\cksum.py INPUTFILE
Não tão rápido como um utilitário compilado, mas compatível com Unix cksum
e roda em qualquer lugar.