sanitizer: sanitize vin number (#31090)

old-commit-hash: 2c86c023fe2d3072910ed33ff97cd6d3ddf2915d
This commit is contained in:
Justin Newberry
2024-01-21 12:22:32 -05:00
committed by GitHub
parent 436b5dacd9
commit b29eea47ce
4 changed files with 31 additions and 12 deletions
+3 -2
View File
@@ -12,7 +12,7 @@ import sys
import urllib.parse
import warnings
from typing import Iterable, Iterator, List
from typing import Iterable, Iterator, List, Type
from urllib.parse import parse_qs, urlparse
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.route import Route, SegmentRange
LogIterable = Iterable[capnp._DynamicStructReader]
LogMessage = Type[capnp._DynamicStructReader]
LogIterable = Iterable[LogMessage]
class _LogFileReader:
+26
View File
@@ -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