def start(self, disable_karma=False): # type: () -> None """Start the softAP.""" # create the configuration for roguehostapd hostapd_config = { "ssid": self.essid, "interface": self.interface, "channel": self.channel, "deny_macs": self.deny_mac_addrs, } if self.presharedkey: hostapd_config['wpa2password'] = self.presharedkey self.hostapd_object = apctrl.Hostapd() if not self.force_hostapd: try: # Enable KARMA attack if needed if not disable_karma: hostapd_config["karma_enable"] = 1 # Enable WPSPBC KARMA attack hostapd_config["wpspbc"] = True hostapd_options = { 'mute': True, 'timestamp': False, "eloop_term_disable": True } self.hostapd_object.start(hostapd_config, hostapd_options) except KeyboardInterrupt: raise Exception except BaseException: print( "[{}!{}] Roguehostapd is not installed in the system! Please install" " roguehostapd manually (https://github.com/wifiphisher/roguehostapd)" " and rerun the script. Otherwise, you can run the tool with the" " --force-hostapd option to use hostapd but please note that using" " Wifiphisher with hostapd instead of roguehostapd will turn off many" " significant features of the tool.".format( constants.R, constants.W)) # just raise exception when hostapd is not installed raise Exception else: # use the hostapd on the users' system self.hostapd_object.create_hostapd_conf_file(hostapd_config, {}) try: self.hostapd_object = subprocess.Popen( ['hostapd', hostapdconfig.ROGUEHOSTAPD_RUNTIME_CONFIGPATH], stdout=constants.DN, stderr=constants.DN) except OSError: print( "[{}!{}] hostapd is not installed in the system! Please download it" " using your favorite package manager (e.g. apt-get install hostapd) and " "rerun the script.".format(constants.R, constants.W)) # just raise exception when hostapd is not installed raise Exception time.sleep(2) if self.hostapd_object.poll() is not None: print("[{}!{}] hostapd failed to lunch!".format( constants.R, constants.W)) raise Exception
def run(): """ Run the hostapd """ args = parse_args() check_args(args) hostapd_dict, options = get_configuration_dicts(vars(args)) options['eloop_term_disable'] = True hostapd_obj = apctrl.Hostapd() hostapd_obj.start(hostapd_dict, options) while True: try: time.sleep(1) except KeyboardInterrupt: hostapd_obj.stop() break