Aircrack-ng can recover the WEP key once enough encrypted packets have been captured with [[airodump-ng]]. This part of the aircrack-ng suite determines the WEP key using two fundamental methods. ​ The first method is via the PTW approach (Pyshkin, Tews, Weinmann). ​ The default cracking method is PTW. This is done in two phases. ​ In the first phase, aircrack-ng only uses ARP packets. ​ If the key is not found, then it uses all the packets in the capture. ​ Please remember that not all packets can be used for the PTW method. ​ This [[supported_packets|Tutorial:​ Packets Supported for the PTW Attack page]] provides details. ​ An important limitation is that the PTW attack currently can only crack 40 and 104 bit WEP keys. The main advantage of the PTW approach is that very few data packets are required to crack the WEP key. The second ​method is the FMS/KoreK method. ​ The FMS/KoreK method incorporates various statistical attacks to discover the WEP key and uses these in combination with brute forcing.

+

Aircrack-ng can recover the WEP key once enough encrypted packets have been captured with [[airodump-ng]]. This part of the aircrack-ng suite determines the WEP key using two fundamental methods. ​ The first method is via the PTW approach (Pyshkin, Tews, Weinmann). ​ The default cracking method is PTW. This is done in two phases. ​ In the first phase, aircrack-ng only uses ARP packets. ​ If the key is not found, then it uses all the packets in the capture. ​ Please remember that not all packets can be used for the PTW method. ​ This [[supported_packets|Tutorial:​ Packets Supported for the PTW Attack page]] provides details. ​ An important limitation is that the PTW attack currently can only crack 40 and 104 bit WEP keys. The main advantage of the PTW approach is that very few data packets are required to crack the WEP key.

+

+

The other, older method is the FMS/KoreK method. ​ The FMS/KoreK method incorporates various statistical attacks to discover the WEP key and uses these in combination with brute forcing. It requires more packets than PTW, but on the other hand is able to recover the passphrase when PTW sometimes fail.

Additionally,​ the program offers a dictionary method for determining the WEP key.

Additionally,​ the program offers a dictionary method for determining the WEP key.

-

For cracking WPA/WPA2 pre-shared keys, only a dictionary method is used. SSE2 support is included to dramatically speed up WPA/WPA2 key processing. A "​four-way handshake"​ is required as input. ​ For WPA handshakes, a full handshake is composed of four packets. ​ However, aircrack-ng is able to work successfully with just 2 packets. ​ EAPOL packets (2 and 3) or packets (3 and 4) are considered a full handshake.

+

For cracking WPA/WPA2 pre-shared keys, only a dictionary method is used. A "​four-way handshake"​ is required as input. ​ For WPA handshakes, a full handshake is composed of four packets. ​ However, aircrack-ng is able to work successfully with just 2 packets. ​ EAPOL packets (2 and 3) or packets (3 and 4) are considered a full handshake.

+

+

SSE2, AVX, AVX2, and AVX512 support is included to dramatically speed up WPA/WPA2 key processing. With the exception of AVX512, all other instructions are built-in Aircrack-ng,​ and it will automatically select the fastest available for the CPU. For non-x86 CPUs, SIMD improvements are present as well.

The first method is the PTW method (Pychkine, Tews, Weinmann). The PTW method is fully described in the paper found on [[http://​www.cdc.informatik.tu-darmstadt.de/​aircrack-ptw/​|this web site]]. ​ In 2005, Andreas Klein presented another analysis of the RC4 stream cipher. Klein showed that there are more correlations between the RC4 keystream and the key than the ones found by Fluhrer, Mantin, and Shamir and these may be additionally used to break WEP. The PTW method extends Klein'​s attack and optimizes it for usage against WEP. It essentially uses enhanced FMS techniques described in the following section. ​ One particularly important constraint is that it only works with arp request/​reply packets and cannot be employed against other traffic.

+

The first method is the PTW method (Pychkine, Tews, Weinmann). The PTW method is fully described in the paper found on [[https://​web.archive.org/​web/​20070714194826/​http://​www.cdc.informatik.tu-darmstadt.de/​aircrack-ptw/​|this web site]]. ​ In 2005, Andreas Klein presented another analysis of the RC4 stream cipher. Klein showed that there are more correlations between the RC4 keystream and the key than the ones found by Fluhrer, Mantin, and Shamir and these may be additionally used to break WEP. The PTW method extends Klein'​s attack and optimizes it for usage against WEP. It essentially uses enhanced FMS techniques described in the following section. ​ One particularly important constraint is that it only works with arp request/​reply packets and cannot be employed against other traffic.

The second method is the FMS/Korek method which incorporates multiple techniques. ​ The [[links#​technique_papers|Techniques Papers]] on the links page lists many papers which describe these techniques in more detail and the mathematics behind them.

The second method is the FMS/Korek method which incorporates multiple techniques. ​ The [[links#​technique_papers|Techniques Papers]] on the links page lists many papers which describe these techniques in more detail and the mathematics behind them.

Line 87:

Line 91:

You can specify multiple input files (either in .cap or .ivs format) or use file name wildcarding. ​ See [[aircrack-ng#​other_tips|Other Tips]] for examples. ​ Also, you can run both [[airodump-ng]] and aircrack-ng at the same time: aircrack-ng will auto-update when new IVs are available.

You can specify multiple input files (either in .cap or .ivs format) or use file name wildcarding. ​ See [[aircrack-ng#​other_tips|Other Tips]] for examples. ​ Also, you can run both [[airodump-ng]] and aircrack-ng at the same time: aircrack-ng will auto-update when new IVs are available.

-

Here's a summary of all available ​options:

+

=== Options ===

+

== Common ​options ​==

^Option^Param.^Description^

^Option^Param.^Description^

-

|-a|amode|Force attack mode (1 = static WEP, 2 = WPA/​WPA2-PSK).|

+

|-a|amode|Force attack mode (1 = static WEP, 2 = WPA/​WPA2-PSK)|

-

|-b|bssid|Long version - -bssid. Select the target network based on the access point'​s MAC address.|

+

|-e|essid|If set, all IVs from networks with the same ESSID will be used. This option is also required for WPA/​WPA2-PSK cracking if the ESSID is not broadcasted (hidden)|

-

|-e|essid|If set, all IVs from networks with the same ESSID will be used. This option is also required for WPA/​WPA2-PSK cracking if the ESSID is not broadcasted (hidden).|

+

|-b|bssid|Long version -''''​-bssid. Select the target network based on the access point'​s MAC address|

-

|-p|nbcpu|On SMP systems: # of CPU to use. This option is invalid on non-SMP systems.|

+

|-p|nbcpu|On SMP systems: # of CPU to use. This option is invalid on non-SMP systems|

-

|-q|//​none//​|Enable quiet mode (no status output until the key is found, or not).|

+

|-q|//​none//​|Enable quiet mode (no status output until the key is found, or not)|

|-f|fudge|(WEP cracking) ​By default, this parameter is set to 2 for 104-bit WEP and to 5 for 40-bit WEP. Specify a higher value to increase the bruteforce level: cracking will take more time, but with a higher likelyhood of success.|

+

|-h|//​none//​|Restrict the search space to numeric characters (0x30-0x39) These keys are used by default in most Fritz!BOXes|

-

|-H|//​none//​|Long version - -help. ​ Output help information.|

+

|-d|start|Long version -''''​-debug. ​ Set the beginning of the WEP key (in hex), for debugging purposes|

-

|-l|file name|(Lowercase L, ell) logs the key to the file specified. Overwrites the file if it already exists.|

+

|-m|maddr|MAC address to filter WEP data packets. Alternatively,​ specify -m ff:​ff:​ff:​ff:​ff:​ff to use all and every IVs, regardless of the network|

|-i|index|Only keep the IVs that have this key index (1 to 4). The default behaviour is to ignore the key index|

-

|-p|threads|Allow the number of threads for cracking even if you have a non-SMP computer.|

+

|-f|fudge|By default, this parameter is set to 2 for 104-bit WEP and to 5 for 40-bit WEP. Specify a higher value to increase the bruteforce level: cracking will take more time, but with a higher likelyhood of success|

-

|-r|database|Utilizes a database generated by airolib-ng as input to determine the WPA key. Outputs an error message if aircrack-ng has not been compiled with sqlite support.|

+

|-k|korek|There are 17 korek statistical attacks. Sometimes one attack creates a huge false positive that prevents the key from being found, even with lots of IVs. Try -k 1, -k 2, ... -k 17 to disable each attack selectively|

|-''''​-simd-list|//​none//​|Shows a list of the SIMD optimizations available|

+

+

== Other options ==

+

+

^Option^Param.^Description^

+

|-H|//​none//​|Long version -''''​-help. ​ Output help information|

+

|-u|//​none//​|Long form -''''​-cpu-detect. ​ Provide information on the number of CPUs and features available such as MMX, SSE2, AVX, AVX2, AVX512|

===== Usage Examples =====

===== Usage Examples =====

==== WEP ====

==== WEP ====

-

The simplest case is to crack a WEP key. If you want to try this out yourself, here is a test [[http://​download.aircrack-ng.org/​wiki-files/​other/​test.ivs|file]]. ​ The key to the test file matches the screen image above, it does not match the following example.

+

The simplest case is to crack a WEP key. If you want to try this out yourself, here is a test [[https://​download.aircrack-ng.org/​wiki-files/​other/​test.ivs|file]]. ​ The key to the test file matches the screen image above, it does not match the following example.

-

aircrack-ng 128bit.ivs\\ ​

+

aircrack-ng ​-K 128bit.ivs\\ ​

Where:

Where:

*128bit.ivs is the file name containing IVS.

*128bit.ivs is the file name containing IVS.

+

*-K: Use KoreK attacks only

The program responds:

The program responds:

Line 150:

Line 182:

The cracking process starts and once cracked, here is what it looks like:

The cracking process starts and once cracked, here is what it looks like:

-

Aircrack-ng ​0.7 r130

+

Aircrack-ng ​1.4

​

​

​

​

Line 205:

Line 237:

Here is a sample of the output:

Here is a sample of the output:

-

Aircrack-ng ​0.7 r247

+

Aircrack-ng ​1.4

Line 243:

Line 275:

Then:

Then:

-

Aircrack-ng ​0.9

+

Aircrack-ng ​1.4

[00:01:18] Tested 0/140000 keys (got 30680 IVs)

[00:01:18] Tested 0/140000 keys (got 30680 IVs)

Line 281:

Line 313:

Notice in this case that since there are multiple networks we need to select which one to attack. ​ We select number 2. The program then responds:

Notice in this case that since there are multiple networks we need to select which one to attack. ​ We select number 2. The program then responds:

-

​Aircrack-ng ​0.7 r130

+

​Aircrack-ng ​1.4

​

​

​

​

Line 302:

Line 334:

Now you have the passphrase and can connect to the network.

Now you have the passphrase and can connect to the network.

+

+

=== SIMD ===

+

+

Aircrack-ng is compiled with multiple optimizations based on CPU features we call crypto engines. CPU features are different based on the type of CPU.

+

+

On x86 (and 64 bit), typically SSE2, AVX and AVX2 are available (AVX512 can be compiled in but it should only be done if the current CPU supports it). On ARM, neon and ASIMD are usually available and on PowerPC, ASIMD and altivec. A generic optimization is always available no matter what architecture it is compiled on or for. A limited set of optimizations may be available depending on the OS/​CPU/​compilers available.

+

+

When running aircrack-ng,​ it will load the fastest optimization based on what your CPU supports. For package maintainers,​ it is very useful as they don't have to target the one supporting all the CPU which would be the slowest.

+

+

In order to override, the option -''''​-simd can be used. Such as

+

+

aircrack-ng --simd=avx wpa.cap -w password.lst

+

+

In order to list all the available SIMD optimization,​ use -''''​-simd-list. Such as

+

+

aircrack-ng --simd-list

+

+

will display "avx2 avx sse2 generic"​ on x86.

+

+

==== Cracking session ====

+

+

Cracking can sometimes take a very long time and it is sometimes necessary to turn off the computer or put it to sleep for a while. In order to handle this kind of situation, a new set of option has been created.

+

+

It will create and/or update a session file saving the current status of the cracking (every 10 minutes) as well as all the options used, wordlists and capture files used. Multiple wordlists can be used and it works with WEP and WPA.

* The wordlist must be files. For now, they cannot be //stdin// or [[airolib-ng]] databases

+

* Session has to be restored from the same directory as when first using -''''​-new-session

+

* No new options can be added when restoring session

===== Usage Tips =====

===== Usage Tips =====

==== General approach to cracking WEP keys ====

==== General approach to cracking WEP keys ====

Line 327:

Line 396:

While aircrack-ng is running, you mostly just see the beginning of the key. Although the secret WEP key is unknown at this point, there may be clues to speed things up. If the key bytes have a fairly large number of votes, then they are likely 99.5% correct. ​ So lets look at what you can do with these clues.

While aircrack-ng is running, you mostly just see the beginning of the key. Although the secret WEP key is unknown at this point, there may be clues to speed things up. If the key bytes have a fairly large number of votes, then they are likely 99.5% correct. ​ So lets look at what you can do with these clues.

-

If the bytes (likely secret keys) are for example: 75:​47:​99:​22:​50 then it is quite obvious, that the whole key may consist only of numbers, like the first 5 bytes. ​ So it MAY improve your cracking speed to use the -t option only when trying such keys. See [[http://​en.wikipedia.org/​wiki/​Binary-coded_decimal|Wikipedia Binary Coded Decimal]] for a description of what characters -t looks for.

+

If the bytes (likely secret keys) are for example: 75:​47:​99:​22:​50 then it is quite obvious, that the whole key may consist only of numbers, like the first 5 bytes. ​ So it MAY improve your cracking speed to use the -t option only when trying such keys. See [[https://​en.wikipedia.org/​wiki/​Binary-coded_decimal|Wikipedia Binary Coded Decimal]] for a description of what characters -t looks for.

If the bytes are 37:​30:​31:​33:​36 which are all numeric values when converted to Ascii, it is a good idea to use -h option. ​ The FAQ entry [[faq#​how_do_i_convert_the_hex_characters_to_ascii|Converting hex characters to ascii]] provides links to determine if they are all numeric.

If the bytes are 37:​30:​31:​33:​36 which are all numeric values when converted to Ascii, it is a good idea to use -h option. ​ The FAQ entry [[faq#​how_do_i_convert_the_hex_characters_to_ascii|Converting hex characters to ascii]] provides links to determine if they are all numeric.

Line 353:

Line 422:

If you wish to experiment a bit with converting HEX to ASCII, see this [[faq#​how_do_i_convert_the_hex_characters_to_ascii|FAQ entry]].

If you wish to experiment a bit with converting HEX to ASCII, see this [[faq#​how_do_i_convert_the_hex_characters_to_ascii|FAQ entry]].

-

We do not specifically provide support or the details on how to configure your wireless card to connect to the AP. For linux, this [[http://​wirelessdefence.org/​Contents/​LinuxWirelessCommands.htm|page]] has an excellent writeup. ​ As well, search the internet for this information regarding linux and Windows systems. ​ As well, see the documentation for your card's wireless client. ​ If you are using linux, check the mailing lists and forums specific to the distribution.

+

We do not specifically provide support or the details on how to configure your wireless card to connect to the AP. For linux, this [[https://​web.archive.org/​web/​20080212235953/​http://​wirelessdefence.org/​Contents/​LinuxWirelessCommands.htm|page]] has an excellent writeup. ​ As well, search the internet for this information regarding linux and Windows systems. ​ As well, see the documentation for your card's wireless client. ​ If you are using linux, check the mailing lists and forums specific to the distribution.

Additionally,​ Aircrack-ng prints out a message indicating the likelihood that the key is correct. ​ It will look something similar to "​Probability:​ 100%"​. ​ Aircrack-ng tests the key against some packets to confirm the key is correct. ​ Based on these tests, it prints the probability of a correct key.

Additionally,​ Aircrack-ng prints out a message indicating the likelihood that the key is correct. ​ It will look something similar to "​Probability:​ 100%"​. ​ Aircrack-ng tests the key against some packets to confirm the key is correct. ​ Based on these tests, it prints the probability of a correct key.

Line 369:

Line 438:

So there is no way to know the how long the original passphrase was. It could as short as one character. ​ It all depends on the who developed the software.

So there is no way to know the how long the original passphrase was. It could as short as one character. ​ It all depends on the who developed the software.

-

Knowing all this, if you still wish to try to obtain the original passphrase, Latin SuD has a tool which attempts reverse the process. Click [[http://​www.latinsud.com/​wepconv.html|here]] for the tool.

+

Knowing all this, if you still wish to try to obtain the original passphrase, Latin SuD has a tool which attempts reverse the process. Click [[https://​www.latinsud.com/​wepconv.html|here]] for the tool.

Nonetheless,​ these passphrases result in a WEP Key that is as easily cracked as every other WEP Key. The exact conversion method really does not matter in the end.

Nonetheless,​ these passphrases result in a WEP Key that is as easily cracked as every other WEP Key. The exact conversion method really does not matter in the end.

Line 382:

Line 451:

There are a number of sample files that you can try with aircrack-ng to gain experience:

There are a number of sample files that you can try with aircrack-ng to gain experience:

-

* wpa.cap: ​ This is a sample file with a wpa handshake. ​ It is located in the "​test"​ directory of the install files. ​ The passphrase is "​biscotte"​. ​ Use the password file (password.lst) which is in the same directory.

+

* [[https://​github.com/​aircrack-ng/​aircrack-ng/​raw/​master/​test/​wpa.cap|wpa.cap]]: This is a sample file with a wpa handshake. ​ It is located in the "​test"​ directory of the install files. ​ The passphrase is "​biscotte"​. ​ Use the password file (password.lst) which is in the same directory.

-

* wpa2.eapol.cap:​ This is a sample file with a wpa2 handshake. ​ It is located in the "​test"​ directory of the install files. ​ The passphrase is "​12345678"​. ​ Use the password file (password.lst) which is in the same directory.

+

* [[https://​github.com/​aircrack-ng/​aircrack-ng/​raw/​master/​test/​wpa2.eapol.cap|wpa2.eapol.cap]]: This is a sample file with a wpa2 handshake. ​ It is located in the "​test"​ directory of the install files. ​ The passphrase is "​12345678"​. ​ Use the password file (password.lst) which is in the same directory.

-

* [[http://​download.aircrack-ng.org/​wiki-files/​other/​test.ivs|test.ivs]]:​ This is a 128 bit WEP key file. The key is "​AE:​5B:​7F:​3A:​03:​D0:​AF:​9B:​F6:​8D:​A5:​E2:​C7"​.

+

* [[https://​download.aircrack-ng.org/​wiki-files/​other/​test.ivs|test.ivs]]:​ This is a 128 bit WEP key file. The key is "​AE:​5B:​7F:​3A:​03:​D0:​AF:​9B:​F6:​8D:​A5:​E2:​C7"​.

-

* [[http://dl.aircrack-ng.org/ptw.cap|ptw.cap]]:​ This is a 64 bit WEP key file suitable for the PTW method. ​ The key is "​1F:​1F:​1F:​1F:​1F"​.

+

* [[https://github.com/aircrack-ng/​aircrack-ng/​raw/​master/​test/​wep_64_ptw.cap|ptw.cap]]:​ This is a 64 bit WEP key file suitable for the PTW method. ​ The key is "​1F:​1F:​1F:​1F:​1F".

+

* [[https://​github.com/​aircrack-ng/​aircrack-ng/​raw/​master/​test/​wpa-psk-linksys.cap|wpa-psk-linksys.cap]]:​ This is a sample file with a WPA1 handshake along with some encrypted packets. Useful for testing with airdecap-ng. The password is "​dictionary"​.

+

* [[https://​github.com/​aircrack-ng/​aircrack-ng/​raw/​master/​test/​wpa2-psk-linksys.cap|wpa2-psk-linksys.cap]]:​ This is a sample file with a WPA2 handshake along with some encrypted packets. Useful for testing with airdecap-ng. The password is "​dictionary".

==== Dictionary Format ====

==== Dictionary Format ====

Line 391:

Line 462:

Dictionaries used for WPA/WPA bruteforcing need to contain one passphrase per line.

Dictionaries used for WPA/WPA bruteforcing need to contain one passphrase per line.

-

The linux and Windows end of line format is slightly different. ​ See this [[http://​en.wikipedia.org/​wiki/​Line_feed|Wikipedia entry]] for details. There are conversion tools are available under both linux and Windows which can convert one format to another. ​ As well, editors are available under both operating systems which can edit both formats correctly. ​ It is up to the reader to use an Internet search engine to find the appropriate tools.

+

The linux and Windows end of line format is slightly different. ​ See this [[https://​en.wikipedia.org/​wiki/​Line_feed|Wikipedia entry]] for details. There are conversion tools are available under both linux and Windows which can convert one format to another. ​ As well, editors are available under both operating systems which can edit both formats correctly. ​ It is up to the reader to use an Internet search engine to find the appropriate tools.

However both types should work with the linux or Windows versions of aircrack-ng. ​ Thus, you really don't need to convert back and forth.

However both types should work with the linux or Windows versions of aircrack-ng. ​ Thus, you really don't need to convert back and forth.

Line 399:

Line 470:

Although it is not part of aircrack-ng,​ it is worth mentioning an interesting piece of work is by SuD. It is basically a wep hex dictionary already prepared and the program to run it:

Although it is not part of aircrack-ng,​ it is worth mentioning an interesting piece of work is by SuD. It is basically a wep hex dictionary already prepared and the program to run it:

-

http://​www.latinsud.com/​pub/​wepdict/​

+

https://​www.latinsud.com/​pub/​wepdict/​

Line 408:

Line 479:

So here are two tools to split capture files:

So here are two tools to split capture files:

-

* http://​www.badpenguin.co.uk/​files/​pcap-util

+

* https://​www.badpenguin.co.uk/​files/​pcap-util

-

* http://​www.badpenguin.co.uk/​files/​pcap-util2

+

* https://​www.badpenguin.co.uk/​files/​pcap-util2

Another technique is to use Wireshark / tshark. ​ You can mark packets then same them to a separate file.

Another technique is to use Wireshark / tshark. ​ You can mark packets then same them to a separate file.

Line 416:

Line 487:

==== How to extract WPA handshake from large capture files ====

==== How to extract WPA handshake from large capture files ====

-

Sometimes you have a very large capture file and would like to extract the WPA/WPA2 handshake packets from it to a separate file. The can be done with "​tshark"​ which is a command line version of the Wireshark suite. ​ Installing the linux version of the [[http://​www.wireshark.org|Wireshark suite]] on your system should also install tshark.

+

Sometimes you have a very large capture file and would like to extract the WPA/WPA2 handshake packets from it to a separate file. The can be done with "​tshark"​ which is a command line version of the Wireshark suite. ​ Installing the linux version of the [[https://​www.wireshark.org|Wireshark suite]] on your system should also install tshark.

The following command will extract all handshake and beacon packets from your pcap capture file and create a separate file with just those packets:

The following command will extract all handshake and beacon packets from your pcap capture file and create a separate file with just those packets:

Aircrack-ng comes with a small dictionary called password.lst. ​ The password.lst file is located in the "​test"​ directory of the source files. ​ This [[faq#​where_can_i_find_good_wordlists|FAQ entry]] has a list of web sites where you can find extensive wordlists (dictionaries). ​ Also see this [[http://​forum.aircrack-ng.org/​index.php?​topic=1373|thread]] on the Forum.

+

Aircrack-ng comes with a small dictionary called password.lst. ​ The password.lst file is located in the "​test"​ directory of the source files. ​ This [[faq#​where_can_i_find_good_wordlists|FAQ entry]] has a list of web sites where you can find extensive wordlists (dictionaries). ​ Also see this [[https://​forum.aircrack-ng.org/​index.php?​topic=1373|thread]] on the Forum.

Determining the WPA/WPA2 passphrase is totally dependent on finding a dictionary entry which matches the passphrase. ​ So a quality dictionary is very important. ​ You can search the Internet for dictionaries to be used. There are many available.

Determining the WPA/WPA2 passphrase is totally dependent on finding a dictionary entry which matches the passphrase. ​ So a quality dictionary is very important. ​ You can search the Internet for dictionaries to be used. There are many available.

Line 508:

Line 579:

If you are sure your capture file contains a valid handshake then use Wireshark or an equivalent piece of software and manually pull out the beacon packet plus a set of handshake packets.

If you are sure your capture file contains a valid handshake then use Wireshark or an equivalent piece of software and manually pull out the beacon packet plus a set of handshake packets.

-

There is an open [[http://trac.aircrack-ng.org/ticket/651|trac ticket]] to correct this incorrect behavior.

+

There is an open [[https://github.com/​aircrack-ng/​aircrack-ng/​issues/651|GitHub issue]] to correct this incorrect behavior.