Scripting the sniffer built into Wireless Diagnostics I'm interested in using the built-in wireless sniffer (accessible from Wireless Diagnostics by pressing Cmd-Opt-6) as a part of a script. Is there a way to control it via scripting, maybe AppleScript?

I need to:


start the sniffer
change the channel and bandwidth settings
output to a file (as usual)


Can the UI be scripted with input events? Does Wireless Diagnostics offer any Apple events?
Following this answer, I'd suggest starting by symlinking the airport tool, which is the backend behind the Wireless Diagnostic tool:

sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport


and using it to sniff e.g. on channel 1 on your connection en1 (see ifconfig to figure out which network interface is the wireless one) via:

sudo airport en1 sniff 1


which will create a uniquely named .cap file in /tmp/. Use ctrl+c to end the sniffing. (Note that /tmp/ will be cleaned on reboot!)

Note that you can also use tcpdump directly for sniffing, without disassociating from wireless networks by:

sudo /usr/sbin/tcpdump -nei en1 -s 0 -w /tmp/scan.pcap