Fix dropped change flags + FIDI parsing
- capture.py: DirectSniffer/GsmtapListener yield (type, data, flags), CaptureManager passes flags to insert_message (change flags were previously dropped, leaving every change row with flags=0) - protocol.py: add _parse_fidi (1-byte value) — FIDI was mis-mapped to _parse_change (4-byte flags), so FIDI messages were silently dropped - database.py: pass flags into decode_sniff_msg - decode.py: decode_change(flags) reads flags directly; decode_sniff_msg gains flags parameter; change messages no longer require non-empty data - tests: fix FIDI test, add change/fidi decode tests (43 total)
This commit is contained in:
1 parent
4097bb864e
commit
2a58fec0a3
7 files changed
+52
-20
No files matched your search
@@ -168,18 +168,19 @@ class Database:
|
||||
|
||||
def _row_to_message(self, row):
|
||||
data_blob = row[4]
|
||||
flags = row[5]
|
||||
msg = {
|
||||
'id': row[0],
|
||||
'session_id': row[1],
|
||||
'elapsed': row[2],
|
||||
'type': row[3],
|
||||
'data': data_blob.hex(),
|
||||
'flags': row[5],
|
||||
'flags': flags,
|
||||
}
|
||||
if row[3] in ('tpdu', 'change', 'fidi', 'atr', 'pps') and data_blob:
|
||||
if row[3] in ('tpdu', 'change', 'fidi', 'atr', 'pps'):
|
||||
try:
|
||||
from .decode import decode_sniff_msg
|
||||
msg['decoded'] = decode_sniff_msg(data_blob, row[3])
|
||||
msg['decoded'] = decode_sniff_msg(data_blob, row[3], flags)
|
||||
except Exception as e:
|
||||
import sys
|
||||
print(f'Decode error for msg {row[0]} ({row[3]}, {len(data_blob)} bytes): {e}',
|
||||
|
||||
Reference in new issue
Block a user