Identifying a vehicle based on signals available on a bus
A system for identifying a vehicle includes an input interface and a processor. The input interface is configured to receive traffic from a vehicle bus. The processor is configured to determine a data fingerprint from the traffic; and determine an identifier for the vehicle from the fingerprint.
1. A system for identifying a vehicle, comprising:
an input interface configured to receive traffic from a vehicle bus; and
a processor configured to:
determine a data fingerprint from the traffic, wherein the determining of the data fingerprint comprises to:
perform one or more of the following:
A) extract counter data from the traffic, the counter data including odometer data, engine total time data, engine total idle time data, engine type, transmission type, or any combination thereof; or
B) determine a set of packets from the traffic based at least in part on a packet data format;
monitor the set of packets to determine whether or not packets are stable or core or unstable or transient; and
determine byte value ranges for the core packet data; and
generate the data fingerprint based on the counter data, the byte value ranges of the core packet data, or both; and
determine an identifier for the vehicle based at least in part on the data fingerprint, wherein determining the identifier comprises matching the data fingerprint with a stored fingerprint of a set of stored fingerprints, wherein the stored fingerprint corresponds to the identifier for the vehicle.
2. The system of claim 1 , wherein the vehicle bus comprises a SAE J1939 bus.
3. The system of claim 1 , wherein the vehicle bus comprises an OBD-II bus.
4. The system of claim 1 , wherein the system further comprises a capacitive coupling to the vehicle bus.
5. The system of claim 1 , wherein the data fingerprint comprises odometer data.
6. The system of claim 1 , wherein the data fingerprint comprises engine total time data.
7. The system of claim 1 , wherein the data fingerprint comprises engine total idle time data.
8. The system of claim 1 , wherein the data fingerprint comprises a proprietary packet type.
9. The system of claim 1 , wherein the data fingerprint comprises a set of packet sources.
10. The system of claim 1 , wherein the data fingerprint comprises a set of packet destinations.
11. The system of claim 1 , wherein the identifier comprises a vehicle type identifier.
12. The system of claim 1 , wherein the identifier comprises a vehicle specific identifier.
13. The system of claim 1 , wherein the identifier comprises a vehicle identification number.
14. The system of claim 1 , wherein determining the identifier comprises querying a data storage device using the data fingerprint.
15. The system of claim 1 , wherein determining the identifier comprises querying an external system using the data fingerprint.
16. A method for identifying a vehicle, comprising:
receiving traffic from a vehicle bus;
determining, using a processor, a unique data fingerprint from the traffic, wherein the determining of the data fingerprint comprises:
performing one or more of the following:
A) extracting counter data from the traffic, the counter data including odometer data, engine total time data, engine total idle time data, engine type, transmission type, or any combination thereof; or
B) determining a set of packets from the traffic based at least in part on a packet data format;
monitoring the set of packets to determine whether or not packets are stable or core or unstable or transient; and
determining byte value ranges for the core packet data; and
generating the data fingerprint based on the counter data, the byte value ranges of the core packet data, or both; and
determining an identifier for the vehicle based at least in part on the data fingerprint, wherein determining the identifier comprises matching the data fingerprint with a stored fingerprint of a set of stored fingerprints, wherein the stored fingerprint corresponds to the identifier for the vehicle.
17. A computer program product for identifying a vehicle, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
receiving traffic from a vehicle bus;
determining a unique data fingerprint from the traffic, wherein the determining of the data fingerprint comprises:
performing one or more of the following:
A) extracting counter data from the traffic, the counter data including odometer data, engine total time data, engine total idle time data, engine type, transmission type, or any combination thereof; or
B) determining a set of packets from the traffic based at least in part on a packet data format;
monitoring the set of packets to determine whether or not packets are stable or core or unstable or transient; and
determining byte value ranges for the core packet data; and
generating the data fingerprint based on the counter data, the byte value ranges of the core packet data, or both; and
determining an identifier for the vehicle based at least in part on the data fingerprint, wherein determining the identifier comprises matching the data fingerprint with a stored fingerprint of a set of stored fingerprints, wherein the stored fingerprint corresponds to the identifier for the vehicle.