2016-04-12 22:01:18 +02:00
2016-04-12 20:55:22 +02:00
2016-04-12 20:55:22 +02:00
2016-04-12 22:01:18 +02:00
2016-04-12 20:55:22 +02:00
2016-04-12 20:55:22 +02:00
2016-04-12 20:55:22 +02:00
2016-04-12 20:55:22 +02:00
2016-04-12 20:55:22 +02:00

Bitsliced Crypto-1 brute-forcer

A pure C(99) implementation of the Crypto-1 cipher using the method of bitslicing, which uses GNU vector extensions to be portable across SSE/AVX/AVX2 supporting architectures while offering the highest amount of possible parallelism.

Background

I wrote this as a patch for piwi's imlementation of the research documented in Ciphertext-only cryptanalysis on hardened Mifare Classic cards after reading (most of) the paper, while it was still under active development. The final patch is included as pwpiwi_proxmark3_hard_nested.patch.

Later on, another implementation of the same attack surfaced, CraptEV1. I managed to gather some great tricks from that code, which unfortunately is off-line now (and has a license forbidding redistribution). This also allowed me to compare my Crypto-1 implementation to a finished brute-forcer, and eventually I managed to significantly beat CraptEV1's (great) performance.

Tools

If you want to use the following stand-alone binaries, you will need the original CraptEV1 / Crapto1 source packages. For convenience, and because redistribution of CraptEV1 is not allowed, I've added make targets get_craptev1 and get_crapto1 to fetch and extract these packages to the current working directory. I have included a conversion of the test file 0xcafec0de.txt included in the CraptEV1 package to the binary format used by the proxmark3/hard_nested branch.

solve_bs is analogous to CraptEV1 solve and works on .txt files using the bitsliced crypto-1 cracker

$ ./solve_bs craptev1-v1.0/0xcafec0de.txt 0xcafec0de

solve_piwi uses CraptEV1 on .bin files as gathered by piwi's PM3 code

$ ./solve_piwi 0xcafec0de.bin

solve_piwi_bs does the same but uses the bitsliced cracker

$ ./solve_piwi_bs 0xcafec0de.bin

Acknowledgements

Special thanks to Carlo Meijer, Roel Verdult, piwi and bla.

Description
No description provided
Readme 282 KiB
Languages
C 96.8%
Python 2.4%
Makefile 0.8%