From 42781dedcc6c6181ce67311fa4a0bf83bd7b6fa0 Mon Sep 17 00:00:00 2001 From: derv82 Date: Sun, 15 Apr 2018 23:10:47 -0400 Subject: [PATCH] Added Airmon-ng test. --- tests/test_Airmon.py | 24 ++++++++++++++++++++++++ wifite/tools/airmon.py | 25 +++++++++++++++---------- 2 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 tests/test_Airmon.py diff --git a/tests/test_Airmon.py b/tests/test_Airmon.py new file mode 100644 index 0000000..0f3c1a9 --- /dev/null +++ b/tests/test_Airmon.py @@ -0,0 +1,24 @@ +#!/usr/bin/python2.7 +# -*- coding: utf-8 -*- + +import sys +sys.path.insert(0, '..') + +from wifite.tools.airmon import Airmon + +import unittest + +class TestAirmon(unittest.TestCase): + def test_airmon_start(self): + # From https://github.com/derv82/wifite2/issues/67 + stdout = ''' +PHY Interface Driver Chipset + +phy0 wlan0 iwlwifi Intel Corporation Centrino Ultimate-N 6300 (rev 3e) + + (mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon) + (mac80211 station mode vif disabled for [phy0]wlan0) +''' + mon_iface = Airmon._parse_airmon_start(stdout) + assert mon_iface == 'wlan0mon', 'Expected monitor-mode interface to be "wlan0mon" but got "{}"'.format(mon_iface) + diff --git a/wifite/tools/airmon.py b/wifite/tools/airmon.py index feb3bed..e6002ca 100755 --- a/wifite/tools/airmon.py +++ b/wifite/tools/airmon.py @@ -101,16 +101,7 @@ class Airmon(object): Color.p("{+} enabling {G}monitor mode{W} on {C}%s{W}... " % iface) (out,err) = Process.call('airmon-ng start %s' % iface) - # Find the interface put into monitor mode (if any) - mon_iface = None - for line in out.split('\n'): - if 'monitor mode' in line and 'enabled' in line and ' on ' in line: - mon_iface = line.split(' on ')[1] - if ']' in mon_iface: - mon_iface = mon_iface.split(']')[1] - if ')' in mon_iface: - mon_iface = mon_iface.split(')')[0] - break + mon_iface = Airmon._parse_airmon_start(out) if mon_iface is None: # Airmon did not enable monitor mode on an interface @@ -138,6 +129,20 @@ class Airmon(object): return mon_iface + @staticmethod + def _parse_airmon_start(stdout): + # Find the interface put into monitor mode (if any) + mon_iface = None + for line in stdout.split('\n'): + if 'monitor mode' in line and 'enabled' in line and ' on ' in line: + mon_iface = line.split(' on ')[1] + if ']' in mon_iface: + mon_iface = mon_iface.split(']')[1] + if ')' in mon_iface: + mon_iface = mon_iface.split(')')[0] + break + return mon_iface + @staticmethod def stop(iface):