Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wonder93/pbkdf2-gpu
A C++11 library for brute-forcing PBKDF2 using GPU and a tool for brute-forcing LUKS passwords.
https://github.com/wonder93/pbkdf2-gpu
Last synced: 11 days ago
JSON representation
A C++11 library for brute-forcing PBKDF2 using GPU and a tool for brute-forcing LUKS passwords.
- Host: GitHub
- URL: https://github.com/wonder93/pbkdf2-gpu
- Owner: WOnder93
- License: gpl-2.0
- Created: 2015-03-01T11:34:14.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2016-05-13T16:23:37.000Z (over 8 years ago)
- Last Synced: 2023-05-28T08:05:12.572Z (over 1 year ago)
- Language: C++
- Homepage:
- Size: 4.23 MB
- Stars: 19
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PBKDF2 bulk computation utilities
A C++11 library for brute-forcing PBKDF2 using (not only) massive parallel processing on GPU hardware and a tool for brute-forcing LUKS passwords.This project is part of my [bachelor's thesis](https://is.muni.cz/th/409879/fi_b/?lang=en) on the [Faculty of Informatics, Masaryk University](https://www.fi.muni.cz).
## Building
### Prerequisites
* The [OpenSSL](https://www.openssl.org/)/[LibreSSL](http://www.libressl.org/) `crypto` library. Note: LibreSSL is significantly faster for PBKDF2 computation on the CPU.
* An [OpenCL](https://www.khronos.org/opencl/) library version 1.1 or higher (you should have `libOpenCL.so` or `libOpenCL.so.1` somewhere in your library search path).### Using GNU autotools
```bash
$ autoreconf -i
$ mkdir build && cd build
$ ../configure --disable-shared && make
```### Using qmake
The project also ships with qmake project files so you can build it using [qmake](http://doc.qt.io/qt-4.8/qmake-manual.html) or open it in the [QtCreator IDE](http://wiki.qt.io/Category:Tools::QtCreator) (just load the `pbkdf2-gpu.pro` file).
Building from terminal using qmake:
```bash
$ mkdir build-qmake && cd build-qmake
$ qmake ../pbkdf2-gpu.pro && make
```## Subprojects
* **libhashspec-openssl** – A utility library to lookup an OpenSSL hash algorithm (a pointer to `EVP_MD` structure) from a LUKS hashspec string (see the [LUKS On-Disk Format Specification](https://gitlab.com/cryptsetup/cryptsetup/wikis/LUKS-standard/on-disk-format.pdf) for more information).
* **libhashspec-hashalgorithm** – A utility library to lookup a hash algorithm implementation based on a LUKS hashspec string (see above).
* **libcipherspec-cipheralgorithm** – A utility library to lookup a cipher algorithm implementation based on LUKS cipherspec and ciphermode strings (see above).
* **libivmode** – A utility library to lookup an IV generator implementation based on a LUKS ivmode string (see above).
* **libpbkdf2-compute-cpu** – A reference implementation of the libpbkdf2-compute interface (see below) performing computation on the CPU.
* **libpbkdf2-compute-opencl** – An implementation of the libpbkdf2-compute interface (see below) performing computation on one or more OpenCL devices.
* **libcommandline** – A simple command-line argument parser.
* **pbkdf2-compute-tests** – A utility that runs tests (currently only checks computation of RFC test vectors) on the libpbkdf2-compute-\* libraries.
* **benchmarking-tool** – A command-line tool for benchmarking the performance of the libpbkdf2-compute-\* libraries.
* **lukscrack-gpu** – A command-line tool for cracking passwords of LUKS disk partitions.## Supported algorithms
### Hash functions
All hash functions specified in the [LUKS On-Disk Format Specification](https://gitlab.com/cryptsetup/cryptsetup/wikis/LUKS-standard/on-disk-format.pdf) are supported:
* SHA-1 (`sha1`)
* SHA-256 (`sha256`)
* SHA-512 (`sha512`)
* RIPEMD-160 (`ripemd160`)### Cipher algorithms and modes
* AES-128 (`aes`) -- ECB, CBC, XTS
* AES-192 (`aes`) -- ECB, CBC, XTS
* AES-256 (`aes`) -- ECB, CBC, XTS
* CAST-128 (`cast5`) -- ECB, CBCTwoFish (`twofish`), Serpent (`serpent`) and CAST-256 (`cast6`) are not supported.
### IV generators
* (none) - if IV mode is not specified (only for ECB mode)
* `null`
* `plain`
* `plain64`
* `essiv:` where `` is one of the hash functions listed above.## The common interface of libpbkdf2-compute-\* libraries
TODO