公告:本站正在遭受网络攻击,访问速度可能严重下降甚至无法访问。

如何获取和解包Repair Content Package

来自BetaWorld 百科
跳转到导航 跳转到搜索

Repair Content Package是用于自动扫描和修复系统文件的文件包,由于其包含较为完整的二进制内容,因此可以一定程度上“组装”出完整的系统。在本站,Repair Content Package中包含的SKU计算在已泄露/可用的SKU列表中。用这种方式制作出的镜像属于非原版,请尽量不要传播。

获取Repair Content Package

EFUE下载链接:https://ftp.betawiki.net/EFUE.zip

EFUE是BetaWiki制作的某一时刻的Windows Update服务器补丁链接合集。可以通过搜索的方式在其中找到绝大部分Windows Update服务器现存的补丁和驱动包等文件,其中包括本文的Repair Content Package。建议将EFUE经过脚本处理后生成SQL数据库方便查询。

解包Repair Content Package

在下载Repair Content Package后,会发现每个PSF都有对应CAB包,例如kb777777-amd64-neutral-termsrv_eea805141c65e4c8b20cc379dc9f104f91466aa1.cabkb777777-amd64-neutral-termsrv_86426a95856ebfe6175606ae93d2b80d352596fc.psfPSF文件全称Patch Storage File,是用于存储补丁包的补丁文件部分的;对应的CAB文件中存储了补丁的描述文件[1]

解包Repair Content Package需要使用的工具是PSFExtractor

这里准备一个重命名和解包脚本:

重命名和解包脚本

@echo off
setlocal enabledelayedexpansion
pushd %~dp0

rem 清理文件名
for %%i in (*.cab) do (
    set name=%%~ni
    ren %%i !name:~0,-41!.cab
)
for %%i in (*.psf) do (
    set name=%%~ni
    ren %%i !name:~0,-41!.psf
)

rem 解压cab包
for %%i in (*.cab) do (
    echo 正在解压%%i
    expand.exe %%i -F:%%~ni.psf.cix.xml "%~dp0\"
    echo.
)

rem 提取psf文件
md sxs
for %%i in (*.psf) do (
    echo 正在提取%%i
    PSFExtractor.exe -v2 %%i %%i.cix.xml "%~dp0\sxs"
    echo.
)

popd
exit

保存时注意bat的编码应为ANSI,换行符应为CRLF

此脚本的内容为:

  • 此脚本首先将Repair Content Package文件名中的SHA1部分截断,方便后续处理。
  • 将每个PSF文件对应的CAB文件中包含的XML描述文件提取出来。
  • 使用PSFExtractor对PSF文件进行分割和解压,并保存到sxs目录中。

在运行此脚本前,有一点需要特别注意。由于Repair Content Package的特性,某些PSF中的文件会存在冲突,而冲突的文件中有的文件存在异常截断情况(也可能是有其他目的),因此,需要先单独将文件名中含有neutral-mergedcomponentsPSF文件解包,再解包其他PSF

此外,Repair Content Package中的部分语言相关安全目录文件也存在截断现象,由于这些版本都提供了独立的语言包CAB文件,可以使用独立语言包版本替代。

PSF文件、对应的CAB文件、上述批处理脚本以及PSFExtractor工具放在同一个目录,然后运行脚本即可自动解包。首先把neutral-mergedcomponents单独解包,解包后删掉PSFCAB,再把其他文件解包。如果不按照此顺序,某些组件会被替换为不完整的版本,导致后续安装失败。

本文只是无数可行方法中的一个,仅供参考。

参考资料