Files
DRMLibre/Cargo.toml
T
JMR-devandClaude Opus 4.8 409473b8f3 Initial release: ADEPT EPUB and Kindle MOBI DRM removal (phases 0-2)
DRMLibre is a standalone, single-binary Rust CLI that removes DRM from
Amazon Kindle and Adobe Digital Editions ebooks. The decryption logic is
ported from DeDRM_tools (GPLv3); this project is GPL-3.0-or-later.

This commit covers the first three milestones of the plan:

* Phase 0 - workspace scaffold (drmlibre-core engine + drmlibre-cli),
  native TOML config, magic-byte/zip-content format detection, and the
  remove/passhash/config CLI surface with atomic output handling.
* Phase 1 - Adobe ADEPT EPUB: RSA (PKCS#1 v1.5) and PassHash book-key
  unwrap, RMSDK>=10 hardening, AES-128-CBC content decryption, and IETF/
  Adobe font de-obfuscation. Verified end-to-end with a real RSA key.
* Phase 2 - Kindle MOBI/AZW/AZW3: PC1 cipher, type-1 and type-2 DRM,
  serial->PID derivation, EXTH header patches, and trailing-data handling.
  Verified end-to-end and against the upstream golden vectors.

All crypto is pure Rust (RustCrypto), so the release binary has no
third-party runtime dependencies. 42 tests pass; clippy and rustfmt clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 18:38:03 -05:00

54 lines
1.2 KiB
TOML

[workspace]
resolver = "2"
members = ["crates/drmlibre-core", "crates/drmlibre-cli"]
[workspace.package]
version = "0.1.0"
edition = "2021"
rust-version = "1.96"
license = "GPL-3.0-or-later"
repository = "https://github.com/JMR-dev/DRMLibre"
authors = ["Jason Ross"]
# Derivative-work note: the DRM-removal algorithms are ported from DeDRM_tools
# (GPLv3). This project is therefore GPL-3.0-or-later. Upstream credit is kept
# in the relevant module headers.
[workspace.dependencies]
drmlibre-core = { path = "crates/drmlibre-core" }
# Errors / logging
thiserror = "2"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Crypto (RustCrypto — pure Rust, statically linked)
rsa = "0.9"
aes = "0.8"
cbc = "0.1"
ctr = "0.9"
sha1 = "0.10"
sha2 = "0.10"
md-5 = "0.10"
hmac = "0.12"
pbkdf2 = { version = "0.12", default-features = false }
# Config / serialization
serde = { version = "1", features = ["derive"] }
toml = "0.8"
# Containers / encoding
zip = { version = "2", default-features = false, features = ["deflate"] }
flate2 = "1"
quick-xml = "0.37"
base64 = "0.22"
hex = "0.4"
# CLI
clap = { version = "4", features = ["derive"] }
[profile.release]
lto = true
strip = true
codegen-units = 1