Skip to content

Instantly share code, notes, and snippets.

@JburkeRSAC
Created January 19, 2017 02:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JburkeRSAC/324aaacc12dbc8f6f1f2067a6f405ea9 to your computer and use it in GitHub Desktop.
Save JburkeRSAC/324aaacc12dbc8f6f1f2067a6f405ea9 to your computer and use it in GitHub Desktop.
A PHP triangulator for MacOSX El Capitan utilizing SSID, BSSID, and RSSI for location
/*
* headless_horseman.php: A PHP triangulator for MacOSX El Capitan
* utilizing SSID, BSSID, and RSSI for location
* By @Jesse_V_Burke
*
* Begin retro-ascii art:
* ooooooyhsdymdhdhdddddhhhhyysssossssssooooooooossssssssyyyyyyyyyhhhhhhhhhhhhyyssssssoooshsoooooooosss
* ooooosdoohyNysdhyydhhyyyssoooooooooooooooosssssssssyyyyyyyyyhhhhhhhhhhhhddhhyssssssooooshhssoooossss
* ssooohyoohNNyyhoshysyssshssysssssssssoooosssssssssyyyyyyyyyyyyyyhhhhhhhhhhyyyhhyhssyysooosdysyooosys
* ssosdyoshmNhydyohhosyoshyyyssooooo+++//:-----::/++osssyyyyyyyyyyyyhhhyyssssysssshyyyhhyooosNssyooooy
* ssoyNoshhNdssdsydohdhhsoooooo++//::--..``````````.-://+ossyyyyyyyyyyssooooooooooooooshNhsooshhhNhhhs
* ssssNhyosNhohmdyosdysooooo+///::::::::::---://::---..```-/oosyyyyyyysoooooooosso+ooooosyhhddhssmyymh
* syhhNmossNmmNyoshysssoo+/:-:///////////////:---...````` `-+ossssoooooooooooosysssoossssssydmNmyydN
* hdssNhoodNddysymsssso+:..-::////+++++//////:-.```````.```````-+oooooooo+oooooooooshssssyhyyyyhmNyyyd
* mssdyosdNNhyydmhysso/---:///////++////////://:.````````..--:-.-/+oooooooooooossssssdyyyyydddhhdNsoos
* ysmhsymNNmdmdhyyso+:::-:o++////////::::///:///::::-----..-:/+/://+oosoossysssyyhdddmNmhhhhdNdhhdssss
* smNdmNNNNmhyyssso+:::oo+:-:///////::---://///:::::::://////+//::--/ossssyyhhdhdhhhhhhhmdhhhhNydyysss
* hNNNNNNdyyyyyysyyossso+/:-://////:-:::---::----::/:///+/////:---.``:osyyyyyyyyyhhhhhhhhmsssshdmhhyhh
* mNNNNmysshddddhh/++//::---::////:::::----::-----:://:://::-:-....` /osyyyyyyyyhhhhhhyydhsssydNmmNmh
* NNNNNysssNyyyso-.:/+/:::::::::::::smmmm+::--...--:::::::-..--::---` .+syyyyyyyyhyyysssshdhhhhhmNdmNd
* NNNNmssyNhyyyo/`-://:::::::::---:+do/+m:---......./+ooos+..--:::--` :osyyyyyyyhhhhhhhhmNNmmhhmmhhdN
* NNNNhyymdyyyso:.::/:::::::::----::::::d/---..``/hdNmmdmmNmy/-:::--` .osyyyyyyyyhhhhhhhdmdmNddNdhhhN
* NNNNhyymdyyyso--::::::::::::::::+oo/::mNy:..``:mMNNNmNNNNNNNds/:--` `+syyyyyyyyyyhhhhhhhhymNNdhhhhd
* NNNNNhhhNhyys+..-::::::::://oymNNMMNNNNMMNNNNmNmhmmmNNNNNNNNNNNds/` `+syyyyyyyhdhhhhhhhhhyNNdhhhhhd
* NNNNNdhmNmyyso-`.--::::/shmNNNNNNNNNNNNNNNNhhyshNNNNNNNNMNMNNNNNNNds:.+syyyyyyyyhdhhhhhhhhmNNdhhhdNN
* NNNNNNNNNyyyso: `---::/odNNNNNNNNNNNNNNNNNNNNNNhhNMNNNNNNNMNNNNNNNNmdhyysyyyyyyyymmddNdhhyNNNddhhmNN
* NNNNNNmNdhyyys+` .---://dNNNNNNNNNNNNNNNNNNNNNNMMMmmNNNNMMNNNNNNNNNNNmhyyysyyyyyyyhhdNmhhhmNNddhhmNN
* NNNNmhhhhhyyyso: `.::---sNNNNNNhomNNNNNNNNNNNNNMMNNNNNMMMNNNMNNNNNNNNNmho++ssyyyyyhhhdNNmNNNdhdddmNN
* NNNmyhhhhhyyyys+. `....:NNNNd+::/NNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNdhmNNNmdhhhhhhhdNNNdhhhdmNNN
* NNNmhhdhhyyyyyys+. ```.oNNNs+ooohNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmNmmhyhhhymNNNNNmddmNNNNN
* NNNmhdhhhhyyyyyys+. `` `odhoo+++yNNNNNNNNNNNNNNNNNNNNNNNNNNNNmNNNNNNNNmdddhhhhhhhhhdmmmNNNNNNNNNmm
* NNNmhhhhhhhyyyyhyso:` `````.---..dNNNNNNNNNNNNNNNNNNNNNNNNNNmmmNNNNNmdyyyyyyyyhhhhhhhddhhNNNNNNNNNd
* NNNNhhhhdhhhyyhyyyso+. ``....-..:dNNNNNNNNNNNMNNNNNNNNNNNmmmmmNMNNmyyyyyyyyyyhhhhhhhhddhmNNNNNNNmh
* NNNNdhhhhddhhyyyyyyyso/. ` ````.:NNNNNNNNNNNNNNNmNNNNNMNNmmmNNMMNhyyyyyyyyyyhhhhhhhhhhdNNNNNNNNdh
* NNNNNNmdddhhhyyyyyyyyyso+-` ````yNNNodNmNmyyhyoyNNMNhMMNNNNNNNNNhdyyyyhyyyhhhhhhhhhyhNNNNNNNNNmh
* NNNNNNNNmmdyhhyyyyyyyyyysso/:.` `+NN:hNmh.` :NMM+hhhNNNdhdNNNmmdhhhyyhhhhhhhhhhmNNNNNNNNNmdh
* NNNNNNNNNNNmddhyyyhyyyyyyyyssoo/:-.```dNhNNm` `.-:/sNNdyyyhNNhyyyyhddmmdhhhhhhhhhhdNNNNNNNNNmmdhhh
* NNNmNNNNNNmmmNNmhyhhyyyyyyyyyyyssssoo+mNmmNh/++oosssyymNNhyyymmmyyyyyyhyhhhhhhyymNNNNmNNNmNNNmdmdyyy
* NNNNmNmNNNNNmmNNNmhdhyyyhyyyyyyyyyyyyyhNmNdyyyyyyyyyyyNNhyyyhmmmyyyyyyyyhhhhhhdNNdmdmNNmNNNNNmhhhhhh
* hyhNNNNNNNNNNNNNNNNhhhhyyhyyyyyyyyyyyyhNNNhyyyyyyyyyydNdyyyyydmdyyyyyhhhhhhhhmdhdhmNNNmNNNNNNNNmdddd
* mmmNNNNNNNNNNNNNNmNmmhhhyhhyyyhyyyyyyymNNNhyyyyyyyyhNNNyyyyyydNNhhhhhhys+++oo+///omNNNNNmNNNNNmddmmm
* mNNNNNNNNNNNNNmmmhhhddhhyhhhhhhyyyyyhmNmmmhyyyyyyyhmNNhhhhhhhhmNdsso+/://::/+ooshmmmmNNNmNNNNNmmmmmm
* NNNNNNNNNNNNNmhsshhsshys++oossyyyssymNNNNdyyyssssydNNNs+++///yNNNs::::://::/++o++ssyydmmNNNNNNNNNmmm
* NNNNNNNNNmmmmdddhyyhhhyyo++oo++/+++omNNNNm//:::::/+shmNh+:://shdmNds+////+oo+/////+hdhsyhdmmmmmmmmmN
* NNNNNNmmmdhyyyysyhyyyyyyssssyoooso+oyNNNNd+////:/+///+ymmho+++/+oyhdNmyyyyo+++o+oo+osyyhhddmmmmmmmmm
* NNNNNmmmmmmmdddddhhhyyyyyyyyyssssoosymNNmmys+/+o+++osooymmmmdhs+oosssydmmmmdhysyosssosyddmmmmmmmmmmm
* NNNNNmmmmmmmddmddhhhhyyyyyyhyossssshdmmmNNdhysoooosssyyhmmmmmmmdhyyyyhhdmmmmmmmmdddmdddmmmmmmmmmmmmm
* NNNNmmmmmNmmmmmdddddhhhhhyyyyyyhyyhhmmmmmmmmmhhhhhyyhhhdmmmmmmmmmdddhdmmmmmmmmmmmmmmmmmmddddmmmmmmmm
* mmmmmmNNNNNNNNmmmddhhyyydhhhhhdhyyhdmmmmmmmmmmmmmddddmmmmmmmmmmmmmmdmdmmmmmmmmmmmmmmmmmmddhdmmmmmmmm
* mmmmmmmmNNNNNmmmdmmdddddhhyyyhhhdmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
* mmmmmmmmmmmmmdhddmdmmddhhhhhhhhhdmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
*
* Usage (MAC OSX El Capitan tested/approved ONLY!):
*
* For a Linux perl 1 liner use:
* curl "https://maps.googleapis.com/maps/api/browserlocation/json?browser=firefox&sensor=true" --data-urlencode "`nmcli -f SSID,BSSID,SIGNAL dev wifi list |perl -ne "if(s/^(.+?)\s+(..:..:..:..:..:..)\s+(.+?)\s*$/&wifi=mac:\2|ssid:\1|ss:\3&/g){print;}"`"
*
* First execute to unlock teh secret sawce:
* sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
* Second execute to build out a list of SSIDs, BSSIDs, and RSSI Levels for triangulation:
* airport -s | awk '{print $1}{print $2}{print $3}' > airported.txt && awk 'NF' airported.txt > ssidbssidrssi.txt && tail -n+4 ssidbssidrssi.txt > headless.txt
*
*/
//Validate mac address via regex
function IsValid($mac){
return (preg_match('/([a-fA-F0-9]{2}[:|\-]?){6}/', $mac) == 1);
}
//Execute curl
function curlIt($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$file = file("headless.txt");
$i = 0;
$url = "https://maps.googleapis.com/maps/api/browserlocation/json?browser=firefox&sensor=true";
foreach($file as $line){
$result = isValid($line);
if($result == 1){
$ssid = trim($file[$i-1]);
$mac = trim($line);
$rssi_level = trim($file[$i+1]);
$add2url = "&wifi=mac:$mac|ssid:$ssid|ss:$rssi_level";
$url = $url.$add2url;
}
$i++;
}
echo "\nNow paste this into Google Maps or Google Earth... or write it to a DB to track the device\n";
$output = curlIt($url);
echo $output."\n";
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment