Skip to content

Instantly share code, notes, and snippets.

@Deadlyelder
Forked from FiloSottile/clean-wifi.sh
Created April 24, 2017 07:18
Show Gist options
  • Save Deadlyelder/2a8d12e97b1688ef87383da7b175780a to your computer and use it in GitHub Desktop.
Save Deadlyelder/2a8d12e97b1688ef87383da7b175780a to your computer and use it in GitHub Desktop.
#! /bin/bash
set -euo pipefail
# This script will remove automatic association for all networks not listed in the whitelist
# passed as the first argument. Passwords will NOT be removed from the Keychain.
#
# Alternatively, you can untick "Remember networks" in Network Preferences > Wi-Fi > Advanced,
# but then you won't be able to auto-join networks even temporarily, and you might already
# have a long list to go through.
#
# Having automatic association for open or known-password networks is dangerous as it
# allows an attacker to force you on their network by simple proximity.
#
# You'll have to run this as sudo not to be prompted at every entry.
DEVICE="en0"
networksetup -listpreferredwirelessnetworks "$DEVICE" | tail -n +2 | cut -d$'\t' -f2- | \
while IFS= read -r network
do
grep -Fxe "$network" "$1" > /dev/null || (
networksetup -removepreferredwirelessnetwork "$DEVICE" "$network"
)
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment