Created
January 19, 2017 02:38
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 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