From a37266f865dc4b53590490f1309e2bf7f6f48ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A2=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Sat, 10 Oct 2026 23:26:16 +0300 Subject: [PATCH] v3.25.0 review: the DF-tree ARR resolution walk-up The live card references 6F06 from MF-tree files (MF/7F20/6F07 -> 8B 03 6F06 14), but the resolver compared only the path's first segment: the reference fell back to the ADF.USIM copy instead of the file's own DF copy (ISO 7816-4 5.4.3.3 / TS 102 221 9.2.7 walk-up) - masked on this card only because all four copies are byte-identical. - The server reads the DF.TELECOM and DF.GSM copies too (MF/7F10/6F06, MF/7F20/6F06 - TS 51.011), best effort. - fcpArrRules resolves by the file's DF chain (own DF first, then walking up to MF); a reference with no copy in the chain resolves only when a single candidate exists, otherwise it stays silent. - The implicit form prefers the file's DF copy (6F06), walking up to the MF copy (2F06). Tests: the DF copy wins over the ADF copy; two candidates outside the chain stay unresolved; a single one resolves; the implicit walk-up; the server reads the DF-tree paths. 879 frontend + 858 Python; sw cache simple-v424. --- docs/api.md | 4 ++-- frontend/help-ru.html | 2 +- frontend/help.html | 2 +- frontend/index.html | 38 +++++++++++++++++++++++++-------- frontend/tests/profiler.test.js | 37 ++++++++++++++++++++++++++++++++ pysim_simple_server/server.py | 9 ++++---- tests/test_arr.py | 7 ++++++ 7 files changed, 82 insertions(+), 17 deletions(-) diff --git a/docs/api.md b/docs/api.md index 9b44219..ec9b93d 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1403,8 +1403,8 @@ is not initialized. Returns the card's cached **EF.ARR copies** — the access-rule files the FCP security attribute DO `'8B'` references (ISO 7816-4 Table 25). The copies -are read once per card session when a card is equipped (`MF/2F06` and -`ADF.USIM/6F06`, best effort) and served from memory, so this endpoint +are read once per card session when a card is equipped (`MF/2F06`, +`MF/7F10/6F06`, `MF/7F20/6F06` and `ADF.USIM/6F06`, best effort) and served from memory, so this endpoint performs no card I/O; a disconnect clears the cache, and an `EF.ARR` write through `/api/write` refreshes it. diff --git a/frontend/help-ru.html b/frontend/help-ru.html index 2e46d5b..d261f94 100644 --- a/frontend/help-ru.html +++ b/frontend/help-ru.html @@ -397,7 +397,7 @@

Подключение к локальному pysim-simple-server для работы с картой: введите URL сервера (по умолчанию http://127.0.0.1:8080) и нажмите Подключиться. Область статуса показывает состояние ридера/карты, а Подключить карту (пере)инициализирует карту после вставки. Подвкладки: Файловый менеджер, Командная строка pySim и Отправка APDU. «Профайлер» и «Симулятор» — отдельные вкладки верхнего уровня.

6.1 Файловый менеджер

-

Дерево файловой системы отображается слева; выбор файла открывает панель деталей справа. Элементы сгруппированы: DF выше EF, сортировка по FID или символьному имени (пиллы и кнопка «Проверить все файлы» закреплены над прокручиваемым деревом; выбор сохраняется в localStorage). При выборе файла над содержимым также показываются FID, тип файла, размер / структура записей и декодированный FCI — в рамке с символьным именем файла. Если FCI ссылается на свои правила доступа через запись EF.ARR (атрибут безопасности 8B), правила указанной записи показываются с отступом под этой строкой: они берутся из копий EF.ARR карты — копии MF (2F06) и копии ADF.USIM (6F06): читаются один раз за сессию при equip, обновляются при сбросе/equip и после записи EF.ARR; снимок разрешает те же ссылки из собственной захваченной копии. Ссылка на копию ARR другого DF не разрешается (строка остаётся как есть).

+

Дерево файловой системы отображается слева; выбор файла открывает панель деталей справа. Элементы сгруппированы: DF выше EF, сортировка по FID или символьному имени (пиллы и кнопка «Проверить все файлы» закреплены над прокручиваемым деревом; выбор сохраняется в localStorage). При выборе файла над содержимым также показываются FID, тип файла, размер / структура записей и декодированный FCI — в рамке с символьным именем файла. Если FCI ссылается на свои правила доступа через запись EF.ARR (атрибут безопасности 8B), правила указанной записи показываются с отступом под этой строкой: они берутся из копий EF.ARR карты — копии MF (2F06), копий DF.TELECOM/DF.GSM (6F06) и копии ADF.USIM (6F06): читаются один раз за сессию при equip, обновляются при сбросе/equip и после записи EF.ARR; снимок разрешает те же ссылки из собственной захваченной копии. Побеждает копия собственного DF файла, с подъёмом до MF; ссылка, для которой в этой цепочке копии нет, остаётся неразрешённой, если только кандидат не единственный.