fixL s3_analyzer noise clean up.

-_extract_a4_inner_frames(payload) — splits the A4 container payload into inner sub-frames using the ACK DLE STX delimiter pattern, returning (sub, page_key, data) tuples
-_diff_a4_payloads(payload_a, payload_b) — matches inner frames by (sub, page_key), diffs data byte-by-byte (with existing noise masking), and reports added/removed inner frames as synthetic entries
This commit is contained in:
serversdwn
2026-03-11 17:31:23 -04:00
parent 8d06492dbc
commit 41606d2f31
2 changed files with 159 additions and 6 deletions

View File

@@ -825,12 +825,21 @@ class AnalyzerPanel(tk.Frame):
w.tag_bind(link_tag, "<Leave>", lambda e: w.configure(cursor=""))
w.configure(state="disabled")
for bd in fd.diffs:
b = f"{bd.before:02x}" if bd.before >= 0 else "--"
a = f"{bd.after:02x}" if bd.after >= 0 else "--"
self._tw(w, f" [{bd.payload_offset:3d}] 0x{bd.payload_offset:04X}: ", "dim")
self._tw(w, f"{b} -> {a}", "changed")
if bd.field_name: self._tw(w, f" [{bd.field_name}]", "known")
self._tn(w)
def _fmt(v: int) -> str:
if v == -2: return "ADD"
if v == -1: return "--"
return f"{v:02x}"
b, a = _fmt(bd.before), _fmt(bd.after)
# A4 inner-frame add/remove: field_name carries the full description
if bd.field_name and (bd.before == -2 or bd.after == -2 or bd.before == -1 or bd.after == -1) and bd.field_name.startswith("[A4"):
self._tw(w, f" {b} -> {a} ", "changed")
self._tw(w, bd.field_name, "known")
self._tn(w)
else:
self._tw(w, f" [{bd.payload_offset:3d}] 0x{bd.payload_offset:04X}: ", "dim")
self._tw(w, f"{b} -> {a}", "changed")
if bd.field_name: self._tw(w, f" [{bd.field_name}]", "known")
self._tn(w)
report = render_session_report(sess, diffs, idx - 1 if idx > 0 else None)
self._tc(self.report_text)