00f9ff2815
Changes since 2.0.1:
PDFRip v3.0.0 is a trust/performance/compatibility release focused on
making
pdfrip more correct, measurable, and useful on real password-cracking
workloads.
Highlights
Prepared verifier hot path
* Password attempts no longer rebuild general PDF parsing/storage
state on
every try
* The release extracts the security envelope once, prepares a direct
verifier
once, and reuses it across attempts
* Verified against deterministic qpdf fixtures for Standard Security
Handler
revisions R2 through R6
Better compatibility coverage
The fixture and verifier matrix now covers:
* R2 / R3 / R4 RC4
* R4 AES-128
* R5 / R6 AES-256
* Unicode R5 / R6 passwords
* Blank user passwords
* Object streams and xref streams
* Linearized PDFs
* EncryptMetadata=false
Exact progress and resume
* Progress is now based on verified attempts, not merely queued work
* Historical "100%, ETA 0s, but still running" behavior is fixed
* Checkpoint/resume is now a first-class workflow with exact
verified-prefix
recovery
New and improved search workflows
* New mask mode for bounded structured passwords
* New contains-word mode for "known substring + brute-force the rest"
workflows
* Date --format now supports custom shapes
* Custom-query now supports literal-only queries and fixes bugs
* Numeric ranges are inclusive and sized exactly
* Default-query now enumerates printable ASCII correctly and can test
blank
passwords
Better UX and reporting
* Success output distinguishes user vs owner passwords when revision
allows
it
* Blank passwords render explicitly as ""
* Structured JSON output available with --json
* Malformed inputs return normal user-facing errors instead of panics
* Documentation matches measured reality and current workflows
New opt-in fast mode
* --user-password-only skips owner-password checks for
document-opening
password workflows
* Can reduce end-to-end time on R5/R6 workloads
Measured improvements
Representative local measurements on Apple M3 Pro showed:
* Synthetic R5 prepared verifier: 15.5x lower latency than legacy path
* Large bundled R3 example: 4.5x lower latency
* 10,000-candidate mask exhaustion: 3.4x faster at 4 workers vs 1
worker
* User-password-only speedups: 1.31x-2.77x faster depending on
revision
Build and release hardening
* Exact dependency pinning for sensitive direct crates
* Tracked Cargo.lock with --locked CI/release flows
* CI coverage on Linux/macOS/Windows for stable + nightly
* Cargo install smoke testing
* Benchmark-harness build coverage
* PDF fixtures marked binary-safe across platforms
162 lines
3.4 KiB
Makefile
162 lines
3.4 KiB
Makefile
CARGO_CRATES= adler32-1.2.0 \
|
|
aes-0.8.4 \
|
|
aho-corasick-1.1.4 \
|
|
allocator-api2-0.2.21 \
|
|
anes-0.1.6 \
|
|
anstream-1.0.0 \
|
|
anstyle-1.0.14 \
|
|
anstyle-parse-1.0.0 \
|
|
anstyle-query-1.1.5 \
|
|
anstyle-wincon-3.0.11 \
|
|
anyhow-1.0.102 \
|
|
async-trait-0.1.89 \
|
|
autocfg-1.5.0 \
|
|
bitflags-1.3.2 \
|
|
bitflags-2.11.0 \
|
|
block-buffer-0.10.4 \
|
|
block-padding-0.3.3 \
|
|
block2-0.6.2 \
|
|
bumpalo-3.20.2 \
|
|
bytecount-0.6.9 \
|
|
cast-0.3.0 \
|
|
cbc-0.1.2 \
|
|
cfg-if-1.0.4 \
|
|
cfg_aliases-0.2.1 \
|
|
ciborium-0.2.2 \
|
|
ciborium-io-0.2.2 \
|
|
ciborium-ll-0.2.2 \
|
|
cipher-0.4.4 \
|
|
clap-4.6.0 \
|
|
clap_builder-4.6.0 \
|
|
clap_derive-4.6.0 \
|
|
clap_lex-1.1.0 \
|
|
colorchoice-1.0.5 \
|
|
colored-2.2.0 \
|
|
console-0.15.11 \
|
|
core2-0.4.0 \
|
|
cpufeatures-0.2.17 \
|
|
crc32fast-1.5.0 \
|
|
criterion-0.5.1 \
|
|
criterion-plot-0.5.0 \
|
|
crossbeam-0.8.4 \
|
|
crossbeam-channel-0.5.15 \
|
|
crossbeam-deque-0.8.6 \
|
|
crossbeam-epoch-0.9.18 \
|
|
crossbeam-queue-0.3.12 \
|
|
crossbeam-utils-0.8.21 \
|
|
crunchy-0.2.4 \
|
|
crypto-common-0.1.7 \
|
|
ctrlc-3.5.2 \
|
|
dary_heap-0.3.8 \
|
|
datasize-0.2.15 \
|
|
datasize_derive-0.2.15 \
|
|
deflate-1.0.0 \
|
|
digest-0.10.7 \
|
|
dispatch2-0.3.1 \
|
|
doc-comment-0.3.4 \
|
|
either-1.15.0 \
|
|
encode_unicode-1.0.0 \
|
|
env_logger-0.10.2 \
|
|
equivalent-1.0.2 \
|
|
fax-0.2.6 \
|
|
fax_derive-0.2.0 \
|
|
foldhash-0.2.0 \
|
|
generic-array-0.14.7 \
|
|
globalcache-0.2.4 \
|
|
half-2.7.1 \
|
|
hashbrown-0.16.1 \
|
|
heck-0.4.1 \
|
|
heck-0.5.0 \
|
|
hermit-abi-0.5.2 \
|
|
humantime-2.3.0 \
|
|
indexmap-2.13.0 \
|
|
indicatif-0.17.11 \
|
|
inout-0.1.4 \
|
|
is-terminal-0.4.17 \
|
|
is_terminal_polyfill-1.70.2 \
|
|
istring-0.3.4 \
|
|
itertools-0.10.5 \
|
|
itoa-1.0.17 \
|
|
jpeg-decoder-0.3.2 \
|
|
js-sys-0.3.91 \
|
|
lazy_static-1.5.0 \
|
|
libc-0.2.183 \
|
|
libflate-2.2.1 \
|
|
libflate_lz77-2.2.0 \
|
|
log-0.4.19 \
|
|
md5-0.7.0 \
|
|
memchr-2.8.0 \
|
|
nix-0.31.2 \
|
|
num-traits-0.2.19 \
|
|
number_prefix-0.4.0 \
|
|
objc2-0.6.4 \
|
|
objc2-encode-4.1.0 \
|
|
once_cell-1.21.4 \
|
|
once_cell_polyfill-1.70.2 \
|
|
oorandom-11.1.5 \
|
|
pdf-0.9.0 \
|
|
pdf_derive-0.2.0 \
|
|
plotters-0.3.7 \
|
|
plotters-backend-0.3.7 \
|
|
plotters-svg-0.3.7 \
|
|
portable-atomic-1.13.1 \
|
|
pretty_env_logger-0.5.0 \
|
|
proc-macro2-1.0.106 \
|
|
quote-1.0.45 \
|
|
rayon-1.11.0 \
|
|
rayon-core-1.13.0 \
|
|
regex-1.12.3 \
|
|
regex-automata-0.4.14 \
|
|
regex-syntax-0.8.10 \
|
|
rle-decode-fast-1.0.3 \
|
|
rustversion-1.0.22 \
|
|
same-file-1.0.6 \
|
|
serde-1.0.228 \
|
|
serde_core-1.0.228 \
|
|
serde_derive-1.0.228 \
|
|
serde_json-1.0.149 \
|
|
sha2-0.10.9 \
|
|
snafu-0.7.5 \
|
|
snafu-derive-0.7.5 \
|
|
stringprep-0.1.5 \
|
|
strsim-0.11.1 \
|
|
syn-1.0.109 \
|
|
syn-2.0.117 \
|
|
termcolor-1.4.1 \
|
|
tinytemplate-1.2.1 \
|
|
tinyvec-1.11.0 \
|
|
tinyvec_macros-0.1.1 \
|
|
tuple-0.5.2 \
|
|
typenum-1.19.0 \
|
|
unicode-bidi-0.3.18 \
|
|
unicode-ident-1.0.24 \
|
|
unicode-normalization-0.1.25 \
|
|
unicode-properties-0.1.4 \
|
|
unicode-width-0.2.2 \
|
|
utf8parse-0.2.2 \
|
|
version_check-0.9.5 \
|
|
walkdir-2.5.0 \
|
|
wasm-bindgen-0.2.114 \
|
|
wasm-bindgen-macro-0.2.114 \
|
|
wasm-bindgen-macro-support-0.2.114 \
|
|
wasm-bindgen-shared-0.2.114 \
|
|
web-sys-0.3.91 \
|
|
web-time-1.1.0 \
|
|
weezl-0.1.12 \
|
|
winapi-util-0.1.11 \
|
|
windows-link-0.2.1 \
|
|
windows-sys-0.59.0 \
|
|
windows-sys-0.61.2 \
|
|
windows-targets-0.52.6 \
|
|
windows_aarch64_gnullvm-0.52.6 \
|
|
windows_aarch64_msvc-0.52.6 \
|
|
windows_i686_gnu-0.52.6 \
|
|
windows_i686_gnullvm-0.52.6 \
|
|
windows_i686_msvc-0.52.6 \
|
|
windows_x86_64_gnu-0.52.6 \
|
|
windows_x86_64_gnullvm-0.52.6 \
|
|
windows_x86_64_msvc-0.52.6 \
|
|
zerocopy-0.8.42 \
|
|
zerocopy-derive-0.8.42 \
|
|
zmij-1.0.21
|