wpa2slow is a full Python implementation of the WPA2 encryption algorithm, using no encryption libraries.

Project goals

This project grew out of my FPGA implementation of WPA2, as a platform for regression testing and experimentation.

WPA2 requires three or four different algorithms to calculate a final password, depending on how you count them.

There is a fair amount of discussion on these functions in this category of my site.

The entire goal was to have intermediate steps of the algorithms to compare with the VHDL implementation. Perhaps this will be useful to someone else.


Hash speed of my general purpose computer; 2,000 keys / second

Hash speed of a Raspberry Pi 1: 45 keys / second

Hash speed of this project: 0.25 keys / second

Sounds great! How can I get started?

See the Installation docs first for initial setup.

Usage docs give you a few examples, and references for more information.

For developers, or people looking to expand their brains, read about how WPA2 works in the Structure docs.