/pdfrip

A multi-threaded PDF password cracking utility equipped with commonly encountered password format builders and dictionary attacks.

Primary LanguageRustMIT LicenseMIT

PDFRip

A multi-threaded PDF password cracking utility equipped with commonly encountered password format builders and dictionary attacks.

📖 Table of Contents

ℹ️ Introduction

pdfrip is a fast multithreaded PDF password cracking utility written in Rust with support for wordlist based dictionary attacks, date and number range bruteforcing, and a custom query builder for password formats.

Features

  • Fast: Performs about 50k-100k+ passwords per second utilising full CPU cores.
  • Custom Query Builder: You can write your own queries like STRING{69-420} with the -q option which would generate a wordlist with the full number range.
  • Date Bruteforce: You can pass in an year as the input with the -d option which would bruteforce all 365 days of the year in DDMMYYYY format which is a pretty commonly used password format for PDFs.
  • Number Bruteforce: Just give a number range like 5000-100000 with the -n option and it would bruteforce with the whole range.

Installation

$ curl -L https://github.com/mufeedvh/pdfrip/releases/download/v1.0.0/pdfrip_amd64 -o pdfrip

(Linux AMD x86-64)

OR

Download the executable from Releases for your OS.

OR

Install with cargo:

$ cargo install --git https://github.com/mufeedvh/pdfrip.git

Install Rust/Cargo

Build From Source

Prerequisites:

  • Git
  • Rust
  • Cargo (Automatically installed when installing Rust)
  • A C linker (Only for Linux, generally comes pre-installed)
$ git clone https://github.com/mufeedvh/pdfrip.git
$ cd pdfrip/
$ cargo build --release

The first command clones this repository into your local machine and the last two commands enters the directory and builds the source in release mode.

Usage

Get a list of all the arguments:

$ pdfrip --help

Start a dictionary attack with a wordlist (-w/--wordlist):

$ pdfrip encrypted.pdf -w rockyou.txt

Bruteforce number ranges for the password (-n/--num-bruteforce):

$ pdfrip encrypted.pdf -n 1000-9999

Bruteforce all dates in a year for the password in DDMMYYYY format (-d/--date-bruteforce):

$ pdfrip encrypted.pdf -d 1999

Build a custom query to generate a wordlist (-q/--custom-query): (useful when you know the password format)

$ pdfrip encrypted.pdf -q ALICE{1000-9999}

$ pdfrip encrypted.pdf -q DOC-ID{0-99}-FILE

Enable preceding zeros for custom queries (-z/--add-preceding-zeros): (which would make {10-5000} to {0010-5000} matching the end range's digits)

$ pdfrip encrypted.pdf -q ALICE{10-9999} --add-preceding-zeros

Contribution

Ways to contribute:

  • Suggest a feature
  • Report a bug
  • Fix something and open a pull request
  • Help me document the code
  • Spread the word

License

Licensed under the MIT License, see LICENSE for more information.