Added setup.py. Run: python -m wifite
As asked by @blshkv in #102. Running: `sudo python -m wifite` Install: `sudo python setup.py install` These steps (and "uninstalling") are mentioned in the README.
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -5,3 +5,7 @@ hs/
|
||||
*.bak
|
||||
.idea/
|
||||
cracked.txt
|
||||
MANIFEST
|
||||
dist/
|
||||
build/
|
||||
files.txt
|
||||
|
||||
2
MANIFEST.in
Normal file
2
MANIFEST.in
Normal file
@@ -0,0 +1,2 @@
|
||||
include README.md
|
||||
include wordlist-top4800-probable.txt
|
||||
25
README.md
25
README.md
@@ -5,6 +5,31 @@ A complete re-write of [`wifite`](https://github.com/derv82/wifite), a Python sc
|
||||
|
||||
Wifite runs existing wireless-auditing tools for you. Stop memorizing command arguments & switches!
|
||||
|
||||
This version is compatible with both `python2` and `python3`.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
From the root directory of this package:
|
||||
|
||||
Run *wifite* using: `python -m wifite`
|
||||
|
||||
To install onto your computer (so you can just run `wifite` from any terminal), run:
|
||||
|
||||
```bash
|
||||
sudo python setup.py install
|
||||
```
|
||||
|
||||
----
|
||||
|
||||
Note: Uninstalling is [not as easy](https://stackoverflow.com/questions/1550226/python-setup-py-uninstall#1550235). The only way to uninstall is to record the files installed by the above command and *remove* those files:
|
||||
|
||||
```bash
|
||||
sudo python setup.py install --record files.txt
|
||||
cat files.txt | xargs sudo rm -f
|
||||
sudo rm -f files.txt
|
||||
```
|
||||
|
||||
What's new in Wifite2?
|
||||
----------------------
|
||||
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from wifite import wifite
|
||||
wifite.entry_point()
|
||||
4
bin/wifite
Executable file
4
bin/wifite
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from wifite import __main__
|
||||
__main__.entry_point()
|
||||
40
setup.py
Normal file
40
setup.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from distutils.core import setup
|
||||
|
||||
from wifite.config import Configuration
|
||||
|
||||
setup(
|
||||
name='wifite',
|
||||
#version='2.1.9',
|
||||
version=Configuration.version,
|
||||
author='derv82',
|
||||
author_email='derv82@gmail.com',
|
||||
url='https://github.com/derv82/wifite2',
|
||||
packages=[
|
||||
'wifite',
|
||||
'wifite/attack',
|
||||
'wifite/model',
|
||||
'wifite/tools',
|
||||
'wifite/util',
|
||||
],
|
||||
data_files=[
|
||||
('', ['wordlist-top4800-probable.txt'])
|
||||
],
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'wifite = wifite.wifite:entry_point'
|
||||
]
|
||||
},
|
||||
license='GNU GPLv2',
|
||||
scripts=['bin/wifite'],
|
||||
description='Wireless Network Auditor for Linux',
|
||||
#long_description=open('README.md').read(),
|
||||
long_description='''Wireless Network Auditor for Linux.
|
||||
|
||||
Cracks WEP, WPA, and WPS encrypted networks.
|
||||
|
||||
Depends on Aircrack-ng Suite, Tshark (from Wireshark), and various other external tools.''',
|
||||
classifiers = [
|
||||
"Programming Language :: Python :: 2.7",
|
||||
"Programming Language :: Python :: 3"
|
||||
]
|
||||
)
|
||||
105
wifite/__main__.py
Executable file
105
wifite/__main__.py
Executable file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
try:
|
||||
from .config import Configuration
|
||||
except (ValueError, ImportError) as e:
|
||||
raise Exception('You may need to run wifite from the root directory (which includes README.md)', e)
|
||||
|
||||
from .util.color import Color
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
class Wifite(object):
|
||||
|
||||
def __init__(self):
|
||||
'''
|
||||
Initializes Wifite. Checks for root permissions and ensures dependencies are installed.
|
||||
'''
|
||||
|
||||
self.print_banner()
|
||||
|
||||
Configuration.initialize(load_interface=False)
|
||||
|
||||
if os.getuid() != 0:
|
||||
Color.pl('{!} {R}error: {O}wifite{R} must be run as {O}root{W}')
|
||||
Color.pl('{!} {R}re-run with {O}sudo{W}')
|
||||
Configuration.exit_gracefully(0)
|
||||
|
||||
from .tools.dependency import Dependency
|
||||
Dependency.run_dependency_check()
|
||||
|
||||
|
||||
def start(self):
|
||||
'''
|
||||
Starts target-scan + attack loop, or launches utilities dpeending on user input.
|
||||
'''
|
||||
from .model.result import CrackResult
|
||||
from .model.handshake import Handshake
|
||||
from .util.crack import CrackHelper
|
||||
|
||||
if Configuration.show_cracked:
|
||||
CrackResult.display()
|
||||
|
||||
elif Configuration.check_handshake:
|
||||
Handshake.check()
|
||||
|
||||
elif Configuration.crack_handshake:
|
||||
CrackHelper.run()
|
||||
|
||||
else:
|
||||
Configuration.get_monitor_mode_interface()
|
||||
self.scan_and_attack()
|
||||
|
||||
|
||||
def print_banner(self):
|
||||
'''Displays ASCII art of the highest caliber.'''
|
||||
Color.pl(r'{G} . {GR}{D} {W}{G} . {W}')
|
||||
Color.pl(r'{G}.´ · .{GR}{D} {W}{G}. · `. {G}wifite {D}%s{W}' % Configuration.version)
|
||||
Color.pl(r'{G}: : : {GR}{D} (¯) {W}{G} : : : {W}{D}automated wireless auditor{W}')
|
||||
Color.pl(r'{G}`. · `{GR}{D} /¯\ {W}{G}´ · .´ {C}{D}https://github.com/derv82/wifite2{W}')
|
||||
Color.pl(r'{G} ` {GR}{D}/¯¯¯\{W}{G} ´ {W}')
|
||||
Color.pl('')
|
||||
|
||||
|
||||
def scan_and_attack(self):
|
||||
'''
|
||||
1) Scans for targets, asks user to select targets
|
||||
2) Attacks each target
|
||||
'''
|
||||
from .util.scanner import Scanner
|
||||
from .attack.all import AttackAll
|
||||
|
||||
Color.pl('')
|
||||
|
||||
# Scan
|
||||
s = Scanner()
|
||||
targets = s.select_targets()
|
||||
|
||||
# Attack
|
||||
attacked_targets = AttackAll.attack_multiple(targets)
|
||||
|
||||
Color.pl('{+} Finished attacking {C}%d{W} target(s), exiting' % attacked_targets)
|
||||
|
||||
|
||||
##############################################################
|
||||
|
||||
|
||||
def entry_point():
|
||||
try:
|
||||
wifite = Wifite()
|
||||
wifite.start()
|
||||
except Exception as e:
|
||||
Color.pexception(e)
|
||||
Color.pl('\n{!} {R}Exiting{W}\n')
|
||||
|
||||
except KeyboardInterrupt:
|
||||
Color.pl('\n{!} {O}interrupted, shutting down...{W}')
|
||||
|
||||
Configuration.exit_gracefully(0)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
entry_point()
|
||||
Reference in New Issue
Block a user