#valve #vpk #unpack #fuse #create #archive #extract

app rvpk

一个用于创建、列出、检查和解包Valve VPK文件的工具

1个稳定版本

1.1.0 2023年3月5日

#650 in 文件系统

自定义许可证

170KB
4K SLoC

Rust-VPK

一个用于创建、列出、检查和解包VPK文件的工具。

在Linux下,此工具还可以用作只读FUSE文件系统来挂载VPK包。

这类似于我写的另一个工具,但这次是用Rust而不是C++(为了好玩!)。

限制

由于没有关于如何进行的信息,因此不支持检查和生成加密签名。

我不知道存档MD5校验和条目中的偏移量是否需要调整,就像文件条目的偏移量一样,因为文件嵌入在_dir.vpk文件中的数据需要调整。目前我假设它们不需要。如果错了,我将生成错误的VPK v2包,并在检查VPK v2包时出错,但只有当数据部分中有_dir.vpk文件时(即在索引中直接内联)才会发生这种情况。我没有这样的游戏,所以无法进行检查。

用法

USAGE:
    vpk [SUBCOMMAND]

FLAGS:
    -h, --help
            Prints help information

    -V, --version
            Prints version information


SUBCOMMANDS:
    check     Check CRC32 and MD5 sums of files in a VPK package.
    help      Prints this message or the help of the given subcommand(s)
    list      List content of a VPK package.
    mount     Mount a VPK package as read-only filesystem.
    pack      Create a VPK package.
    stats     Print some statistics of a VPK package.
    unpack    Extract files from a VPK package.

有关子命令的用法信息,请键入vpk help $SUBCOMMAND,例如vpk help list

构建

Linux

cargo build --release

其他操作系统

cargo build --no-default-features --release

交叉编译到Windows

cargo build --target x86_64-pc-windows-gnu --no-default-features --release

需要--no-default-features来防止尝试构建FUSE支持。我不知道如何使默认功能针对特定目标。我认为这还不可能。

待办事项

  • 找出是否需要调整_dir.vpk存档的MD5校验和偏移量,就像文件条目那样。目前我假设它们不需要,但我没有使用VPK v2并在_dir.vpk文件中嵌入任何数据(不在索引中直接内联)的游戏来验证。不知道如何找到。
  • 从VPK v2文件中读取和评估签名?使用的算法是未知的。不知道如何找到。
  • fezpak:打包、解包、列出和挂载FEZ .pak存档
  • psypkg:打包、解包、列出和挂载Psychonauts .pkg存档
  • bgebf:解包、列出和挂载《超越善恶》.bf存档
  • unvpk:提取、列出、检查和挂载Valve .vpk存档(此项目的C++版本)
  • u4pak:列出、检查、解包、打包和挂载虚幻引擎4存档(Python编写)
  • rust-u4pak:列出、检查、解包、打包和挂载虚幻引擎4存档(Rust编写)
  • t2fbq:解包、列出和挂载《三位一体2》.fbq存档

GPLv3许可证

rust-vpk 是免费软件:您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,许可证版本为3,或(根据您的选择)许可证的任何后续版本。

rust-vpk的发布是希望它将被证明是有用的,但没有任何保证;甚至没有关于适销性或特定用途适用性的暗示性保证。有关详细信息,请参阅GNU通用公共许可证。

您应该已经随 rust-vpk 收到了GNU通用公共许可证的一个副本。如果没有,请参阅https://www.gnu.org/licenses/

依赖项

~1MB
~10K SLoC