Encrypt and Decrypt 802.11 on-the-fly
Switch branches/tags
Nothing to show
Clone or download
Latest commit d00afc7 Aug 28, 2018
Failed to load latest commit information.
PCAPs Wrappers added for enc -> plain Aug 23, 2017
RESOURCEs syncs Aug 29, 2018
SRC syncs Aug 29, 2018
scripts scapy-2.4.0 merger May 16, 2018
.gitignore Added .gitignore Aug 24, 2016
LICENSE DC25 Updates Aug 8, 2017
README.md README fix Aug 12, 2018



pyDot11 currently supports the following:

  • Decryption of WEP
  • Encryption of WEP
  • Decryption of WPA
    • TKIP
    • CCMP
  • Encryption of WPA
    • CCMP


packetEssentials-1.2.0 pbkdf2-1.3 pycryptodomex-3.4.5 rc4-0.1 scapy 2.4.0


In the RESOURCEs folder you will find the python modules which have been tested. As newer versions of the modules come out, sufficient testing must be done before they can be made known as "stable" with pyDot11. Feel free to use pip or whatever method you would like to get these installed. If you wish to use the modules locally provided with this git, then an installation would be something like so:

pip install RESOURCEs/packetEssentials-1.2.0.tar.gz
pip install RESOURCEs/pbkdf2-1.3.tar.gz
pip install RESOURCEs/pyDot11-2.0.7.tar.gz
pip install RESOURCEs/pycryptodomex-3.4.5.tar.gz
pip install RESOURCEs/rc4-0.1.tar.gz
pip install RESOURCEs/scapy-2.4.0.tar.gz

## If you run into issues with the scapy module not being found
## Try this local folder workaround
tar zxf RESOURCEs/scapy-2.4.0.tar.gz
mv scapy-2.4.0/scapy/ .
rm -rf scapy-2.4.0/

To get started:

## From the pyDot11 folder run the following
python pyDot11 --help
WEP Example: python pyDot11 -i wlan0mon -p <password> -b <tgt BSSID> -t wep
WPA Example: python pyDot11 -i wlan0mon -p <password> -b <tgt BSSID> -t wpa -e <tgt ESSID>
    ## OR ##
WEP Example: python pyDot11 -f <your-pcap> -p <password> -b <tgt BSSID> -t wep
WPA Example: python pyDot11 -f <your-pcap> -p <password> -b <tgt BSSID> -t wpa -e <tgt ESSID>
    ## OR ##
# Install RESOURCEs/pyDot11-1.1.2.tar.gz, then you can:
   from pyDot11 import *
# Avail Modules and where they came from:
    pcap = Pcap()
    pt = utils.Packet()
    wepCrypto = Wep()
    ccmpCrypto = Ccmp()
    tkipCrypto = Tkip()

Need help grabbing an EAPOL?

## From the pyDot11 folder run the following:
python scripts/airpunt --help

Various examples of other things you can do with pyDot11:

We can airpwn-ng!

## Example of grabbing an encrypted ICMP echo-request, decrypting it, and then replaying it:
from pyDot11 import *
from scapy.utils import rdpcap
encPkts = rdpcap('PCAPs/ICMPs/wep_pings.pcap')
decPkt, iVal = wepDecrypt(encPkts[1], keyText='0123456789')
encPkt = wepEncrypt(decPkt, '0123456789', iVal)

## At one point during development, I thought it created an exact copy.
## Will chew on and debug this later.
#encPkt == encPkts[1]
## Example of taking a packet from Open Wifi, and then encrypting it:
from pyDot11 import *
from scapy.utils import rdpcap
openPkts = rdpcap('PCAPs/ICMPs/open_pings.pcap')
input = openPkts[1].__class__(str(openPkts[1])[0:-4])
encPkt = wepEncrypt(input, '0123456789')
## Example of decrypting a WEP pcap file:
from pyDot11 import *
from scapy.utils import PcapWriter
decList = pcap.crypt2plain('PCAPs/ICMPs/wep_pings.pcap', 'WEP', '0123456789')
decPcap = PcapWriter('decrypted_pings.pcap', sync = True)
for i in decList: