- the PBR SFIs were learned only by the tracker; the message decode's per-channel SFI map still did not know them, so the SEARCH RECORD addressed by SFI 2 after the PBR read showed "SFI 2, unknown file" (the reported case: session 193, 5.434 s — the PBR read at 4.451 declared ADN 4F3A/SFI 2) - database._advance_state now parses an EF_PBR record it sees (a READ RECORD's data or an UPDATE RECORD's body) and merges its FID+SFI pairs into the channel's SFI map, so SFI-addressed SEARCH/READ resolve without the file's own FCP - the learned relations are cached per DF for the session: the live trace leaves DF_PHONEBOOK for DF_TELECOM (SELECT 7F10/6F06) and comes back, and the DF change used to rebuild the map from the static table only, dropping the PBR's pairs — the re-entry now merges the session cache - verified on session 193: the SEARCH at 5.434 s (SFI 2) now resolves to 4f3a (EF_ADN), as do the later ones (31.562/253.475/279.874 s) - tests: the DB-level case — a PBR read, an excursion to DF_TELECOM and back, then an SFI-addressed SEARCH asserting the declared file; 538 Python + 76 Node tests - PWA_VERSION/pyproject/version.py 2.7.8, SW cache simtrace-analyser-v88
22 lines
664 B
TOML
22 lines
664 B
TOML
[build-system]
|
|
requires = ["setuptools>=64"]
|
|
build-backend = "setuptools.backends._legacy:_Backend"
|
|
|
|
[project]
|
|
name = "simtrace-analyser"
|
|
version = "2.7.8"
|
|
description = "SIMtrace Analyser — APDU trace analyser for GSMTAP/PCAP captures (bundles the simtrace2-pysniff utility)"
|
|
readme = {file = "README.md", content-type = "text/markdown"}
|
|
license = {text = "GPL-2.0-or-later"}
|
|
requires-python = ">=3.9"
|
|
dependencies = [
|
|
"pyusb>=1.2",
|
|
]
|
|
|
|
[project.scripts]
|
|
simtrace-analyser-server = "simtrace_analyser.__main__:main"
|
|
simtrace2-pysniff = "simtrace2_pysniff.__main__:main"
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["simtrace_analyser*", "simtrace2_pysniff*"]
|