Fixed Hyundai Device Processing - #181
Conversation
…one device was connected to infotainment unit. fixed hyundai device dat file encoding issues when parsing.
|
Thanks for the contribution! This PR changes artifact modules without test data for them. A small fixture with each artifact change lets reviewers run the module against real data, and the committed case keeps guarding the module after merge.
Adding a fixture Generate it from your extraction with the helper (details in create_module_test_cases.md): It writes Size rules:
If your extraction cannot be shared:
If none of those fit, say so here and we will work it out. The PR can still be reviewed and merged with the gap recorded in the artifact's This is a request, not a gate. Nothing here blocks review. |
|
Thanks for this — the multi-phone gap is real, and the devices script needed it most: the old code built Two things before it can land: the test fixtures, and four issues in the new per-database loop. The fixtures are the actual blockerEverything below is an afternoon's work; the fixtures aren't, because they need your extraction. If the extraction can't be shared publicly, say so on the PR and we'll sort out a private route — that's normal for vehicle work. What I confirmed worksBuilt synthetic
Note the repo's real CI has not run on this PR — five workflows are sitting at 1. Contacts silently drops every row from a phone whose table lacks
|
|
Thank you for the feedback. I implemented the fixes you suggested and pushed a new commit. I reran the new scripts against my case without error. Unfortunately, this is an active case so I cannot share the data publicly. I did confirm against the databases that the contact lists and call history are accurate, as well as the wireless history. |
|
Merged — thanks @pmpulkownik. Quick turnaround on the review and you went past what was asked with the Generated by Claude Code |
…ation gap Follow-up to abrignoni#181, which fixed the multi-phone parsing and stripped trailing \x01-\x05 from device friendly names. Three residual items: - The name capture still admitted control bytes. `.strip()` of a fixed set only reaches the ends, so a trailing byte outside that set survived ("Trailing BEL\x07") and an embedded one survived anywhere ("Embed\x02ded"), both reaching the HTML report and LAVA. The record delimits the name the same way it delimits the MAC, so the capture now ends at any C0 control or DEL and the strip chain is redundant. - Restore the docstrings on _present_columns. The helper looks like an indirection worth removing until you know a SELECT naming an absent column drops every row for that phone, which is the defect it exists to prevent. - Record in notes that these artifacts were validated against one head unit from an extraction that could not be shared, so the absence of a committed fixture is visible where an examiner reads it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WYbci6R9C5XJ14Sxorn2T2
What this changes
The current Hyundai/Kia scripts did not parse all of the databases if the infotainment system had multiple paired phones. Rewrote scripts to parsed all call history and contact databases. Furthermore, the device history script failed to parse the dat file due to the mac address reporting twice in the dat file for each device, changed the logic to not discard those.
For a new or changed artifact
python admin/scripts/check_artifact_output.py <report folder>on that report and fixed or documented every finding. An empty or constant column is often a real result (no group chats, coarse location denied); the fix for those is to say so in the artifact'snotes, which is also what stops the checker reporting them.--compare <multi-container report>reads the scaling for you: it should be exactly double.notes,descriptionandsample_datasay only what the data shows, and the numbers were re-derived from the finished run.Anything reviewers should know