Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Numerous features for scanning and filtering AP added. #34

Open
wants to merge 20 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*.csv
hs/*
wep/*
wpa/*
wps/*
114 changes: 114 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# Version 2.0 Rev 103 #
## WPA ##
- One minor bug in strip_handshake function fixed

## WPS ##
- Rewrote part of Pixie-Dust function (*May have bugs)
- wash 1.5.2 is now supported
- Filter keywords "wps1" now means "targets with WPS enabled except locked", "wps2" means "targets with WPS enabled includes locked"

## OTHERS ##
- Column width tuned
- WPS locked router is shown as "lock" instead of "yes" in "WPS" column when scanning state
- "--save" switch saves the cap file too (For checking WPS compability).

# Version 2.0 Rev 102 #
- wifite now prompts for entering targets again if no targets is selected.
- Minor message tweak

# Version 2.0 Rev 101 #
- Support to aircrack-ng 1.2-rc2 improved.

# Version 2.0 Rev 100 #
- One typo fixed

# Version 2.0 Rev 99 #
## WPS ##
- Partially merged the commit from derv82/wifite/commit/30dcc8d99223f8e5faa2f9fa62ab8f392b2d4c67 for WPS pixie dust attack
- WPS session is now saved by default (use '--wpsnosave' to override)
- Check the existence of Pixiewps

## OTHERS ##
- MAC address anonymizing is enabled by default (use '--realmac' to override)

# Version 2.0 Rev 98 #
## WPA ##
- Partially merged the commit from derv82/wifite/commit/edbdedd149254f58a99d2f53e5e9b8105c4c61bb (fix the bug in strip_handshake function)

# Version 2.0 Rev 97 #
- One minor bug fixed

# Version 2.0 Rev 96 #
- Support to aircrack-ng 1.2-rc2 improved.

# Version 2.0 Rev 95 #
## WEP ##
- One bug fixed (Thanks Andrea from BackBox Linux)

# Version 2.0 Rev 94 #
## WEP ##
- One typo fixed (Reported by Andrea from BackBox Linux)

# Version 2.0 Rev 93 #
## WEP ##
- Behavior changes: Captured IVs during WEP attack will be saved to 'wep' folder under current directory by default, use "--wepnosave" to disable saving cap/ivs, "--wepsave" switch removed.
- Automatically count previously saved IV file when attacking WEP network. (*not very accurate, maybe duplicated IV in captured file?)
- More progress information (e.g. estimated finish time, additional IVs required) is shown when attacking WEP network.
- New switch "--wepsaveiv" to capture only IV packets (smaller file size) when attacking WEP network.
- Continue capturing if IVs are not enough to solve the key.

## WPA ##
- WPA cracking using pyrit and cowpatty added, option to use hash file (*experimental*) added.

## Network Interface ##
- Network functions clean up. Now more object-orientated.
- Switch "--mon-iface" removed, now wifite will determine automatically if the interface is already in monitor mode. Please use "-i" instead.

## Others ##
- Fixed an error when analyzing .cap file.

# Version 2.0 Rev 92 #
- Codes clean up, slighly more modular
- Update route improved
- Change default folder for WPA handshake from 'hs' to 'wpa', old folder will be renamed automatically

# Version 2.0 Rev 91 #
- Fixed a bug which cause program exit if selecting targets using numbers
- New switch "--wpssave" to save the progress of WPS PIN attack (useful if you are running live CD and don't want to backup the file manually)
- Codes clean up

# Version 2.0 Rev 90 #
- Fixed four typos
- Automatically find *phpbb.txt* as dictionary file instead of hard-coding the path

# Version 2.0 Rev 89 #
- Minor message tweak
- I accidentally covert the last two releases to evil CRLF line ending, now move back to LF line ending.
- Modified --timeout/--attack/--scan switch: now "bBSSID+" means AP contains BSSID with associated client, same meaning for "eSSID+".

# Version 2.0 Rev 88 #
- Tidy up message printing
- Modified "--timeout" switch for better flexibility in scanning state (e.g. "--timeout bBSSID,n\>30,600" means to timeout if target contains BSSID is found or total targets exceed 30, or after 10 minutes.)
- Prompt to install missing programs.
- Add "--debug" switch to print debug message.

# Version 2.0 Rev 87 #
- Save/load decloaked hidden network.
- Save/load scanned network.
- Decloaking hidden networks without waiting.
- Add lots of filters (e.g. WPA+ for WPA network with clients, WPA1 for WPA network with one client, -p<20 to exclude network with power below 20dB etc).
- Timeout when scanning networks.
- List wireless AP in two columns
- List number of clients for each wireless AP, instead of just the word "CLIENT(S)"
- Max rows to show when scanning networks
- Tidy up the help page (e.g. separate the interface setting into new INTERFACE section)
- Default to skip network if WPA handshake file is found (can be override by --recapture)
- Tidy up message printing (*incomplete*)
- Fix a bug that show all APs has no client

# Version 2.0 #

The biggest change from version 1 is support for ["reaver"](http://reaver-wps.googlecode.com/), a Wifi-Protected Setup (WPS) attack tool. Reaver can compromise the PIN and PSK for many routers that have WPS enabled, usually within hours.

Other changes include a complete code re-write with bug fixes and added stability. Due to problems with the Python Tkinter suite, the GUI has been left out of this latest version.

62 changes: 37 additions & 25 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,47 @@ wifite

An automated wireless attack tool.

Introduction
------------

What's New?
-----------
wifite is a program automates attacking and cracking wireless access points protected by WEP, WPA with/without WPS. Traditionally it has to be done manually and involved numerous program with many parameters, which is very inconvenient for batch access points security auditing. This little python script saves your time by automatically attack chosen access points in batch.

The biggest change from version 1 is support for ["reaver"](http://reaver-wps.googlecode.com/), a Wifi-Protected Setup (WPS) attack tool. Reaver can compromise the PIN and PSK for many routers that have WPS enabled, usually within hours.
Installation
------------

Other changes include a complete code re-write with bug fixes and added stability. Due to problems with the Python Tkinter suite, the GUI has been left out of this latest version.
To download and execute wifite, run the commands below:

`wget https://github.com/derv82/wifite/raw/master/wifite.py` (devr82's orginal version) or `wget https://github.com/brianpow/wifite/raw/master/wifite.py` (my fork)
`chmod +x wifite.py`
`./wifite.py`

About
Usage
-----

_Wifite is for Linux only._

Wifite was designed for use with pentesting distributions of Linux, such as [Kali Linux](http://www.kali.org/), [Pentoo](http://www.pentoo.ch/), [BackBox](http://www.backbox.org); any Linux distributions with wireless drivers patched for injection. The script appears to also operate with Ubuntu 11/10, Debian 6, and Fedora 16.
```
wifite.py --showb --attack all,-eMYWIFI,-wpa0,-wps2,wps1 --timeout 120,e,n\>50 --save ap --two
```

Wifite must be run as __root__. This is required by the suite of programs it uses. Running downloaded scripts as root is a bad idea. I recommend using the Kali Linux bootable Live CD, a bootable USB stick (for persistent), or a virtual machine. Note that Virtual Machines cannot directly access hardware so a wireless USB dongle would be required.
Meaning: show BSSID when scanning; attack all APs excepts APs with name containing MYWIFI, exclude WPA APs without client, exclude both locked and WPS-enabled APs and include wps-enabled AP (i.e. remove WPS locked APs); Automatically attack APs after scanning for 120 seconds, or if hidden network is detected, or if total targets are more than 50; Save scanned APs into ap.csv and ap.cap; List APs in two columns.

Wifite assumes that you have a wireless card and the appropriate drivers that are patched for injection and promiscuous/monitor mode.

Requirement
-----------

Execution
---------
### Mandatory Requirement ###

To download and execute wifite, run the commands below:
#### Hardware ####

`wget https://raw.github.com/derv82/wifite/master/wifite.py`
`chmod +x wifite.py`
`./wifite.py`
* Wireless card with supported driver for entering promiscuous/monitor mode and support packet injection (USB wireless dongle if you are running in virtual machine.)

#### Software ####

Required Programs
-----------------
Pentesting distributions of Linux, such as [Kali Linux](http://www.kali.org/), [Pentoo](http://www.pentoo.ch/), [BackBox](http://www.backbox.org) (Ubuntu 11/10, Debian 6, and Fedora 16 may work but not confirmed).

Please see [the installation guide](https://github.com/derv82/wifite/wiki/Installation) on the wiki for help installing any of the tools below.
Unless you are using very old distro of Linux, the following software should be pre-installed and available. Please see [the installation guide](https://github.com/derv82/wifite/wiki/Installation) on the wiki if you really need to install any of the tools below manually.

* [__Python 2.7.x__](http://python.org/getit/). Wifite is a Python script and requires Python to run.
* [__Python 2.7.x__](http://python.org/getit/). wifite is a Python script and requires Python to run.

* [__aircrack-ng suite__](http://aircrack-ng.org/).
This is absolutely required. The specific programs used in the suite are:
Expand All @@ -52,23 +56,31 @@ Please see [the installation guide](https://github.com/derv82/wifite/wiki/Instal
* Standard linux programs.
* iwconfig, ifconfig, which, iw

Suggested Programs
------------------
### Recommended Hardware/Software ###

#### Hardware ####

* Computer with NVIDIA or ATI display card (for accelerated cracking)

#### Software ####

_`*` indicates program is not included in [Backtrack 5 R1](http://www.backtrack-linux.org/)_

* `*`[__reaver__](http://code.google.com/p/reaver-wps/), a Wifi-Protected Setup (WPS) attack tool. Reaver includes a scanner "walsh" (or "wash") for detecting WPS-enabled access points. Wifite uses Reaver to scan for and attack WPS-enabled routers.
* `*`[__reaver__](https://github.com/t6x/reaver-wps-fork-t6x), a Wifi-Protected Setup (WPS) attack tool. Reaver includes a scanner "walsh" (or "wash") for detecting WPS-enabled access points. wifite uses Reaver to scan for and attack WPS-enabled routers.

* `*`[__pyrit__](http://code.google.com/p/pyrit/), a GPU cracker for WPA PSK keys. Wifite uses pyrit (if found) to detect handshakes. In the future, Wifite may include an option to crack WPA handshakes via pyrit.
* `*`[__pyrit__](http://code.google.com/p/pyrit/), a GPU cracker for WPA PSK keys. Wifite uses pyrit (if found) to detect handshakes.

* __tshark__. Comes bundled with [Wireshark](http://www.wireshark.org/), packet sniffing software.

* [__cowpatty__](http://www.willhackforsushi.com/Cowpatty.html), a WPA PSK key cracker. Wifite uses cowpatty (if found) to detect handshakes.

#### Others ####

* Rainbow table (for accelerated cracking)

Licensing
---------

Wifite is licensed under the GNU General Public License version 2 (GNU GPL v2).
wifite is licensed under the GNU General Public License version 2 (GNU GPL v2).

(C) 2010-2012 Derv Merkler
(C) 2010-2015 Derv Merkler
25 changes: 25 additions & 0 deletions todo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# GENERAL #
* Restore same command-line switch names from v1
* If device already in monitor mode, check for and, if applicable, use macchanger
* More comments on code
* Attack all targets simultaneously?

# WPS #
* Mention reaver automatically resumes sessions
* Show time since last successful attempt
* Percentage of tries/attempts ?
* Update code to work with reaver 1.4 ("x" sec/att)
* Save reaver.db?

# reaver #
* MONITOR ACTIVITY!
* Enter ESSID when executing (?)
* Ensure WPS key attempts have begun.
* If no attempts can be made, stop attack
- During attack, if no attempts are made within X minutes, stop attack & Print
- Reaver's output when unable to associate:
[!] WARNING: Failed to associate with AA:BB:CC:DD:EE:FF (ESSID: ABCDEF)
- If failed to associate for x minutes, stop attack (same as no attempts?)

# MIGHTDO #
* Test injection at startup? (skippable via command-line switch)
Loading