我必须经常更新离线 Windows 系统。
因此,我在 Windows 网站上下载更新文件 (KB) 并在系统上运行该文件。
我想知道是否有推荐的方法来检查 Windows 更新文件 (kb) 的完整性。我的目的是确保该文件是正确的,并且在应用它之前没有以某种方式进行过修改。
所以我需要像官方 MD5 签名这样的东西作为参考值来与下载文件的签名进行比较,但我找不到这样的东西。
use*_*686 14
所有 Windows 更新文件(.exe、.msi、.msu、.cab)都使用 Authenticode 进行签名——数据散列和数字签名被嵌入到文件中,以便 Windows 可以自行验证。
通过 PowerShell:
Get-AuthenticodeSignature foo.cab | Format-List
Run Code Online (Sandbox Code Playgroud)
通过 Cmd(仅当您安装了Windows 10 SDK):
signtool verify /v /pa foo.msi
Run Code Online (Sandbox Code Playgroud)
通过图形用户界面:
在所有三种情况下,请确保签名有效并且来自“Microsoft 代码签名 PCA”(链接到 Microsoft 根证书颁发机构)。
请注意,MD5 或 SHA1 哈希本身不是签名。签名是由散列和密钥(例如 Authenticode 签名证书)的组合创建的。
小智 5
如果您通过 Microsoft 更新目录下载了更新文件:
您将在其文件名中看到 MSU 包的 SHA1:
以蓝色突出显示的字符串是其 SHA-1(安全哈希算法-1)值,其长度始终为 40 个字符,如果文件内容被修改,该值将更改。
可以用这个方法来检查文件是否真实,可以用PowerShell来做;
首先,打开 PowerShell:
Win+ R>>类型PowerShell
>> Ctrl+ Shift+Enter
然后你需要你的文件的完整路径和文件名,在这个例子中,文件被下载到默认的下载文件夹,也就是C:\Users\USERNAME\Downloads
文件夹,在PowerShell中你可以使用这个变量:$home
代表C:\Users\Username
(你的用户配置文件)文件夹。
您可以使用Get-Filehash
cmdlet 获取文件的哈希值,并使用-eq
运算符将其与文件名中的哈希值进行检查,如果结果是,true
则该文件是好的。如果它返回,false
则文件已损坏。
我会给你这个例子来更好地描述该方法:
(get-filehash -path "$home\downloads\windows10.0-kb4592438-x86_95758bd6e2c3a4a98a19efaa4056213531f84f5c.msu" -algorithm SHA1).hash -eq "windows10.0-kb4592438-x86_95758bd6e2c3a4a98a19efaa4056213531f84f5c.msu".split("_")[1].substring(0,40)
Run Code Online (Sandbox Code Playgroud)
它返回true
,意味着我的文件没有损坏。
使用时只需将文件名和文件路径替换成你要检查的文件的真实名称和路径即可。然后你就可以走了。
归档时间: |
|
查看次数: |
1514 次 |
最近记录: |