frontend/tests/ (otaman-style function extraction from index.html):
- apdu_parse.test.js: PARSE_INS registry, parseOneApdu (SELECT by FID,
READ BINARY Le-form, UPDATE BINARY, GET DATA, lowercase input),
parseCompactApdus (concatenated implied-CLA stream, graceful
unrecognized-byte degradation).
- scp80_decrypt.test.js: decryptSecured known-answer tests with
node-crypto generated ciphertexts — 3DES-CBC 2/3-key (real CNTR=200
revealed), AES-CBC 128, single DES, wrong-key padding guard, key
length validation, unsupported-algorithm rejection.
- helpers.js: brace-matched function/const/section extraction from
the single-file frontend; package.json ("test": "node --test").
Fix AES-CBC decryption path found by the new tests: SubtleCrypto CBC
decrypt always validates PKCS#7, which SCP80 PCNTR-style padding
violates. Workaround: append a synthetic block C* = E(C_last XOR
padBlock) so the validator sees a full 0x10 padding block, decrypt,
then discard the synthetic plaintext. Validated: CNTR=200 case
decrypts correctly.
Version 1.20.1, SW cache simtrace-analyser-v29.
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.20.1"
|
|
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*"]
|