Katsuba

Latest version: v0.1.1

Safety actively analyzes 623860 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

0.8.1

This release contains stability improvements and fixes a regression in how WAD files are treated.

CLI

* The `-c` flag was removed from `wad unpack` since the checks are now mandatory.
* The performance impact from this is marginal thanks to SIMD-optimized CRC calculation.

Executor

* Fixes OOM errors and overall slowness in batch-deserializing ObjectProperty state.
* This issue was introduced with the switch to multi-threaded processing and is resolved now.

WAD

* `File`s are now marked with a new `is_unpatched` attribute which is detected during CRC verification.

As always, a Windows build is attached below. Enjoy!

0.8

This release combines months of work on improving existing components and adding requested features.

General

- The project has been renamed to `katsuba`.
- The Python bindings are now available as `katsuba` on PyPI for all relevant x86, x86_64 and AArch64 platforms.
- All crates now return proper error types instead of `anyhow::Result`.

Flake

- `nix build .katsuba-py` can now be used to build the Python bindings.

CLI

- A threadpool is now used for heavy I/O tasks. Performance gain has been measured on all tested platforms.
- The environment variable `KATSUBA_WORKER_THREADS` can be used to tweak the amount of threads in the pool.
- **WARNING:** More is not better and unless you know what you are doing just stick to the default configuration.
- Various subcommands now support logging at different verbosities using the `-v` option.
- Most commands now support glob patterns to process many input files at once.
- Reading input from stdin is now supported by using `-` in place of an input file path.
- A compact JSON representation will be emitted when `katsuba` output is piped into another application.

ClientSig

- A new crate `katsuba-client-sig` was introduced.
- Support for reading and dumping `ClientSig.bin` files from the game was added.
- This requires KingsIsle's private key which must be provided by the user.
- Appropriate CLI commands were added.

BCD

- Parsing errors were fixed.
- Structure was changed to match the actual file representation closer.

Python

- WAD archives now allow direct deserialization of ObjectProperty values without copying file contents between Rust and Python.
- ObjectProperty lists and objects now resolve their values lazily on access instead of converting the full object to a Python dict
immediately after deserialization.
- All the compound leaf types like `Euler`, `Quaternion`, `Color` now have a Pythonic object representation and can be told apart
from each other when encountered.
- This has been possible before too but it required knowledge of the deserialized class layout since all these compounds were
represented as tuples.
- `from katsuba.module import X` imports now work without raising an exception.
- The common KingsIsle hash functions from `katsuba-utils` are now accessible from Python.
- Support for NAV, POI, BCD has been preliminarily removed until we build a better object representation for them.
- Demand for those has never been high so I don't think they will be missed at the time being.

POI

- Parsing errors were fixed.
- Structure was changed to match the actual file representation closer.

Types

- Support for [wiztype](https://github.com/wizspoil/wiztype) JSONs in all formats was added.
- Katsuba automatically detects which one you supply.

ObjectProperty

- Support for `CoreObject` deserialization has been removed because it is too inconsistent and gets outdated.
- Users are encouraged to deserialize via library usage if this functionality is needed.
- `Value` has been shrunk to a size of 32 bytes.
- `Value::Object` now provides the type hash of the object so library users have access to this info.
- One reusable `Serializer` instance now provides all functionality.
- Support for guessing configuration based on an object's data was added.
- This does not reliably detect every case but it's a good enough starting point for reversing unknown objects.
- An appropriate CLI command has been added.

WAD

- Archives now report their UNIX file permissions, if available.
- The extractor uses this info to create files with the same permissions as the archive they originate from.
- `GlobIter` has been added to iterate over a subset of an archive's files given a glob pattern.

As always, a Windows build is attached below. Enjoy!

0.7.1

This release of Kobold mainly consists of bugfixes and UX improvements:

ObjectProperty

- Fixes deserialization of enums that do not have any of the typical enum flag bits set
- Correctly reads the delta encode bit only in shallow mode
- Forbid skipping objects in shallow serialization mode (which doesn't make much sense anyway)

WAD

- Adds support for UNIX glob patterns as file paths to unpack, i.e. `Data/GameData/*.wad`
- Allows multiple paths at once to be passed to the `unpack` command
- Properly ignores unpatched (all zeroes) files during unpacking

A Windows build is attached below. Enjoy!

0.6.0

This release of Kobold features features a better strategy for handling ignored types (`-i` flag) than the previous release.

A Windows build is attached below. Enjoy!

0.5.0

This release of Kobold features a lot of changes:

Wad

- Fixes archive header deserialization
- Renders a progress bar (so users don't think it's stuck for big archives)

ObjectProperty

- `DeserializerOptions::skip_unknown_types` field to ignore types with unknown hashes
- Fixes deserialization of negative `enum_options` integer values in the type list jsons
- Various bug fixes to overall ObjectProperty deserialization logic

CLI

- Adds `bind` as a designated deserialization mode which configures correct `DeserializerOptions` for convenience
- `-i` flag for complementing the support for skipping unknown types

Python bindings

- Define serializer flags integer constants

A Windows build is attached below. Enjoy!

0.2.0

This release of the CLI improves the JSON representation of `std::string` and `std::wstring` when deserializing ObjectProperty state.

A Windows build is attached below.

Page 1 of 2

Links

Releases

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.