Summary

The directory:

/private/var/root/Library/Caches/locationd

contains:

WMM.dat
cache.plist
clients.plist
consolidated.db
ephemeris/
glgps_nvs.bin
lto2.dat
stats.plis

If we run strings on lto2.dat, the last line indicates:

BCMLTO33

which hints to a Broadcom Long Term Orbits (LTO) with Assisted-GPS (AGPS) module.

consolidated.db

consolidated.db is an sqlite3 database keeping a record of GPS locations. It can be found at:

/private/var/root/Library/Caches/locationd

in order to extract the last known location, one can issue:

/usr/bin/sqlite3 /private/var/root/Library/Caches/locationd/consolidated.db "select latitude,longitude from CellLocation order by Timestamp desc limit 1"
Sample Usage

We can trigger activator commands by using an application called TerminalActivator (hopefully updated soon . . .) which acts as a bridge between console commands and Activator.

gpstrigger.php
<?php
 
$pois = array(
 
  // add your own POIs to the array
  new POI(55.761895,37.628174,"notify_post 'Lock Screen'")
 
);
 
class POI
{
  var $latitude;
  var $longitude;
  var $accuracy = 10;
  var $command;
 
  function __construct() {
    $argc = func_num_args();
    $argv = func_get_args();
    if(method_exists($this,$cons='__construct'.$argc)) {
      call_user_func_array(array($this,$cons),$argv);
    }
  }
 
  function __construct4($la, $lo, $cm, $ac) {
    $this->latitude = $la;
    $this->longitude = $lo;
    $this->command = $cm;
    $this->accuracy = $ac;
  }
 
  function __construct3($la, $lo, $cm) {
    $this->latitude = $la;
    $this->longitude = $lo;
    $this->command = $cm;
  }
}
 
$db = new PDO('sqlite:/private/var/root/Library/Caches/locationd/consolidated.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$q = $db->prepare("SELECT Latitude,Longitude FROM CellLocation ORDER BY Timestamp DESC LIMIT 1");
$q->execute();
$row = $q->fetchObject();
 
 
foreach($pois as $poi) {
  // S = R^2 * (lo_{2}-lo_{1})(sin(la_{1}-sin(la_{2}))
  if(pow(6371*1000,2) // R_{earth} = 6371 km
    * abs($row->Longitude-$poi->longitude)
      * abs(sin($row->Latitude)-sin($poi->latitude))
        < $poi->accuracy) {
 
    system($poi->command);                                                                  
 
  }
}
 
return null;
 
?>

We can save the PHP script to /usr/local/bin and create a plist file called com.gpstrigger.plist in the directory /Library/LaunchDaemons that will run every hour and check whether our location is within the accuracy range of any POIs:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.gpstrigger</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/php</string>
            <string>/path/to/gpstrigger.php</string>
        </array>
	<key>RunAtLoad</key>
	<true/>
	<key>StartInterval</key>
	<integer>3600</integer>
</dict>
</plist>

We can program TerminalActivator to trigger any Activator action but any terminal commands are possible.


ios/gps.txt ยท Last modified: 2022/04/19 08:28 by 127.0.0.1

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.