Eu tenho que atualizar frequentemente os sistemas Windows offline.
Então eu baixo o arquivo de atualização (KB) no site do Windows e executo o arquivo nos sistemas.
Gostaria de saber se existe uma maneira recomendada de verificar a integridade de um arquivo de atualização do Windows (kb). Meu objetivo é ter certeza de que o arquivo está correto e não foi modificado de uma forma ou de outra antes de aplicá-lo.
Então eu preciso de algo como uma assinatura MD5 oficial como valor de referência para comparar com a assinatura do arquivo baixado, mas não consigo encontrar nada parecido.
Todos os arquivos do Windows Update (.exe, .msi, .msu, .cab) são assinados usando Authenticode – o hash de dados junto com uma assinatura digital é incorporado ao arquivo para que o Windows possa verificá-lo por conta própria.
Através do PowerShell:
Através do Cmd (somente se você tiver o SDK do Windows 10 instalado):
Através da GUI:
Em todos os três casos, certifique-se de que a assinatura é válida e vem do "Microsoft Code Signing PCA" (encadeando para a Autoridade de Certificação Raiz da Microsoft).
Observe que os hashes MD5 ou SHA1 por si só não são assinaturas. Uma assinatura é criada pela combinação de um hash e uma chave secreta (como o certificado de assinatura Authenticode).
Se você baixou os arquivos de atualização por meio do Catálogo do Microsoft Update:
Você verá SHA1 do pacote MSU presente em seu nome de arquivo:
A string destacada em azul é seu valor SHA-1 ( Secure Hash Algorithm-1 ), que sempre tem 40 caracteres, esse valor será alterado se o conteúdo do arquivo for modificado.
Você pode usar este método para verificar se o arquivo é autêntico, você pode usar o PowerShell para fazer isso;
Primeiro, para abrir o PowerShell:
Win+ R>>tipo
PowerShell
>> Ctrl+ Shift+EnterEntão você precisa do caminho completo do seu arquivo e nome do arquivo, neste exemplo, o arquivo é baixado para a pasta de downloads padrão, que é a
C:\Users\USERNAME\Downloads
pasta, no PowerShell você pode usar esta variável:$home
para representarC:\Users\Username
a pasta (seu perfil de usuário).Você pode usar
Get-Filehash
o cmdlet para obter o hash do arquivo e verificá-lo em relação ao hash em seu nome de arquivo usando-eq
o operador, se o resultado fortrue
o arquivo é bom. Se retornarfalse
, o arquivo está corrompido.Vou dar-lhe este exemplo para descrever melhor o método:
Ele retorna
true
, significa que meu arquivo não está corrompido.Ao usá-lo, basta substituir o nome do arquivo e o caminho do arquivo pelo nome real e o caminho do arquivo que deseja verificar. E então você está pronto para ir.
A resposta de Суомынона está correta, só quero acrescentar que você pode envolver o código em uma função:
Cole a função em uma sessão de trabalho do PowerShell e, em seguida, você pode verificar a integridade de um arquivo de atualização chamando a função, por exemplo:
Se estiver tudo certo, ele retornará:
Espero que minha resposta te ajude; Cumprimentos.