sanitizer.py 848 B

1234567891011121314151617181920212223242526
  1. # Utilities for sanitizing routes of only essential data for testing car ports and doing validation.
  2. from openpilot.tools.lib.logreader import LogIterable, LogMessage
  3. def sanitize_vin(vin: str):
  4. # (last 6 digits of vin are serial number https://en.wikipedia.org/wiki/Vehicle_identification_number)
  5. VIN_SENSITIVE = 6
  6. return vin[:-VIN_SENSITIVE] + "X" * VIN_SENSITIVE
  7. def sanitize_msg(msg: LogMessage) -> LogMessage:
  8. if msg.which() == "carParams":
  9. msg = msg.as_builder()
  10. msg.carParams.carVin = sanitize_vin(msg.carParams.carVin)
  11. msg = msg.as_reader()
  12. return msg
  13. PRESERVE_SERVICES = ["can", "carParams", "pandaStates", "pandaStateDEPRECATED"]
  14. def sanitize(lr: LogIterable) -> LogIterable:
  15. filtered = filter(lambda msg: msg.which() in PRESERVE_SERVICES, lr)
  16. sanitized = map(sanitize_msg, filtered)
  17. return sanitized