Extended logical channels: CLA 0-19, ATR card capabilities, MANAGE CHANNEL (v2.6.0)
- CLA decode (TS 102 221 §10.1.1/§10.3): standard channels 0-3 from b2-b1
and the extended channels 4-19 from b4-b1. The old further-format rule
read only b2-b1 (channel 8 read as 6, 19 as 7) and the ETSI '11x0 xxxx'
coding (0xC0-0xEF) was not handled at all; the class ranges now follow the
specs (0x80-0x8F UICC, 0xA0-0xAF SIM, 0xC0-0xEF ETSI extended, 0x20-0x3F
reserved, 0xFF invalid) and SM/chain are decoded per family — the SM
extraction and the chaining bit (b5, not b6) were off by one bit
- per-channel state: database._decode_rows/_replay_context use the shared
cla_channel() helper — before, CLA & 0x03 with no +4, so a channel-5
SELECT clobbered channel 1's selection and a channel-8 one channel 0's
(the local traces already open channels: 29 MANAGE CHANNEL opens, 1-2)
- COMPRION T=0 import: the synthesized GET RESPONSE keeps the channel —
a plain CLA for 0-3 (as real terminals do) and 01x0 for 4-19
- ATR historical bytes: the UICC's COMPACT-TLV objects (TS 102 221 §6.3.1)
with card service data, the card capabilities (ISO 7816-4 §8.1.1.2.7
Table 88: assignment methods and max logical channels — the workspace
cards announce 4 and "8 or more") and the status indicator ('00' trailing
bytes / the '8Y' TLV); a truncated ATR no longer raises
- MANAGE CHANNEL success replies decode the assigned channel byte
- capture/import: a 'tpdu' packet that is not APDU-shaped (shorter than the
header, CLA FF, ISO-reserved class) is skipped and counted, so a
character-level or mis-sampled stream no longer pollutes the decode
(the local DB's outlier sessions are exactly that)
- tests: CLA table vectors, per-channel state isolation on channels 8/12,
COMPRION GR channels, filetrack extended channels, ATR compact-TLV and
card-capability cases, the capture skip counter, the PWA rows; 527 Python
+ 47 Node tests
- README/README_RUS document the extended channels, card capabilities and
the skip counter; PWA_VERSION/pyproject/version.py 2.6.0, SW v72
This commit is contained in:
1 parent
cbeeed3608
commit
64433f9739
18 files changed
+683
-88
No files matched your search
@@ -30,9 +30,12 @@ GSMTAP into this analyser.
|
||||
|
||||
**APDU decoder** (server-side, rendered by the PWA):
|
||||
|
||||
- Full APDU decode — CLA per ISO 7816-4 / ETSI coding (logical channel,
|
||||
secure messaging, command chaining), INS names from a spec table,
|
||||
SFI-aware P1/P2 for READ/UPDATE BINARY and record commands
|
||||
- Full APDU decode — CLA per ISO 7816-4 / ETSI coding with the **logical
|
||||
channel 0-19** (standard channels from b2-b1, the extended channels 4-19
|
||||
from b4-b1 per TS 102 221 §10.3), secure messaging and command chaining,
|
||||
INS names from a spec table, SFI-aware P1/P2 for READ/UPDATE BINARY and
|
||||
record commands; MANAGE CHANNEL replies show the channel the card
|
||||
assigned
|
||||
- Status words — full ISO 7816-4 set plus UICC-specific values:
|
||||
`91XX` (proactive command pending), `62F1/F2/F3`, `63F1/F2` (more data),
|
||||
`9300` (SAT busy), `9850`, `9862–64`
|
||||
@@ -55,7 +58,12 @@ GSMTAP into this analyser.
|
||||
decoded as a stream of **C-APDUs** (SELECT, UPDATE BINARY, …) with
|
||||
full CLA/INS/P1/P2/Lc/Le breakdown — plaintext immediately, or after
|
||||
decryption for ciphered packets
|
||||
- ATR parse (clock-rate conversion, Fi/Di, T-bitmask) and FCP/FCI TLV
|
||||
- ATR parse (clock-rate conversion, Fi/Di, T-bitmask, truncated-ATR safe)
|
||||
and FCP/FCI TLV; the historical bytes are decoded as the UICC's
|
||||
COMPACT-TLV objects (TS 102 221 §6.3.1) — card service data, the **card
|
||||
capabilities** (ISO 7816-4 §8.1.1.2.7 Table 88: the assignment methods
|
||||
and the announced maximum number of logical channels, `8 or more` for the
|
||||
extended-capable cards) and the trailing status indicator (LCS/SW)
|
||||
|
||||
**SIMtrace Analyser PWA** ([`frontend/`](frontend/)):
|
||||
|
||||
@@ -121,7 +129,10 @@ with the local time): `Capture started` on begin, a periodic
|
||||
`Capture stopped` (or `ERROR: capture thread stopped on error …` if the
|
||||
capture thread died unexpectedly). A mis-framed or non-SIM GSMTAP
|
||||
datagram is dropped and counted (`dropped`) rather than silently
|
||||
killing the capture. The heartbeat interval defaults to 60 s and is
|
||||
killing the capture; a `tpdu` packet that is not APDU-shaped at all
|
||||
(shorter than the header, the invalid CLA `FF` or an ISO-reserved class)
|
||||
is skipped and counted (`skipped`) — a character-level or mis-sampled
|
||||
stream no longer pollutes the decode. The heartbeat interval defaults to 60 s and is
|
||||
tunable via `--log-interval SECONDS`.
|
||||
|
||||
The GSMTAP listener also accepts the **sigrok-iso7816-stream** decoder
|
||||
|
||||
Reference in new issue
Block a user