diff --git a/.gitattributes b/.gitattributes
index 5ad42dea7..20dc9c4fa 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -7,5 +7,8 @@
*.md text
*.db text
+# Executable binaries
+*.deb binary
+
# Binary image formats
*.png binary
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 05e546f5a..fd8bc0ae0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+###6.2
+ - Docker support added
+ - Default save path system detecting if executed in Docker container
+
###6.12
- Fixed bug on network detection
- Fixed bug causing strange behaviour on some Linux handling optional_tools array
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 010f7ce7b..7f2b24549 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -3,7 +3,8 @@
Hi there! We are thrilled that you would like to contribute to this project. Your help is essential for keeping it great.
When contributing to this repository, please first discuss the change you wish to make via issue,
-email, or any other method with the owners of this repository before making a change.
+email, or any other method with the owners of this repository before making a change.
+If an issue is opened and more info is needed, `airgeddon` staff will request it. If there is no answer in 10 days, the issue will be closed.
Please note we have a code of conduct, please follow it in all your interactions with the project.
@@ -128,7 +129,7 @@ available at [http://contributor-covenant.org/version/1/4][Version]
## Donate
-If you enjoyed the script, feel free to donate. Invite me to a coffee through Paypal or send me a fraction of a bitcoin:
+If you enjoyed the script, feel free to donate. Support the project through Paypal or sending a fraction of a bitcoin:
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..acb96a1ea
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,161 @@
+#airgeddon Dockerfile
+
+#Base image
+FROM kalilinux/kali-linux-docker:latest
+
+#Credits & Data
+LABEL \
+ name="airgeddon" \
+ author="v1s1t0r " \
+ maintainer="OscarAkaElvis " \
+ description="This is a multi-use bash script for Linux systems to audit wireless networks."
+
+#Url env vars
+ENV AIRGEDDON_URL="https://github.com/v1s1t0r1sh3r3/airgeddon.git"
+ENV BULLY_URL="https://github.com/v1s1t0r1sh3r3/bully.git"
+ENV HASHCAT2_URL="https://github.com/v1s1t0r1sh3r3/hashcat2.0.git"
+
+#Update system
+RUN \
+ apt-get update
+
+#Set locales
+RUN \
+ apt-get -y install \
+ locales && \
+ locale-gen en_US.UTF-8 && \
+ sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
+ echo 'LANG="en_US.UTF-8"' > /etc/default/locale && \
+ dpkg-reconfigure --frontend=noninteractive locales && \
+ update-locale LANG=en_US.UTF-8
+
+#Env vars for locales
+ENV LANG="en_US.UTF-8"
+ENV LANGUAGE="en_US:en"
+ENV LC_ALL="en_US.UTF-8"
+
+#Install airgeddon essential tools
+RUN \
+ apt-get -y install \
+ gawk \
+ net-tools \
+ wireless-tools \
+ iw \
+ aircrack-ng \
+ xterm
+
+#Install airgeddon internal tools
+RUN \
+ apt-get -y install \
+ ethtool \
+ pciutils \
+ rfkill \
+ x11-utils
+
+#Install update tools
+RUN \
+ apt-get -y install \
+ curl \
+ git
+
+#Install airgeddon optional tools
+RUN \
+ apt-get -y install \
+ crunch \
+ hashcat \
+ mdk3 \
+ hostapd \
+ lighttpd \
+ iptables \
+ ettercap-text-only \
+ sslstrip \
+ isc-dhcp-server \
+ dsniff \
+ reaver \
+ bully \
+ pixiewps \
+ expect
+
+#Install needed Ruby gems
+RUN \
+ apt-get -y install \
+ beef-xss \
+ bettercap
+
+#Env var for display
+ENV DISPLAY=":0"
+
+#Create dir for external files
+RUN \
+ mkdir /io
+
+#Set workdir
+WORKDIR /opt/
+
+#airgeddon install method 1 (only one method can be used, other must be commented)
+#Install airgeddon (Dockerhub automated build process)
+RUN \
+ mkdir airgeddon
+COPY \
+ . /opt/airgeddon
+
+#airgeddon install method 2 (only one method can be used, other must be commented)
+#Install airgeddon (manual image build)
+#Uncomment one of the three to select branch (master->latest, dev->beta, docker->alpha)
+#ENV BRANCH="master"
+#ENV BRANCH="dev"
+#ENV BRANCH="docker"
+#RUN \
+# git clone -b ${BRANCH} ${AIRGEDDON_URL}
+
+#Remove auto update
+RUN \
+ sed -i 's|auto_update=1|auto_update=0|' airgeddon/airgeddon.sh
+
+#Make bash script files executable
+RUN \
+ chmod +x airgeddon/*.sh
+
+#Prepare packages to upgrade Bully
+RUN \
+ apt-get -y install libssl1.0-dev \
+ build-essential \
+ libpcap-dev
+
+#Upgrade Bully
+RUN \
+ git clone ${BULLY_URL} && \
+ cd /opt/bully/src && \
+ make && \
+ make install && \
+ cp /usr/local/bin/bully /usr/bin/ && \
+ chmod +x /usr/bin/bully
+
+#Downgrade Hashcat
+RUN \
+ git clone ${HASHCAT2_URL} && \
+ cp /opt/hashcat2.0/hashcat /usr/bin/ && \
+ chmod +x /usr/bin/hashcat
+
+#Clean packages
+RUN \
+ apt-get autoremove && \
+ apt-get clean && \
+ apt-get autoclean
+
+#Clean files
+RUN rm -rf /opt/airgeddon/imgs > /dev/null 2>&1 && \
+ rm -rf /opt/airgeddon/.github > /dev/null 2>&1 && \
+ rm -rf /opt/airgeddon/CONTRIBUTING.md > /dev/null 2>&1 && \
+ rm -rf /opt/airgeddon/pindb_checksum.txt > /dev/null 2>&1 && \
+ rm -rf /opt/airgeddon/Dockerfile > /dev/null 2>&1 && \
+ rm -rf /opt/airgeddon/binaries > /dev/null 2>&1 && \
+ rm -rf /opt/bully > /dev/null 2>&1 && \
+ rm -rf /opt/hashcat2.0 > /dev/null 2>&1 && \
+ rm -rf /tmp/* > /dev/null 2>&1
+
+#Expose port
+EXPOSE 3000
+
+#Entrypoint
+CMD ["bash", "-c", "/opt/airgeddon/airgeddon.sh"]
diff --git a/README.md b/README.md
index f8756dd3b..499c5b1ed 100644
--- a/README.md
+++ b/README.md
@@ -1,323 +1,82 @@
-
-
-
-
-# :satellite: airgeddon [![Version-shield]](CHANGELOG.md) [![Bash4.2-shield]](http://tldp.org/LDP/abs/html/bashver4.html#AEN21220) [![License-shield]](LICENSE.md) [![Paypal-shield]](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7ELM486P7XKKG) [![Bitcoin-shield]](https://blockchain.info/address/1AKnTXbomtwUzrm81FRzi5acSSXxGteGTH)
+# airgeddon [![Version-shield]](https://raw.githubusercontent.com/v1s1t0r1sh3r3/airgeddon/master/CHANGELOG.md) [![Bash4.2-shield]](http://tldp.org/LDP/abs/html/bashver4.html#AEN21220) [![License-shield]](https://raw.githubusercontent.com/v1s1t0r1sh3r3/airgeddon/master/LICENSE.md) [![Docker-shield]](https://hub.docker.com/r/v1s1t0r1sh3r3/airgeddon/) [![Paypal-shield]](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7ELM486P7XKKG) [![Bitcoin-shield]](https://blockchain.info/address/1AKnTXbomtwUzrm81FRzi5acSSXxGteGTH)
> This is a multi-use bash script for Linux systems to audit wireless networks.
![Banner]
-
- Table of Contents
-
-
-
----
-
-### Features
-
-
-- Interface mode switcher (Monitor-Managed) keeping selection even on interface name changing
-- DoS over wireless networks using different methods
-- Assisted Handshake file capturing
-- Cleaning and optimizing Handshake captured files
-- Offline password decrypting on WPA/WPA2 captured files (dictionary, bruteforce and rule based)
-- Evil Twin attacks (Rogue AP)
- - Only Rogue/Fake AP version to sniff using external sniffer (Hostapd + DHCP + DoS)
- - Simple integrated sniffing (Hostapd + DHCP + DoS + Ettercap)
- - Integrated sniffing, sslstrip (Hostapd + DHCP + DoS + Ettercap + Sslstrip)
- - Integrated sniffing, sslstrip2 and BeEF browser exploitation framework (Hostapd + DHCP + DoS + Bettercap + BeEF)
- - Captive portal with "DNS blackhole" to capture wifi passwords (Hostapd + DHCP + DoS + Dnsspoff + Lighttpd)
- - Optional MAC spoofing for all Evil Twin attacks
-- WPS features
- - WPS scanning (wash). Self parameterization to avoid *"bad fcs"* problem
- - Custom PIN association (bully and reaver)
- - Pixie Dust attacks (bully and reaver)
- - Bruteforce PIN attacks (bully and reaver)
- - Parameterizable timeouts
- - Known WPS PINs attack (bully and reaver), based on online PIN database with auto-update
- - Integration of the most common PIN generation algorithms
-- Compatibility with many Linux distributions (see [Requirements] section)
-- Easy targeting and selection in every section
-- Drag and drop files on console window for entering file paths
-- Dynamic screen resolution detection and windows auto-sizing for optimal viewing
-- Controlled Exit. Cleaning tasks and temp files. Option to keep monitor mode if desired
-- Multilanguage support and autodetect OS language feature (see [Supported Languages] section)
-- Help hints in every zone/menu for easy use
-- Auto-update. Script checks for newer version if possible
-
----
-
-### Requirements
-
-Bash **4.2** or later.
-
-Compatible with any Linux distribution that has installed the tools needed. The script checks for them at the beginning.
-
-> `airgeddon` is already included in some Linux distributions and repositories
-> - [Wifislax] 4.12, 64-1.0 or higher
-> - [BlackArch] 2017.01.28 or later
-> - [ArchStrike] repository
-
-
-
- Tested on these compatible Linux distributions
-
-
- - Kali 2.0, 2016.1, 2016.2 and arm versions (Raspberry Pi)
- - Wifislax 4.11.1, 4.12 and 64-1.0
- - Backbox 4.5.1 and 4.6
- - Parrot 2.2.1 to 3.4.1 and arm versions (Raspberry Pi)
- - BlackArch 2016.01.10 to 2017.01.28
- - Cyborg Hawk 1.1
- - Debian 7 (Wheezy) and 8 (Jessie)
- - Ubuntu/Xubuntu 15.10, 16.04 and 16.04.1
- - OpenSUSE Leap 42.1 and 42.2
- - CentOS 6 and 7
- - Gentoo 20160514 and 20160704
- - Fedora 24
- - Red Hat 7 (Maipo)
- - Arch 4.6.2-1 to 4.10.6-1
- - Raspbian 7 (Wheezy) and 8 (Jessie) (Raspberry Pi)
- - OpenMandriva LX3
-
-
-
-
-
-#### Essential tools ← The script does not work if you don't have installed all of them
-
- Command | Possible package name | ⋅ | Command | Possible package name
-:------------|:----------------------|:-------:|:------------|:----------------------
- ifconfig | net-tools | ⋅ | iwconfig | wireless-tools
- iw | iw | ⋅ | awk | awk \| gawk
- airmon-ng | aircrack-ng | ⋅ | airodump-ng | aircrack-ng
- aircrack-ng | aircrack-ng | ⋅ | xterm | xterm
-
-#### Optional tools ← Not necessary to work, only needed for some features
-
- Command | Possible package name | ⋅ | Command | Possible package name
-:------------|:-------------------------|:-------:|:---------|:-----------------------------------------------------
- wpaclean | aircrack-ng | ⋅ | ettercap | ettercap \| ettercap-text-only \| ettercap-graphical
- crunch | crunch | ⋅ | etterlog | ettercap \| ettercap-text-only \| ettercap-graphical
- aireplay-ng | aircrack-ng | ⋅ | sslstrip | sslstrip
- mdk3 | mdk3 | ⋅ | dhcpd | isc-dhcp-server \| dhcp-server \| dhcp
- hashcat | hashcat | ⋅ | dnsspoof | dsniff
- hostapd | hostapd | ⋅ | wash | reaver
- lighttpd | lighttpd | ⋅ | reaver | reaver
- iptables | iptables | ⋅ | bully | bully
- bettercap | bettercap | ⋅ | pixiewps | pixiewps
- beef | beef-xss \| beef-project | ⋅ | unbuffer | expect \| expect-dev
-
-##### Important tips about BeEF
-
- - The right software you must install is **BeEF** (Browser Exploitation Framework). Be careful, do not mistake it with **beef** (Flexible Brainfuck Interpreter). This package has the same name and executable file name on some distributions and can lead into confusion. Anyway, `airgeddon` is able to detect the issue and display a warning if needed. Here is a link to the right [BeEF installation's page].
- - If you are using a distribution which already has BeEF installed like Kali, BlackArch or Wifislax, there will be no problems. If you have manually installed BeEF, `airgeddon` is able to manage the integration asking for the path where it's installed, even modifying its own code in order to make updates-proof persistent changes.
-
-##### Important tips about hashcat
-
-`hashcat` is used to perform various attacks against captured files using the **CPU**.
-In order to execute `hashcat`, you need to install an **OpenCL** runtime compatible with your hardware.
-
-#### Update tools ← Not necessary to work, only used for auto-update
-
- Command | Possible package name
-:--------|:----------------------
- curl | curl
-
-#### Internal tools ← These are internally checked. Not necessary to work, good to have
-
- Command | Possible package name
-:---------|:---------------------------------------
- xdpyinfo | x11-utils \| xdpyinfo \| xorg-xdpyinfo
- ethtool | ethtool
- lspci | pciutils
- rfkill | rfkill
-
-It is highly recommended to have the internal tools installed. They improve functionality and performance. For example, `xdpyinfo` allows the script to detect the display resolution in order to print on windows in a better way (size and position).
-
-Of course, the script also uses many standard basic tools that are supposed to be included in any Linux distribution, so they are not checked (cp, rm, grep, pgrep, egrep, md5sum, uname, echo, hash, cat, sed, etc.).
-
-A command could be included in different packages, depending on the distribution.
-
---
-### Usage
-
-It is essential to run this script as **root**, otherwise `airgeddon` won't work properly.
-
-
- Getting Started
-
- - Clone the repository
-
- git clone https://github.com/v1s1t0r1sh3r3/airgeddon.git
-
- - Go to the newly created directory
-
- - Run it (remove sudo if you already have root permissions)
-
- sudo bash airgeddon.sh
-
-
-
-
-`airgeddon` should be launched with **bash** `bash /path/to/airgeddon.sh` and not with `sh` or any other kind of shell.
-
-If you launch the script using another shell, there will be *Syntax errors* and faulty results.
-Even with no initial errors, they will appear later. Always launch with **bash**!
-
----
-
-### Supported Languages
-
-![English][English] English
-![Spanish][Spanish] Spanish
-![French][French] French
-![Catalan][Catalan] Catalan
-![Portuguese][Portuguese] Portuguese
-![Russian][Russian] Russian
-![Greek][Greek] Greek
-
----
-
-### Known Incompatibilities
-
-- Incompatible with Mac OSX at the moment
- - *Bash version* ← it can be avoided by upgrading it using `brew` or whatever, this is not the real problem :smile:
- - *Aircrack suite* ← this suite does not support `airodump` and `aireplay` for OSX
- - *Wireless tools* ← `iwconfig` does not exist in OSX, so `airport` command cannot be used. It generates different outputs
-- Incompatible with OpenBSD and FreeBSD. They are Unix systems but they have some differences with Linux
- - *Bash* ← They have no bash. It can be installed, this is not the real problem again :sweat_smile:
- - *Wireless tools* ← `iwconfig` does not exist in these systems, they use `ifconfig` instead and it generates different outputs
-
----
-
-### Contributing
-
-- Translations into other languages
-- More distribution support compatibility
-- New features
-- More WPS pins for the database
-- Testing and feedback
-
-Read the [Contributing File] for more details on the process of project collaborating and on our code of conduct.
-
----
-
-### Changelog
-
-Read the [Changelog File] to review changes.
-
----
-
-### Disclaimer & License
-
-
-
-This script must be used for educational purposes and penetration testing only.
-Use it on your own networks or with the permission of the network's owner only.
-`airgeddon` staff is not responsible of its use in any case.
-
----
-
-### Acknowledgments
-
-
-[Kcdtv] for French translations, beta testing, suggestions about new features and support received since the beginning,
-**USUARIONUEVO** for helping me to improve the script, suggestions about new features and for the support received,
-**El padrino** and [cLn] for Catalan translations,
-[Luan] for Portuguese translations,
-[MiAl] for Russian translations,
-[xtonousou] for Greek translations, beta testing, suggestions, the help received fixing code warnings and other stuff,
-[OscarAkaElvis] for allowing me to own his body when I visit the earth.
-
-#### Hat tip to
-
-- The "Spanish pentesting crew"
-- The [Wifislax] staff
-- The [BlackArch] community
-- The forum people of [Seguridadwireless.net], [Wifi-libre.com] and [Lampiweb.com]
-- The [Hackware.ru] admins
-- All the people who helped building the online PIN database for WPS
-- Dominique Bongard for bringing to us the Pixie Dust attacks
-- Zhao Chunsheng and Stefan Viehböck for their wonderful algorithms
-- All the developers who made and designed the third-party tools that `airgeddon` uses
-
-#### Inspiration
-
-
-- [vk496] → Linset
-- MI1 → Airstorm
-- [MatToufoutu] → Ap-fucker
-- Coeman76 → Handshaker
-- Goyfilms → Goyscript
-- [Kcdtv] → WPSPin
-
-
-[Requirements]: #requirements
-[Supported Languages]: #supported-languages
-
-[Banner]: /imgs/banners/airgeddon_banner.png "We will conquer the earth!!"
-[English]: /imgs/flags/us.png "English"
-[Spanish]: /imgs/flags/es.png "Spanish"
-[French]: /imgs/flags/fr.png "French"
-[Catalan]: /imgs/flags/cat.png "Catalan"
-[Portuguese]: /imgs/flags/pt.png "Portuguese"
-[Russian]: /imgs/flags/ru.png "Russian"
-[Greek]: /imgs/flags/gr.png "Greek"
-
-[Changelog File]: CHANGELOG.md
-[Contributing File]: CONTRIBUTING.md
-[License File]: LICENSE.md
-
-[Wifislax]: http://www.wifislax.com
-[BlackArch]: https://blackarch.org
-[ArchStrike]: https://archstrike.org/wiki
-[BeEF installation's page]: https://github.com/beefproject/beef/wiki/Installation
-[Seguridadwireless.net]: http://foro.seguridadwireless.net
-[Wifi-libre.com]: https://www.wifi-libre.com
-[Lampiweb.com]: http://lampiweb.com/foro
-[Hackware.ru]: https://hackware.ru
-
-[vk496]: https://github.com/vk496
-[MatToufoutu]: https://github.com/mattoufoutu
-[Kcdtv]: https://github.com/kcdtv
-[cLn]: https://github.com/cLn73
-[Luan]: https://github.com/Luan7805
-[MiAl]: https://github.com/Mi-Al
-[xtonousou]: https://github.com/xtonousou
-[OscarAkaElvis]: https://github.com/OscarAkaElvis
-
-[Version-shield]: https://img.shields.io/badge/version-6.12-blue.svg?style=flat-square&colorA=273133&colorB=0093ee "Latest version"
+All the needed info about how to install|use|enjoy `airgeddon` is present at [Github's Wiki].
+
+- *I. Content & Features*
+ - [Home]
+ - [Features]
+
+
+- *II. Requirements*
+ - [Requirements]
+ - [Compatibility]
+ - [Essential Tools]
+ - [Optional Tools]
+ - [BeEF Tips]
+ - [Hashcat Tips]
+ - [Update Tools]
+ - [Internal Tools]
+ - [Known incompatibilities]
+
+
+- *III. Getting started*
+ - [Installation & Usage]
+ - [Docker]
+ - [Linux]
+ - [Mac OSX]
+ - [Windows]
+ - [Other Sources]
+
+
+- *IV. Project & Development*
+ - [Supported Languages]
+ - [Contributing]
+ - [Changelog]
+ - [Disclaimer & License]
+ - [Contact]
+
+
+- *V. Acknowledgments & References*
+ - [Hat Tip To]
+ - [Inspiration]
+
+[Banner]: https://raw.githubusercontent.com/v1s1t0r1sh3r3/airgeddon/master/imgs/banners/airgeddon_banner.png "We will conquer the earth!!"
+[Github's Wiki]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki
+
+[Home]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki
+[Features]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Features
+[Requirements]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Requirements
+[Compatibility]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Compatibility
+[Essential Tools]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Essential%20Tools
+[Optional Tools]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Optional%20Tools
+[BeEF Tips]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/BeEF%20Tips
+[Hashcat Tips]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Hashcat%20Tips
+[Update Tools]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Update%20Tools
+[Internal Tools]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Internal%20Tools
+[Known incompatibilities]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Known%20incompatibilities
+[Installation & Usage]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Installation%20&%20Usage
+[Docker]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker
+[Linux]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux
+[Mac OSX]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Mac%20OSX
+[Windows]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Windows
+[Other Sources]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Other%20Sources
+[Supported Languages]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Supported%20Languages
+[Contributing]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Contributing
+[Changelog]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Changelog
+[Disclaimer & License]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Disclaimer%20&%20License
+[Contact]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Contact
+[Hat Tip To]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Hat%20Tip%20To
+[Inspiration]: https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Inspiration
+
+[Version-shield]: https://img.shields.io/badge/version-6.2-blue.svg?style=flat-square&colorA=273133&colorB=0093ee "Latest version"
[Bash4.2-shield]: https://img.shields.io/badge/bash-4.2%2B-blue.svg?style=flat-square&colorA=273133&colorB=00db00 "Bash 4.2 or later"
[License-shield]: https://img.shields.io/badge/license-GPL%20v3%2B-blue.svg?style=flat-square&colorA=273133&colorB=bd0000 "GPL v3+"
-[Paypal-shield]: https://img.shields.io/badge/donate-paypal-blue.svg?style=flat-square&colorA=002f86&colorB=009cde "Show me the money!"
+[Docker-shield]: https://img.shields.io/docker/automated/v1s1t0r1sh3r3/airgeddon.svg?style=flat-square&colorA=273133&colorB=f9ff5a "Docker rules!"
+[Paypal-shield]: https://img.shields.io/badge/donate-paypal-blue.svg?style=flat-square&colorA=273133&colorB=b008bb "Show me the money!"
[Bitcoin-shield]: https://img.shields.io/badge/donate-bitcoin-blue.svg?style=flat-square&colorA=273133&colorB=f7931a "Show me the money!"
diff --git a/airgeddon.sh b/airgeddon.sh
index 802e616a7..61423eb36 100644
--- a/airgeddon.sh
+++ b/airgeddon.sh
@@ -2,8 +2,8 @@
#Title........: airgeddon.sh
#Description..: This is a multi-use bash script for Linux systems to audit wireless networks.
#Author.......: v1s1t0r
-#Date.........: 20170324
-#Version......: 6.12
+#Date.........: 20170408
+#Version......: 6.2
#Usage........: bash airgeddon.sh
#Bash Version.: 4.2 or later
@@ -104,8 +104,8 @@ declare -A possible_alias_names=(
)
#General vars
-airgeddon_version="6.12"
-language_strings_expected_version="6.12-1"
+airgeddon_version="6.2"
+language_strings_expected_version="6.2-1"
standardhandshake_filename="handshake-01.cap"
tmpdir="/tmp/"
osversionfile_dir="/etc/"
@@ -119,6 +119,10 @@ standard_resolution="1024x768"
curl_404_error="404: Not Found"
language_strings_file="language_strings.sh"
+#Docker vars
+docker_based_distro="Kali"
+docker_io_dir="/io"
+
#WPS vars
minimum_reaver_pixiewps_version="1.5.2"
minimum_bully_pixiewps_version="1.1"
@@ -141,6 +145,7 @@ urlscript_directlink="https://raw.githubusercontent.com/${github_user}/${github_
urlscript_pins_dbfile="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${known_pins_dbfile}"
urlscript_pins_dbfile_checksum="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${pins_dbfile_checksum}"
urlscript_language_strings_file="https://raw.githubusercontent.com/${github_user}/${github_repository}/${branch}/${language_strings_file}"
+urlgithub_wiki="https://github.com/${github_user}/${github_repository}/wiki"
host_to_check_internet="github.com"
mail="v1s1t0r.1s.h3r3@gmail.com"
author="v1s1t0r"
@@ -3350,7 +3355,7 @@ function manage_hashcat_pot() {
ask_yesno 235
if [ ${yesno} = "y" ]; then
- hashcat_potpath=$(env | grep ^HOME | awk -F = '{print $2}')
+ hashcat_potpath="${default_save_path}"
lastcharhashcat_potpath=${hashcat_potpath: -1}
if [ "${lastcharhashcat_potpath}" != "/" ]; then
hashcat_potpath="${hashcat_potpath}/"
@@ -3380,7 +3385,7 @@ function manage_ettercap_log() {
ask_yesno 302
if [ ${yesno} = "y" ]; then
ettercap_log=1
- default_ettercap_logpath=$(env | grep ^HOME | awk -F = '{print $2}')
+ default_ettercap_logpath="${default_save_path}"
lastcharettercaplogpath=${default_ettercap_logpath: -1}
if [ "${lastcharettercaplogpath}" != "/" ]; then
ettercap_logpath="${default_ettercap_logpath}/"
@@ -3405,7 +3410,7 @@ function manage_bettercap_log() {
ask_yesno 302
if [ ${yesno} = "y" ]; then
bettercap_log=1
- default_bettercap_logpath=$(env | grep ^HOME | awk -F = '{print $2}')
+ default_bettercap_logpath="${default_save_path}"
lastcharbettercaplogpath=${default_bettercap_logpath: -1}
if [ "${lastcharbettercaplogpath}" != "/" ]; then
bettercap_logpath="${default_bettercap_logpath}/"
@@ -3426,7 +3431,7 @@ function manage_captive_portal_log() {
debug_print
- default_et_captive_portal_logpath=$(env | grep ^HOME | awk -F = '{print $2}')
+ default_et_captive_portal_logpath="${default_save_path}"
lastcharetcaptiveportallogpath=${default_et_captive_portal_logpath: -1}
if [ "${lastcharetcaptiveportallogpath}" != "/" ]; then
et_captive_portal_logpath="${default_et_captive_portal_logpath}/"
@@ -5723,7 +5728,7 @@ function capture_handshake_evil_twin() {
kill "${processidcapture}" &> /dev/null
if [ "${handshake_captured}" = "y" ]; then
- handshakepath=$(env | grep ^HOME | awk -F = '{print $2}')
+ handshakepath="${default_save_path}"
lastcharhandshakepath=${handshakepath: -1}
if [ "${lastcharhandshakepath}" != "/" ]; then
handshakepath="${handshakepath}/"
@@ -5974,7 +5979,7 @@ function attack_handshake_menu() {
kill "${processidcapture}" &> /dev/null
if [ "${handshake_captured}" = "y" ]; then
- handshakepath=$(env | grep ^HOME | awk -F = '{print $2}')
+ handshakepath="${default_save_path}"
lastcharhandshakepath=${handshakepath: -1}
if [ "${lastcharhandshakepath}" != "/" ]; then
handshakepath="${handshakepath}/"
@@ -6601,6 +6606,13 @@ function et_prerequisites() {
return_to_et_main_menu=1
return_to_et_main_menu_from_beef=1
+
+ if [ "${is_docker}" -eq 1 ]; then
+ echo
+ language_strings "${language}" 420 "pink"
+ language_strings "${language}" 115 "read"
+ fi
+
echo
language_strings "${language}" 296 "yellow"
language_strings "${language}" 115 "read"
@@ -6898,6 +6910,7 @@ function credits_option() {
echo
language_strings "${language}" 85 "pink"
language_strings "${language}" 107 "pink"
+ language_strings "${language}" 421 "pink"
echo
language_strings "${language}" 115 "read"
}
@@ -7145,7 +7158,7 @@ function iwconfig_fix() {
debug_print
- iwversion=$(iwconfig --version | grep version | awk '{print $4}')
+ iwversion=$(iwconfig --version 2> /dev/null | grep version | awk '{print $4}')
iwcmdfix=""
if [ "${iwversion}" -lt 30 ]; then
iwcmdfix=" 2> /dev/null | grep Mode: "
@@ -7255,6 +7268,18 @@ function set_script_folder_and_name() {
fi
}
+#Set the default directory for saving files
+function set_default_save_path() {
+
+ debug_print
+
+ if [ "${is_docker}" -eq 1 ]; then
+ default_save_path="${docker_io_dir}"
+ else
+ default_save_path=$(env | grep ^HOME | awk -F = '{print $2}')
+ fi
+}
+
#Check if pins database file exist and try to download the new one if proceed
function check_pins_database_file() {
@@ -7649,7 +7674,11 @@ function general_checkings() {
non_linux_os_check
echo -e "${yellow_color}${distro}${normal_color}"
else
- echo -e "${yellow_color}${distro} Linux${normal_color}"
+ if [ "${is_docker}" -eq 1 ]; then
+ echo -e "${yellow_color}${docker_based_distro} Linux ${pink_color}(Docker)${normal_color}"
+ else
+ echo -e "${yellow_color}${distro} Linux${normal_color}"
+ fi
fi
check_compatibility
@@ -7822,6 +7851,12 @@ function check_update_tools() {
language_strings "${language}" 225 "yellow"
language_strings "${language}" 115 "read"
fi
+ else
+ if [ "${is_docker}" -eq 1 ]; then
+ echo
+ language_strings "${language}" 422 "blue"
+ language_strings "${language}" 115 "read"
+ fi
fi
}
@@ -7930,6 +7965,7 @@ function initialize_script_settings() {
debug_print
+ is_docker=0
exit_code=0
check_kill_needed=0
nm_processes_killed=0
@@ -8062,6 +8098,16 @@ function recalculate_windows_sizes() {
set_windows_sizes
}
+#Detect if airgeddon is working inside a docker container
+function docker_detection() {
+
+ debug_print
+
+ if [ -f /.dockerenv ]; then
+ is_docker=1
+ fi
+}
+
#Script starting point
function welcome() {
@@ -8070,6 +8116,8 @@ function welcome() {
clear
current_menu="pre_main_menu"
initialize_script_settings
+ docker_detection
+ set_default_save_path
if [ ${auto_change_language} -eq 1 ]; then
autodetect_language
diff --git a/binaries/kali/airgeddon_6.12-1_all.deb b/binaries/kali/airgeddon_6.12-1_all.deb
new file mode 100644
index 000000000..f269f6064
Binary files /dev/null and b/binaries/kali/airgeddon_6.12-1_all.deb differ
diff --git a/binaries/kali/legacy/airgeddon_4.31-1_all.deb b/binaries/kali/legacy/airgeddon_4.31-1_all.deb
new file mode 100644
index 000000000..abe76774d
Binary files /dev/null and b/binaries/kali/legacy/airgeddon_4.31-1_all.deb differ
diff --git a/imgs/banners/airgeddon_docker.png b/imgs/banners/airgeddon_docker.png
new file mode 100644
index 000000000..adb8ae2a8
Binary files /dev/null and b/imgs/banners/airgeddon_docker.png differ
diff --git a/imgs/wiki/airgeddon_irc.png b/imgs/wiki/airgeddon_irc.png
new file mode 100644
index 000000000..98af0a631
Binary files /dev/null and b/imgs/wiki/airgeddon_irc.png differ
diff --git a/imgs/wiki/alien_tux.png b/imgs/wiki/alien_tux.png
new file mode 100644
index 000000000..1832a9422
Binary files /dev/null and b/imgs/wiki/alien_tux.png differ
diff --git a/imgs/wiki/apple_airgeddon_docker.png b/imgs/wiki/apple_airgeddon_docker.png
new file mode 100644
index 000000000..01c89d157
Binary files /dev/null and b/imgs/wiki/apple_airgeddon_docker.png differ
diff --git a/imgs/wiki/archstrike.png b/imgs/wiki/archstrike.png
new file mode 100644
index 000000000..f649f2b23
Binary files /dev/null and b/imgs/wiki/archstrike.png differ
diff --git a/imgs/wiki/beef_logo.png b/imgs/wiki/beef_logo.png
new file mode 100644
index 000000000..24a718216
Binary files /dev/null and b/imgs/wiki/beef_logo.png differ
diff --git a/imgs/wiki/blackarch_linux.png b/imgs/wiki/blackarch_linux.png
new file mode 100644
index 000000000..55bb176e2
Binary files /dev/null and b/imgs/wiki/blackarch_linux.png differ
diff --git a/imgs/wiki/hashcat_logo.png b/imgs/wiki/hashcat_logo.png
new file mode 100644
index 000000000..23bb99a80
Binary files /dev/null and b/imgs/wiki/hashcat_logo.png differ
diff --git a/imgs/wiki/npm.png b/imgs/wiki/npm.png
new file mode 100644
index 000000000..44044e5ae
Binary files /dev/null and b/imgs/wiki/npm.png differ
diff --git a/imgs/wiki/wifislax_linux.png b/imgs/wiki/wifislax_linux.png
new file mode 100644
index 000000000..5b11da8af
Binary files /dev/null and b/imgs/wiki/wifislax_linux.png differ
diff --git a/imgs/wiki/wiki_footer.png b/imgs/wiki/wiki_footer.png
new file mode 100644
index 000000000..345060954
Binary files /dev/null and b/imgs/wiki/wiki_footer.png differ
diff --git a/imgs/wiki/x11_preferences_xquartz.png b/imgs/wiki/x11_preferences_xquartz.png
new file mode 100644
index 000000000..f4f589d2b
Binary files /dev/null and b/imgs/wiki/x11_preferences_xquartz.png differ
diff --git a/imgs/wiki/xming1.png b/imgs/wiki/xming1.png
new file mode 100644
index 000000000..c513cfa98
Binary files /dev/null and b/imgs/wiki/xming1.png differ
diff --git a/imgs/wiki/xming2.png b/imgs/wiki/xming2.png
new file mode 100644
index 000000000..fec19efe1
Binary files /dev/null and b/imgs/wiki/xming2.png differ
diff --git a/imgs/wiki/xming3.png b/imgs/wiki/xming3.png
new file mode 100644
index 000000000..1478f4036
Binary files /dev/null and b/imgs/wiki/xming3.png differ
diff --git a/language_strings.sh b/language_strings.sh
index f200d5427..c1957a585 100644
--- a/language_strings.sh
+++ b/language_strings.sh
@@ -2,7 +2,7 @@
#Title........: language_strings.sh
#Description..: All the translated strings that airgeddon uses are located here.
#Author.......: v1s1t0r
-#Date.........: 20170403
+#Date.........: 20170408
#Bash Version.: 4.2 or later
#Set language_strings file version
@@ -11,7 +11,7 @@ function set_language_strings_version() {
debug_print
- language_strings_version="6.12-1"
+ language_strings_version="6.2-1"
}
#Set different language text strings
@@ -3656,6 +3656,30 @@ function language_strings() {
arr["RUSSIAN",419]="Вы хотите подменить свой MAC-адрес во время этой атаки? ${normal_color}[y/n]"
arr["GREEK",419]="Θέλετε να κρύψετε την αληθινή διεύθυνση MAC, δημιουργώντας μία ψεύτικη κατά την διάρκεια αυτής της επίθεσης; ${normal_color}[y/n]"
+ arr["ENGLISH",420]="It has been detected that you are running airgeddon inside a Docker container. During this attack hostapd is used to create a fake AP. This component often conflicts with network-manager. From inside the container, airgeddon can't handle it. If you have network-manager installed on your host machine, close it or kill the conflicting processes or you'll get an error. For more information, see the Docker section of the Wiki: ${normal_color} ${urlgithub_wiki}/Docker"
+ arr["SPANISH",420]="Se ha detectado que estás ejecutando airgeddon en un contenedor de Docker. En este ataque se utiliza hostapd para crear un falso AP. Este componente suele dar conflicto con network-manager. Desde el contenedor, airgeddon no puede gestionarlo. Si tienes network-manager instalado en tu máquina host, ciérralo o mata los procesos en conflicto u obtendrás un error. Para más información consulta la sección Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker"
+ arr["FRENCH",420]="${pending_of_translation} Nous avons détecté que vous utilisez airgeddon un conteneur Docker. Dans ce hostapd d'attaque est utilisé pour créer un point d'accès faux. Cette composante a tendance à entrer en conflit avec network-manager. Du récipient, airgeddon ne peut pas le gérer. Si vous avez network-manager installé sur votre machine host, fermer ou tuer des processus contradictoires ou d'obtenir une erreur. Pour plus d'informations, voir la section Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker"
+ arr["CATALAN",420]="${pending_of_translation} S'ha detectat que estàs executant airgeddon en un contenidor de Docker. En aquest atac s'utilitza hostapd per crear un fals AP. Aquest component sol donar conflicte amb network-manager. Des del contenidor, airgeddon no pot gestionar-lo. Si tens network-manager instal·lat al teu màquina host, tanca'l o mata els processos en conflicte u obtindràs un error. Per a més informació consulta la secció Docker del Wiki: ${normal_color}${urlgithub_wiki}/Docker"
+ arr["PORTUGUESE",420]="${pending_of_translation} Detectamos que você está executando airgeddon um recipiente Docker. Neste ataque é usado hostapd para criar um AP falso. Este componente tende a entrar em conflito com network-manager. Do recipiente, airgeddon não pode controlá-lo. Se você tem network-manager instalado em sua máquina host, fechá-lo ou matar processos conflitantes ou obter um erro. Para mais informações consulte a secção Docker Wiki: ${normal_color}${urlgithub_wiki}/Docker"
+ arr["RUSSIAN",420]="${pending_of_translation} Было обнаружено, что вы запускаете airgeddon внутри контейнера Docker. Во время этой атаки hostapd используется для создания поддельной AP. Этот компонент часто конфликтует с network-manager. Изнутри контейнера airgeddon не может справиться с этим. Если на вашем хост-компьютере установлен network-manager, закройте его или уберите конфликтующие процессы, иначе вы получите сообщение об ошибке. Для получения дополнительной информации см. Раздел Docker в Wiki: ${normal_color}${urlgithub_wiki}/Docker"
+ arr["GREEK",420]="${pending_of_translation} Έχει εντοπιστεί ότι τρέχετε airgeddon μέσα σε ένα δοχείο Docker. Κατά τη διάρκεια αυτής της επίθεσης hostapd χρησιμοποιείται για να δημιουργήσει ένα ψεύτικο AP. Αυτό το στοιχείο έρχεται συχνά σε σύγκρουση με το network-manager. Από το εσωτερικό του δοχείου, airgeddon δεν μπορεί να το χειριστεί. Αν έχετε network-manager εγκατεστημένο στον υπολογιστή σας φιλοξενήσει, να κλείσει ή να σκοτώσει τις αντικρουόμενες διαδικασίες ή θα πάρετε ένα λάθος. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Docker του Wiki: ${normal_color}${urlgithub_wiki}/Docker"
+
+ arr["ENGLISH",421]="Doubts? Visit our Wiki: ${normal_color}${urlgithub_wiki}"
+ arr["SPANISH",421]="¿Dudas? visita nuestro Wiki: ${normal_color}${urlgithub_wiki}"
+ arr["FRENCH",421]="${pending_of_translation} Des questions? visitez notre Wiki: ${normal_color}${urlgithub_wiki}"
+ arr["CATALAN",421]="${pending_of_translation} Dubtes? visita el nostre Wiki: ${normal_color}${urlgithub_wiki}"
+ arr["PORTUGUESE",421]="${pending_of_translation} Perguntas? visite nosso Wiki: ${normal_color}${urlgithub_wiki}"
+ arr["RUSSIAN",421]="${pending_of_translation} Вопросы? посетить наш Wiki: ${normal_color}${urlgithub_wiki}"
+ arr["GREEK",421]="${pending_of_translation} Ερωτήσεις; επισκεφθείτε Wiki μας: ${normal_color}${urlgithub_wiki}"
+
+ arr["ENGLISH",422]="The automatic update has been disabled when airgeddon is running in a Docker container. If you want to update it, download again the image tagged as \"latest\""
+ arr["SPANISH",422]="La actualización automática se ha desactivado cuando airgeddon se ejecuta en un contenedor de Docker. Si deseas actualizarlo descarga de nuevo la imagen con tag \"latest\""
+ arr["FRENCH",422]="${pending_of_translation} Mise à jour automatique est désactivée lorsque airgeddon fonctionne sur un conteneur Docker. Si vous voulez le mettre à jour télécharger à nouveau tag image \"latest\""
+ arr["CATALAN",422]="${pending_of_translation} L'actualització automàtica s'ha desactivat quan airgeddon s'executa en un contenidor de Docker. Si vols actualitzar-lo descàrrega de nou la imatge amb tag \"latest\""
+ arr["PORTUGUESE",422]="${pending_of_translation} A atualização automática é desativada quando airgeddon é executado em um recipiente Docker. Se você deseja fazer o download novamente atualizar a tag de imagem \"latest\""
+ arr["RUSSIAN",422]="${pending_of_translation} Автоматическое обновление отключено, когда airgeddon работает на контейнере Докер. Если вы хотите загрузить снова обновить изображение тега \"latest\""
+ arr["GREEK",422]="${pending_of_translation} Η αυτόματη ενημέρωση είναι απενεργοποιημένη όταν airgeddon τρέχει σε ένα δοχείο Docker. Αν θέλετε να κατεβάσετε ξανά ενημερώσετε την ετικέτα εικόνας \"latest\""
+
case "${3}" in
"yellow")
interrupt_checkpoint "${2}" "${3}"