User Tools

Site Tools


airolib-ng

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
airolib-ng [2008/02/10 14:42]
mister_x Troubleshooting: Airolib-ng fails to open or create the database
airolib-ng [2013/03/18 13:32] (current)
jano Change the external link --> "churchofwifi.org/Project" because it no longer exists
Line 1: Line 1:
 ====== Airolib-ng ====== ====== Airolib-ng ======
- 
-++++++ IMPORTANT ++++++\\ 
-++++++ IMPORTANT ++++++\\ 
-++++++ IMPORTANT ++++++\\ 
- 
-This functionality will be available in a future release. It is NOT available currently. 
- 
-++++++ IMPORTANT ++++++\\ 
-++++++ IMPORTANT ++++++\\ 
-++++++ IMPORTANT ++++++\\ 
  
 ===== Description ===== ===== Description =====
  
-Airolib-ng is a tool for the aircrack-ng suite to store and manage essid and password lists, compute their Pairwise Master Keys (PMKs) and use them in WPA/WPA2 cracking. ​ The program uses the lightweight SQLite3 database as the storage mechanism which is available on most platforms. ​ The SQLite3 database was selected taking in consideration platform availability plus management, memory and disk overhead.+Airolib-ng is an aircrack-ng suite tool designed ​to store and manage essid and password lists, compute their Pairwise Master Keys (PMKs) and use them in WPA/WPA2 cracking. ​ The program uses the lightweight SQLite3 database as the storage mechanism which is available on most platforms. ​ The SQLite3 database was selected taking in consideration platform availability plus management, memory and disk overhead.
  
 WPA/WPA2 cracking involves calculating the pairwise master key, from which the private transient key (PTK) is derived. ​  Using the PTK, we can compute the frame message identity code (MIC) for a given packet and will potentially find the MIC to be identical to the packet'​s thus the PTK was correct therefore the PMK was correct as well. WPA/WPA2 cracking involves calculating the pairwise master key, from which the private transient key (PTK) is derived. ​  Using the PTK, we can compute the frame message identity code (MIC) for a given packet and will potentially find the MIC to be identical to the packet'​s thus the PTK was correct therefore the PMK was correct as well.
  
-Calculating the PMK is very slow since it uses the pbkdf2 algorithm. ​ Yet the PMK is always the same for a given ESSID and password combination. This allows us to pre-compute the PMK for given combinations and speed up cracking the wpa/wpa2 handshake. ​ Tests on have shown that using this technique in [[aircrack-ng]] can check more than 30,000 passwords per second using pre-computed PMK tables.+Calculating the PMK is very slow since it uses the pbkdf2 algorithm. ​ Yet the PMK is always the same for a given ESSID and password combination. This allows us to pre-compute the PMK for given combinations and speed up cracking the wpa/wpa2 handshake. ​ Tests have shown that using this technique in [[aircrack-ng]] can check more than 50 000 passwords per second using pre-computed PMK tables.
  
 Computing the PMK is still required, yet we can: Computing the PMK is still required, yet we can:
Line 30: Line 20:
 To learn more about coWPAtty: To learn more about coWPAtty:
  
-  * [[http://​www.churchofwifi.org/default.asp?​PageLink=Project_Display.asp?PID=95|Church of Wifi CoWPAtty]]+  * [[http://​www.willhackforsushi.com/?page_id=50|Will Hack For SUSHI > CoWPAtty]]
   * [[http://​www.wirelessdefence.org/​Contents/​coWPAttyMain.htm|Wireless Defense CoWPAtty writeup]]   * [[http://​www.wirelessdefence.org/​Contents/​coWPAttyMain.htm|Wireless Defense CoWPAtty writeup]]
  
Line 54: Line 44:
   * - -verify [all]  - Verify a set of randomly chosen PMKs. If the option '​all'​ is given, all(!) PMKs in the database are verified and the incorrect ones are deleted.   * - -verify [all]  - Verify a set of randomly chosen PMKs. If the option '​all'​ is given, all(!) PMKs in the database are verified and the incorrect ones are deleted.
   * - -export cowpatty {essid} {file} ​ -  Export to a cowpatty file.   * - -export cowpatty {essid} {file} ​ -  Export to a cowpatty file.
-  * - -import cowpatty {file} ​ -  Import a cowpatty file. +  * - -import cowpatty {file} ​ -  Import a cowpatty file and create the database if it does not exist
-  * - -import {essid|passwd} {file} ​ -  Import a text flat file as a list of either ESSIDs or passwords. ​ This file must contain one essid or password per line.  Lines should be terminated with line feeds. ​ Meaning press "​enter"​ at the end of each line when entering the values.+  * - -import {essid|passwd} {file} ​ -  Import a text flat file as a list of either ESSIDs or passwords ​and create the database if it does not exist.  This file must contain one essid or password per line.  Lines should be terminated with line feeds. ​ Meaning press "​enter"​ at the end of each line when entering the values.
  
 ===== Usage Examples ===== ===== Usage Examples =====
Line 182: Line 172:
  
 === SSID === === SSID ===
-To import an ascii list of SSIDs, enter:+To import an ascii list of SSIDs and create the database if it does not exist, enter:
  
    ​airolib-ng testdb --import essid ssidlist.txt    ​airolib-ng testdb --import essid ssidlist.txt
Line 188: Line 178:
 Where: Where:
  
-  * testdb is the name of the database to be updated and this must already ​exist.+  * testdb is the name of the database to be updated and it will be created if it does not exist.
   * - -import is the operation to be performed.   * - -import is the operation to be performed.
   * essid indicates it is a list of SSIDs.   * essid indicates it is a list of SSIDs.
Line 200: Line 190:
  
 === Passwords === === Passwords ===
-To import an ascii list of passwords, enter:+To import an ascii list of passwords ​and create the database if it does not exist, enter:
  
    ​airolib-ng testdb --import passwd password.lst    ​airolib-ng testdb --import passwd password.lst
Line 206: Line 196:
 Where: Where:
  
-  * testdb is the name of the database to be updated and this must already ​exist.+  * testdb is the name of the database to be updated and it will be created if it does not exist.
   * - -import is the operation to be performed.   * - -import is the operation to be performed.
   * passwd indicates it is a list of passwords.   * passwd indicates it is a list of passwords.
Line 219: Line 209:
 === Cowpatty tables === === Cowpatty tables ===
  
-Enter:+Imports a cowpatty table and create the database if it does not exist, enter:
  
    ​airolib-ng testdb --import cowpatty ​ cowexportoftest    ​airolib-ng testdb --import cowpatty ​ cowexportoftest
Line 225: Line 215:
 Where: Where:
  
-  * testdb is the name of the database to be updated and this must already ​exist.+  * testdb is the name of the database to be updated and it will be created if it does not exist.
   * - -import is the operation to be performed.   * - -import is the operation to be performed.
   * cowpatty indicates it is a cowpatty table.   * cowpatty indicates it is a cowpatty table.
Line 256: Line 246:
  
 ===== Usage Tips ===== ===== Usage Tips =====
 +
 +==== Creating your own database example ====
  
 To test the tool yourself... To test the tool yourself...
Line 261: Line 253:
   * get yourself the sqlite3 library and headers (latest version is recommended)   * get yourself the sqlite3 library and headers (latest version is recommended)
   * get yourself the 1.0dev version of the aircrack-ng suite   * get yourself the 1.0dev version of the aircrack-ng suite
-  * import ​some essid, e.g. "echo Harkonen | airolib-ng testdb import ​ascii essid -" +  * import ​an essid, e.g. "echo Harkonen | airolib-ng testdb ​--import essid -" 
-  * import ​some passwords, e.g. "echo 12345678 | airolib-ng testdb import ​ascii passwd -" + 
-  * start the batch process ("​airolib-ng testdb batch"​),​ wait for it to run out of work, kill it +   ​Database <​testdb>​ does not already exist, creating it... 
-  * crack your WPA/WPA2 handshake, e.g. "​aircrack-ng -r testdb -e Harkonen -wpa2.eapol.cap"​+   ​Database <​testdb>​ sucessfully created 
 +   ​Reading file... 
 +   ​Writing... 
 +   ​Done. 
 + 
 +  * import ​a password, e.g. "echo 12345678 | airolib-ng testdb ​--import passwd -" 
 + 
 +   ​Reading file... 
 +   ​Writing... 
 +   ​Done. 
 + 
 +  * start the batch process ("​airolib-ng testdb ​--batch"​),​ wait for it to run out of work, kill it 
 + 
 +   ​Computed 1 PMK in 0 seconds (1 PMK/s, 0 in buffer). All ESSID processed. 
 + 
 +  * Check the database to confirm everything has been computed ("​airolib-ng testdb --stats"​) 
 + 
 +   There are 1 ESSIDs and 1 passwords in the database. 1 out of 1 possible combinations have been computed (100%). 
 +    
 +   ​ESSID ​  ​Priority ​       Done 
 +   ​Harkonen ​       64      100.0 
 + 
 +  * crack your WPA/WPA2 handshake, e.g. "​aircrack-ng -r testdb -e Harkonen ​wpa2.eapol.cap"​ 
 + 
 +   KEY FOUND! [ 12345678 ] 
 + 
 + 
 + 
 +==== Using a sample pre-made database ==== 
 + 
 +Another way to test for yourself is to download a pre-made database called [[http://​download.aircrack-ng.org/​wiki-files/​other/​passphrases.db|passphrases.db]]. ​ This  file is also located in the test directory of the aircrack-ng sources. Then try this database with the two test WPA/WPA2 files supplied in the test directory of the aircrack-ng sources. ​ The WPA/WPA2 test files are called "​wpa.cap"​ and "wpa2.eapol.cap"​
 + 
 +The commands are either of: 
 + 
 +   ​aircrack-ng -r passphrases.db wpa.cap 
 +   ​aircrack-ng -r passphrases.db wpa2.eapol.cap 
 + 
 +This should give you the passphase. ​ Success indicates that your setup is working correctly. 
  
 ===== Usage Troubleshooting ===== ===== Usage Troubleshooting =====
 +
 +
 ==== Enabling Airolib-ng ==== ==== Enabling Airolib-ng ====
-Airolib-ng is not compiled by default. ​ To enable compiling, do "​make ​SQLITE=true" and "make sqlite=true install"​.+Airolib-ng is not compiled by default. ​ To enable compiling, do "​make ​sqlite=true" and "make sqlite=true install"​.
  
 ==== Compile Error ==== ==== Compile Error ====
-Although this is not a usage troublshooting ​tip, it is a common problem during the compilation of the 1.0dev version. ​ As a reminder, SQLite must be version 3.3.13 or above. ​ This is the compile error you receive when your version of SQLite is less then the requirement:​+Although this is not a usage troubleshooting ​tip, it is a common problem during the compilation of the 1.0dev version. ​ As a reminder, SQLite must be version 3.3.13 or above. ​ This is the compile error you receive when your version of SQLite is less then the requirement:​
  
   gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=`../​evalrev` -I/​usr/​local/​include -Iinclude -DHAVE_SQLITE ​  -c -o airolib-ng.o airolib-ng.c   gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=`../​evalrev` -I/​usr/​local/​include -Iinclude -DHAVE_SQLITE ​  -c -o airolib-ng.o airolib-ng.c
Line 291: Line 323:
  
 The solution is to move airolib-ng and its database in another directory without these special characters. The solution is to move airolib-ng and its database in another directory without these special characters.
 +
 +==== "​invalid lines ignored"​ error message ====
 +
 +This error message may occur when importing passwords or ESSIDs. ​  It is the number of records with invalid passwords or ESSIDs lengths. ​ The valid lengths are:
 +
 +  * Passwords must have a length of 8 through 63 characters
 +  * ESSIDs must have a length of 1 through 32 characters
 +
 +==== "​Quitting aircrack-ng..."​ error message ====
 +
 +If you subsequently run aircrack-ng and only receive "​Quitting aircrack-ng..."​ then the ESSID is missing from the database. ​ You need to load it plus rerun the batch option.
 +
airolib-ng.1202650957.txt.gz · Last modified: 2008/02/10 14:42 by mister_x