From 47539c594fdd06ede22970057a018b3a6891c59a 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: Fri, 11 Sep 2026 20:58:09 +0300 Subject: [PATCH] =?UTF-8?q?i18n:=20profile=20Check=20button=20->=20'Check?= =?UTF-8?q?=20card'=20/=20'=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BA=D0=B0=D1=80=D1=82=D1=83'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Renamed the i18n key/value and both help references (profile list and Check description). SW cache v69 -> v70. --- frontend/help-ru.html | 4 ++-- frontend/help.html | 4 ++-- frontend/index.html | 4 ++-- frontend/sw.js | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/help-ru.html b/frontend/help-ru.html index 05284e8..20623d7 100644 --- a/frontend/help-ru.html +++ b/frontend/help-ru.html @@ -371,7 +371,7 @@
  • Новый профиль — создаёт пустой набор правил, запросив имя.
  • Профиль с карты — сканирует подключённую карту и создаёт по одному правилу на каждый существующий файл (см. ниже), затем открывает редактор.
  • Импорт профиля — загружает набор правил из JSON-файла (имя хранится внутри JSON).
  • -
  • В каждой строке профиля показаны имя и время создания, а также действия Проверить ▶, Редактировать, Экспорт (скачать JSON) и Удалить.
  • +
  • В каждой строке профиля показаны имя и время создания, а также действия Проверить карту ▶, Редактировать, Экспорт (скачать JSON) и Удалить.
  • Правила файловой системы

    Правила выполняются последовательно. Редактор показывает символьное имя файла pySim (если известно) рядом с путём правила; Добавить правило добавляет правило, Сохранить сохраняет изменения. Правило файловой системы задаётся:

    @@ -381,7 +381,7 @@
  • Атрибуты файла — тип файла, размер, длина записи и число записей из FCP-шаблона (любой можно оставить незаданным).
  • Проверить содержимое (опционально) — Точное (точное совпадение hex) или Маска, где ? — шаблон на один полубайт (маска без ? — совпадение префикса, например 0891 для MCC/MNC из IMSI). Для record-файлов хранится список по записям.
  • -

    Проверить выполняет каждое правило на подключённой карте и показывает строку прогресса и отчёт прохождения. Рядом с путём файла указывается, что именно проверялось (например, тип файла и размер, содержимое или полный FCI); если часть проверок прошла, а часть нет — каждый аспект помечается (тип файла ✓, размер ✗, содержимое ✓), а расхождения расписываются ниже. Несовпавшие сырые данные (FCI, содержимое, данные записей) показываются как поля только для чтения с моноширинным шрифтом — ожидаемое над фактическим, в одной и той же колонке — для удобного сравнения. Для record-файлов при расхождении содержимого добавляется пометка совпадающие записи: 1-5, 7-10 со списком записей, которые совпали.

    +

    Проверить карту выполняет каждое правило на подключённой карте и показывает строку прогресса и отчёт прохождения. Рядом с путём файла указывается, что именно проверялось (например, тип файла и размер, содержимое или полный FCI); если часть проверок прошла, а часть нет — каждый аспект помечается (тип файла ✓, размер ✗, содержимое ✓), а расхождения расписываются ниже. Несовпавшие сырые данные (FCI, содержимое, данные записей) показываются как поля только для чтения с моноширинным шрифтом — ожидаемое над фактическим, в одной и той же колонке — для удобного сравнения. Для record-файлов при расхождении содержимого добавляется пометка совпадающие записи: 1-5, 7-10 со списком записей, которые совпали.

    Опции сканирования «Профиль с карты»

    Диалог сканирования запрашивает имя профиля и предлагает селектор «Проверка FCP/FCI» (те же три режима, по умолчанию Тип файла + размер (FCP)), применяемый ко всем создаваемым правилам, а также список «Игнорировать содержимое файлов» (все отмечены по умолчанию) часто перезаписываемых файлов, содержимое которых пропускается: EF.LOCI, EF.PSLOCI, EF.EPSLOCI, EF.5GS3GPPLOCI, EF.Keys, EF.KeysPS, EF.SMS, EF.Kc, EF.KcGPRS, EF.LOCIGPRS, EF.CBMID, EF.SMSS. Ещё две отмеченные по умолчанию опции «Сравнивать первые 4 байта для» EF.IMSI и EF.ICCID захватывают содержимое этих файлов как маску только первых 4 байт (снимите для точного сравнения). Строка прогресса показывает N / всего файлов с текущим путём файла во время сканирования; при сканировании опции скрываются, а кнопки блокируются. Правила создаются только для файлов, которые реально существуют на карте (возвращён FCP-шаблон); отсутствующие файлы пропускаются. Пользовательские файлы из подвкладки «Пользовательские файлы» включаются с той же проверкой существования.

    diff --git a/frontend/help.html b/frontend/help.html index e117eda..4d86147 100644 --- a/frontend/help.html +++ b/frontend/help.html @@ -371,7 +371,7 @@
  • New profile — creates an empty ruleset after prompting for a name.
  • Profile from card — scans the equipped card and generates one rule per existing file (see below), then opens the editor.
  • Import profile — loads a ruleset from a JSON file (the name is stored inside the JSON).
  • -
  • Each profile row shows its name and creation time, with Check ▶, Edit, Export (download JSON), and Delete actions.
  • +
  • Each profile row shows its name and creation time, with Check card ▶, Edit, Export (download JSON), and Delete actions.
  • Filesystem rules

    Rules run sequentially. The editor shows the symbolic pySim name (when known) next to each rule’s path; use Add rule to append one and Save to keep the changes. A filesystem rule is defined by:

    @@ -381,7 +381,7 @@
  • File attributes — file type, size, record length and record count, taken from the FCP template (any may be left unset).
  • Check contents (optional) — Exact hex equality, or Mask where ? is a per-nibble wildcard (a mask with no ? is a prefix match, e.g. 0891 for the IMSI MCC/MNC). Record files store a per-record list.
  • -

    Check runs every rule against the equipped card and shows a live progress line plus a pass/fail report. Each row states exactly what was verified next to the file path (e.g. filetype and size, contents or exact FCI); when some checks pass and others fail, each aspect is marked (filetype ✓, size ✗, contents ✓) with the mismatches detailed below. Mismatched raw data (FCI, contents, record data) is shown as read-only monospace fields — expected above actual, aligned in the same column — for easy comparison. For record files with a contents mismatch, a matching records: 1-5, 7-10 note lists the records that did match.

    +

    Check card runs every rule against the equipped card and shows a live progress line plus a pass/fail report. Each row states exactly what was verified next to the file path (e.g. filetype and size, contents or exact FCI); when some checks pass and others fail, each aspect is marked (filetype ✓, size ✗, contents ✓) with the mismatches detailed below. Mismatched raw data (FCI, contents, record data) is shown as read-only monospace fields — expected above actual, aligned in the same column — for easy comparison. For record files with a contents mismatch, a matching records: 1-5, 7-10 note lists the records that did match.

    “Profile from card” scan options

    The scan dialog asks for a profile name and offers a “FCP/FCI check” selector (the same three modes above, default Filetype + size) applied to every generated rule, plus an “Ignore contents of files” checklist (all checked by default) of frequently-overwritten files whose contents are skipped: EF.LOCI, EF.PSLOCI, EF.EPSLOCI, EF.5GS3GPPLOCI, EF.Keys, EF.KeysPS, EF.SMS, EF.Kc, EF.KcGPRS, EF.LOCIGPRS, EF.CBMID, EF.SMSS. Two further checked-by-default options “Match first 4 bytes for” EF.IMSI and EF.ICCID capture those files’ contents as a mask of only the first 4 bytes (uncheck for exact matching). A progress line shows N / total files with the current file path while scanning; during the scan the options are hidden and the buttons are locked. Rules are created only for files that actually exist on the card (a FCP template is returned); missing files are skipped. Custom files from the Custom files sub-tab are included under the same existence check.

    diff --git a/frontend/index.html b/frontend/index.html index a746625..d26be13 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -7071,7 +7071,7 @@ function profilerRenderList() { html += '' + esc(new Date(p.created).toLocaleString()) + ''; html += '(' + p.rules.length + ' ' + esc(t('rules')) + ')'; html += ''; - html += ''; + html += ''; html += ''; html += ''; html += ''; @@ -8004,7 +8004,7 @@ const LANG_RU = { 'FCI hex (raw SELECT response)': 'FCI hex (сырой ответ SELECT)', 'No profiles defined.': 'Профили не заданы.', 'rules': 'правил', - 'Check': 'Проверить', + 'Check card': 'Проверить карту', 'Export': 'Экспорт', 'Profile name': 'Имя профиля', 'Please enter a profile name': 'Введите имя профиля', diff --git a/frontend/sw.js b/frontend/sw.js index 0352a77..3a82ecb 100644 --- a/frontend/sw.js +++ b/frontend/sw.js @@ -1,4 +1,4 @@ -const CACHE = 'otaman-v69'; +const CACHE = 'otaman-v70'; const URLS = [ 'index.html', 'help.html',