sanitizer: sanitize vin number (#31090)

pull/31101/head
Justin Newberry 1 year ago committed by GitHub
parent e0d0896dcf
commit 2c86c023fe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      selfdrive/car/tests/test_models.py
  2. 9
      selfdrive/test/helpers.py
  3. 5
      tools/lib/logreader.py
  4. 26
      tools/lib/sanitizer.py

@ -21,9 +21,10 @@ from openpilot.selfdrive.car.car_helpers import FRAME_FINGERPRINT, interfaces
from openpilot.selfdrive.car.honda.values import CAR as HONDA, HONDA_BOSCH from openpilot.selfdrive.car.honda.values import CAR as HONDA, HONDA_BOSCH
from openpilot.selfdrive.car.tests.routes import non_tested_cars, routes, CarTestRoute from openpilot.selfdrive.car.tests.routes import non_tested_cars, routes, CarTestRoute
from openpilot.selfdrive.controls.controlsd import Controls from openpilot.selfdrive.controls.controlsd import Controls
from openpilot.selfdrive.test.helpers import read_segment_list, sanitize from openpilot.selfdrive.test.helpers import read_segment_list
from openpilot.tools.lib.openpilotci import get_url from openpilot.tools.lib.openpilotci import get_url
from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.logreader import LogReader
from openpilot.tools.lib.sanitizer import sanitize
from openpilot.tools.lib.route import Route, SegmentName, RouteName from openpilot.tools.lib.route import Route, SegmentName, RouteName
from panda.tests.libpanda import libpanda_py from panda.tests.libpanda import libpanda_py

@ -8,7 +8,6 @@ from openpilot.common.params import Params
from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.selfdrive.manager.process_config import managed_processes
from openpilot.system.hardware import PC from openpilot.system.hardware import PC
from openpilot.system.version import training_version, terms_version from openpilot.system.version import training_version, terms_version
from openpilot.tools.lib.logreader import LogIterable
def set_params_enabled(): def set_params_enabled():
@ -78,11 +77,3 @@ def read_segment_list(segment_list_path):
seg_list = f.read().splitlines() seg_list = f.read().splitlines()
return [(platform[2:], segment) for platform, segment in zip(seg_list[::2], seg_list[1::2], strict=True)] return [(platform[2:], segment) for platform, segment in zip(seg_list[::2], seg_list[1::2], strict=True)]
# Utilities for sanitizing routes of only essential data for testing car ports and doing validation.
PRESERVE_SERVICES = ["can", "carParams", "pandaStates", "pandaStateDEPRECATED"]
def sanitize(lr: LogIterable) -> LogIterable:
return filter(lambda msg: msg.which() in PRESERVE_SERVICES, lr)

@ -12,7 +12,7 @@ import sys
import urllib.parse import urllib.parse
import warnings import warnings
from typing import Iterable, Iterator, List from typing import Iterable, Iterator, List, Type
from urllib.parse import parse_qs, urlparse from urllib.parse import parse_qs, urlparse
from cereal import log as capnp_log from cereal import log as capnp_log
@ -21,7 +21,8 @@ from openpilot.tools.lib.filereader import FileReader, file_exists
from openpilot.tools.lib.helpers import RE from openpilot.tools.lib.helpers import RE
from openpilot.tools.lib.route import Route, SegmentRange from openpilot.tools.lib.route import Route, SegmentRange
LogIterable = Iterable[capnp._DynamicStructReader] LogMessage = Type[capnp._DynamicStructReader]
LogIterable = Iterable[LogMessage]
class _LogFileReader: class _LogFileReader:

@ -0,0 +1,26 @@
# Utilities for sanitizing routes of only essential data for testing car ports and doing validation.
from openpilot.tools.lib.logreader import LogIterable, LogMessage
def sanitize_vin(vin: str):
# (last 6 digits of vin are serial number https://en.wikipedia.org/wiki/Vehicle_identification_number)
VIN_SENSITIVE = 6
return vin[:-VIN_SENSITIVE] + "X" * VIN_SENSITIVE
def sanitize_msg(msg: LogMessage) -> LogMessage:
if msg.which() == "carParams":
msg = msg.as_builder()
msg.carParams.carVin = sanitize_vin(msg.carParams.carVin)
msg = msg.as_reader()
return msg
PRESERVE_SERVICES = ["can", "carParams", "pandaStates", "pandaStateDEPRECATED"]
def sanitize(lr: LogIterable) -> LogIterable:
filtered = filter(lambda msg: msg.which() in PRESERVE_SERVICES, lr)
sanitized = map(sanitize_msg, filtered)
return sanitized
Loading…
Cancel
Save