v3.25.8 review: the FCI extras coverage for templates
The custom-FCI check's `fciExtra: 'fail'` coverage counted only the exact keys, so a listed template (A5) did not accept its decoded children (A5/80) and a listed child did not accept its parent - both were reported as unexpected. An object is now covered by its own key, by a listed parent or by a listed child (an unlisted sibling still fails); the seeded flow lists every object and was unaffected. Tests: the coverage cases (a listed A5 accepts A5/80 + A5/81, a listed A5/80 accepts A5 but not the A5/81 sibling) - the fixture's A5 length corrected in the process. Help EN/RU + both AGENTS. 893 frontend + 880 Python; sw cache simple-v433.
This commit is contained in:
@@ -468,7 +468,7 @@
|
||||
<p class="text-sm mb-2">Правила выполняются последовательно. Редактор показывает символьное имя файла pySim (если известно) рядом с путём правила; <strong>Добавить правило</strong> добавляет правило, <strong>Сохранить</strong> сохраняет изменения. Правило файловой системы задаётся:</p>
|
||||
<ul class="list-disc list-inside text-sm space-y-1 mb-3">
|
||||
<li><strong>Путь</strong> — начинается с <code class="font-mono text-sm">MF</code> (например, <code class="font-mono text-sm">MF/7F10/6F3A</code>) или с AID ADF (например, <code class="font-mono text-sm">A0000000871002/6F07</code>).</li>
|
||||
<li><strong>Проверка FCP/FCI</strong> — какая часть информации об управлении файлом проверяется: <strong>Только тип файла (FCP)</strong> (существование + тип файла), <strong>Тип файла + размер (FCP)</strong> (добавляются размер файла либо длина/число записей для record-файлов), <strong>Полный FCI</strong> (добавляется побайтовое сравнение сырого ответа SELECT — шаблона FCP <code class="font-mono text-sm">'62'</code> — выявляет изменения FID/AID, жизненного цикла, атрибутов безопасности и проприетарных параметров) или <strong>По объектам данных</strong> — список ожиданий по объектам: каждая строка задаёт объект данных (стандартные теги с именами, включая вложенные <code class="font-mono text-sm">A5/xx</code>/<code class="font-mono text-sm">C6/xx</code>, либо произвольный тег), режим — <em>значение</em> (без <code class="font-mono text-sm">?</code> совпадение по префиксу, <code class="font-mono text-sm">?</code> маскирует полубайт: <code class="font-mono text-sm">8B</code> + <code class="font-mono text-sm">2F06</code> принимает любую запись <code class="font-mono text-sm">EF.ARR</code> с таким FID, <code class="font-mono text-sm">2F06??</code> — 3-байтовую форму), <em>присутствует</em> (объект обязан быть) или <em>отсутствует</em> (его быть не должно) — и для значений hex для сравнения. Проверяются только перечисленные объекты; <strong>Лишние объекты данных: игнорировать/не допускать</strong> дополнительно запрещает всё неперечисленное (без учёта порядка, в отличие от побайтового режима). Профили, созданные с этим режимом с карты или из снимка, заполняются объектами записанного FCI; правило с записанным FCI и пустым списком можно заполнить из него (<em>заполнить из записанного FCI</em>).</li>
|
||||
<li><strong>Проверка FCP/FCI</strong> — какая часть информации об управлении файлом проверяется: <strong>Только тип файла (FCP)</strong> (существование + тип файла), <strong>Тип файла + размер (FCP)</strong> (добавляются размер файла либо длина/число записей для record-файлов), <strong>Полный FCI</strong> (добавляется побайтовое сравнение сырого ответа SELECT — шаблона FCP <code class="font-mono text-sm">'62'</code> — выявляет изменения FID/AID, жизненного цикла, атрибутов безопасности и проприетарных параметров) или <strong>По объектам данных</strong> — список ожиданий по объектам: каждая строка задаёт объект данных (стандартные теги с именами, включая вложенные <code class="font-mono text-sm">A5/xx</code>/<code class="font-mono text-sm">C6/xx</code>, либо произвольный тег), режим — <em>значение</em> (без <code class="font-mono text-sm">?</code> совпадение по префиксу, <code class="font-mono text-sm">?</code> маскирует полубайт: <code class="font-mono text-sm">8B</code> + <code class="font-mono text-sm">2F06</code> принимает любую запись <code class="font-mono text-sm">EF.ARR</code> с таким FID, <code class="font-mono text-sm">2F06??</code> — 3-байтовую форму), <em>присутствует</em> (объект обязан быть) или <em>отсутствует</em> (его быть не должно) — и для значений hex для сравнения. Проверяются только перечисленные объекты; <strong>Лишние объекты данных: игнорировать/не допускать</strong> дополнительно запрещает всё неперечисленное (без учёта порядка, в отличие от побайтового режима); указание шаблона принимает его дочерние объекты, а указание дочернего объекта — родителя, неперечисленный же соседний объект по-прежнему не проходит. Профили, созданные с этим режимом с карты или из снимка, заполняются объектами записанного FCI; правило с записанным FCI и пустым списком можно заполнить из него (<em>заполнить из записанного FCI</em>).</li>
|
||||
<li><strong>Правила доступа</strong> — проверяет условия доступа файла как <em>декодированные правила</em>, независимо от того, на какую запись <code class="font-mono text-sm">EF.ARR</code> указывает ссылка атрибута безопасности (<code class="font-mono text-sm">'8B'</code>) в FCI: правила указанной записи разрешаются из <code class="font-mono text-sm">EF.ARR</code> карты (или снимка) и сравниваются как множество с захваченными строками. Захватываются автоматически при создании профиля с карты или из снимка для каждого файла, чей FCI содержит ссылку (собственное содержимое EF.ARR по умолчанию пропускается — значимая проверка это правила); в редакторе захваченные правила показываются структурированными строками — операция в виде флажков битов (или командной формы RESIZE FILE / INCREASE), а каждое условие безопасности — селектором (always, never или ссылка на ключ с её использованием), с предпросмотром канонической декодированной строки, которую сравнивает проверка; «+ правило» создаёт новое (READ always), а шаблонные формы вне этого набора остаются нередактируемыми строками с возможностью удаления. Селектор <strong>«Сопоставление»</strong> выбирает сравнение: <strong>«Точное»</strong> (по умолчанию) требует полного совпадения правил карты с перечисленными строками; <strong>«Содержит»</strong> требует, чтобы каждое перечисленное правило было разрешено картой, — сравнение <em>по операциям</em> (каждый бит AM / командная запись, поэтому другое объединение битов в байте AM при той же политике тоже совпадёт), а не перечисленное правило не проверяется. Переключатель «Нет/Проверять» отключает проверку, не теряя правила; блок сворачивается в заголовок со счётчиком правил, а «Нет» скрывает его полностью. Файл, чей FCI потерял ссылку, не проходит проверку; ссылка, которую не удалось разрешить (нет кэша <code class="font-mono text-sm">EF.ARR</code>, запись вне диапазона), помечается как непроверяемая. При <strong>Полном FCI</strong> необязательный флажок <em>«Игнорировать ссылку на EF.ARR в точном FCI»</em> сравнивает FCI без значения <code class="font-mono text-sm">'8B'</code>: другой номер записи больше не приводит к несовпадению, а все остальные DO по-прежнему сравниваются побайтово (смысл ссылки проверяет эта проверка).</li>
|
||||
<li><strong>Атрибуты файла</strong> — тип файла, размер, длина записи и число записей из FCP-шаблона (любой можно оставить незаданным).</li>
|
||||
<li><strong>Проверить содержимое</strong> (опционально) — <strong>Точное</strong> (точное совпадение hex) или <strong>Маска</strong>, где <code class="font-mono text-sm">?</code> — шаблон на один полубайт (маска без <code class="font-mono text-sm">?</code> — совпадение префикса, например <code class="font-mono text-sm">0891</code> для MCC/MNC из IMSI). Для record-файлов хранится список по записям.</li>
|
||||
|
||||
Reference in New Issue
Block a user