Spec-correctness release, verified against TS 102 221 V18.2.0 and
TS 102 225 §5.1.1:
- SPI1 ciphering bit: b3 (0x04), not b4 (0x08) — both the SPI dict
and the KIc-unused check. Real MegaFon captures (SPI1=16) decoded
as unciphered with "KIc unused" before this fix.
- SPI2 PoR-ciphering bit: b5 (0x10), not b6 (0x20); add por_transport
field from SPI2 b6 (SMS-DELIVER-REPORT vs SMS-SUBMIT).
- SW table: add UICC-specific SWs 62F1/F2/F3, 63F1/F2, 6401, 9300
(SAT busy), 9850, 9862/63/64; fix 6500 text ("NV memory changed");
91XX now decodes as "Proactive command pending" via pattern.
- 63CX no longer hardcoded as PIN failure — exact 63F1/F2 entries take
precedence; all other 63CX route through one verification-retry
pattern (_SW_PATTERNS dict → ordered list).
- APDU_SPEC: +9 commands (D7/DD odd-INS update, D2 write record,
82 external auth, 86/87 general auth, 22 MSE, 0E/0C erase, 7C LSI).
- decode_cla: proper ISO 7816-4 §5.1.1 coding — SM bits b4-b3,
chain bit b5, further-interindustry channel offset (+4).
Tests: +27 (TestSwUiccSpecific, TestSpiBits, TestApduSpecCoverage,
TestClaDecode) — 279 total. SW cache bumped to simtrace-analyser-v12.
22 lines
626 B
TOML
22 lines
626 B
TOML
[build-system]
|
|
requires = ["setuptools>=64"]
|
|
build-backend = "setuptools.backends._legacy:_Backend"
|
|
|
|
[project]
|
|
name = "simtrace2-pysniff"
|
|
version = "1.10.0"
|
|
description = "Python-based sniffing tool for SIMtrace2 hardware (SIM card communication sniffer)"
|
|
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]
|
|
simtrace2-pysniff = "simtrace2_pysniff.__main__:main"
|
|
simtrace2-pysniff-server = "simtrace2_pysniff.server.__main__:main"
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["simtrace2_pysniff*"]
|