GPS
GPS
Kismet can integrate with a GPS device to provide geolocation coordinates for devices.
GPS data is included in the log files, in PPI pcap files, and exported over the REST interface.
Kismet can not use GPS to determine the absolute location of the device; it can only use it to determine the location of the receiver. The location estimate of a device can be improved by circling the suspected location.
In addition to logging GPS data on a per-packet basis, Kismet maintains a running average of device locations which are exported as the average location in the Kismet UI and in device summaries. Because the running average can be heavily influenced by the sensor’s position, this running average may not be very accurate.
Multiple GPS devices can be defined at once, however only the highest priority active device is used.
GPS is configured via the gps=
configuration option. GPS options are passed on the configuration line:
gps=type:option1=val1,option2=val2
Supported GPS types
-
serial (High priority) Locally-connected serial NMEA GPS device. This supports most USB and Bluetooth (rfcomm/spp) connected GPS devices. This does not support the few GPS devices which output proprietary binary
Options:
name=foo
Arbitrary name to identify this GPSdevice=path/to/device
Path to the serial device. The user Kismet is running as must have read access to this device.reconnect=true | false
Automatically attempt to re-open the serial port if there is a problem or the GPS is not connected.baud=rate
Specify a non-standard baud rate for the serial port. Most GPS devices operate at 4800, which Kismet uses by default.
Example:
gps=serial:device=/dev/ttyACM0,reconnect=true,name=LaptopSerial
-
tcp (High priority) Network-connected raw NMEA stream. Typically this is served by a smartphone app like “BlueNMEA” on Android or “NMEA GPS” on iPhone. For GPSD-based network GPS connections, use the “gpsd” GPS in Kismet.
Options:
name=foo
Arbitrary name to identify this GPShost=ip-or-name
IP or hostname of the server running the NMEA TCP serverport=port number
Port number the NMEA server is listening onreconnect=true | false
Automatically attempt to re-open the serial port if there is a problem or the GPS is not connected.
Example:
gps=tcp:host=10.10.100.100,port=3999
-
gpsd (High priority) A GPSD server. GPSD (http://www.catb.org/gpsd/) parses GPS data from multiple GPS vendors (including proprietary binary) and makes it available over a standard TCP/IP connection.
There are multiple GPSD versions with various levels of support and incompatible protocols. Kismet supports the older-style GPSD text protocol as well as the new GPSD3 JSON protocol.
Options:
name=foo
Arbitrary name to identify this GPShost=ip-or-name
IP or hostname of the server running the GPSD serverport=port number
Port number the GPSD server is listening on; GPSD listens on port 2947 by default.reconnect=true | false
Automatically attempt to re-open the serial port if there is a problem or the GPS is not connected.
Example:
gps=gpsd:host=localhost,port=2947,reconnect=true
-
web (Medium priority) A web-based client with a modern web browser and location hardware (such as a phone) can supply their GPS location. This is only available to logged-in users on the Kismet web UI, but can turn a generic phone and web browser into a location source.
Typically browsers cannot supply speed or other options, and the precision of this GPS source will be reduced because it may not be updated as frequently as a locally-connected GPS.
Options:
name=foo
Arbitrary name to identify this GPS
-
virtual (lowest priority) A virtual GPS always reports a static location. The virtual GPS injects location information on a stationary sensor or drone.
Options:
name=foo
Arbitrary name to identify this GPSlat=coordinate
Latitude coordinate.lon=coordinate
Longitude coordinate.alt=altitude
Altitude, in meters.
Example:
gps=virtual:lat=123.4566,lon=40.002,alt=23.45