diff --git a/README.md b/README.md index 19adcd5..9be73c4 100644 --- a/README.md +++ b/README.md @@ -529,7 +529,7 @@ The scan dialog asks for a profile name and offers the FCP/FCI mode described ab #### Card snapshots -The list view has two tabs — **Profiles** and **Card snapshots**. A snapshot is an immutable capture of the card filesystem: for every existing file it stores the path, symbolic name, file type, size (or record length/count), the raw FCI from the SELECT response, and the contents whenever the file is readable (no ignore list, no masking). The ICCID is decoded from EF.ICCID and shown next to the snapshot name. +The list view has two tabs — **Profiles** and **Card snapshots**. A snapshot is an immutable capture of the card filesystem: for every existing file it stores the path, symbolic name, file type, size (or record length/count), the raw FCI from the SELECT response, and the contents whenever the file is readable (no ignore list, no masking). The ICCID is decoded from EF.ICCID and shown next to the snapshot name. The scan also measures every card command (SELECT / READ BINARY / READ RECORD) from command to response and stores min/avg/max per type plus the total scan time; the snapshot view shows these in the summary and the select/read time per file (read time per record). Timings are display-only and ignored by checks/comparisons. - **New snapshot** scans the card; **Import snapshot** loads JSON. - Each snapshot row has **Open** (all captured data read-only, raw FCI with decoded FCI and contents; only the name is editable), **Export**, and **Delete**. diff --git a/README_RUS.md b/README_RUS.md index c515057..4a93797 100644 --- a/README_RUS.md +++ b/README_RUS.md @@ -503,7 +503,7 @@ Delivery PoR (SPI2 `01`) проще — карта возвращает PoR на #### Снимки карт -Представление списка имеет две вкладки — **«Профили»** и **«Снимки карт»**. Снимок — неизменяемая фиксация файловой системы: путь, символьное имя, тип, размер (или длина/число записей), сырой FCI и содержимое (если читается) каждого существующего файла. ICCID декодируется из EF.ICCID и показывается рядом с именем. +Представление списка имеет две вкладки — **«Профили»** и **«Снимки карт»**. Снимок — неизменяемая фиксация файловой системы: путь, символьное имя, тип, размер (или длина/число записей), сырой FCI и содержимое (если читается) каждого существующего файла. ICCID декодируется из EF.ICCID и показывается рядом с именем. При сканировании также измеряется время каждой команды карты (SELECT / READ BINARY / READ RECORD) от отправки до ответа; сохраняются min/сред/max по типам и общее время сканирования — они показываются в сводке снимка и по файлам/записям. Время носит информационный характер и не используется при проверках и сравнении. - **Новый снимок** сканирует карту; **Импорт снимка** загружает JSON. - В строке снимка: **Открыть** (все данные только для чтения, сырой FCI с декодированным и содержимое; редактируется только имя), **Экспорт**, **Удалить**. diff --git a/docs/api.md b/docs/api.md index 5419abe..f424e27 100644 --- a/docs/api.md +++ b/docs/api.md @@ -277,15 +277,22 @@ Read file content. Auto-detects transparent vs record files. Returns transparent data: ```json -{"success": true, "sw": "9000", "file_type": "transparent", "data": "..."} +{"success": true, "sw": "9000", "file_type": "transparent", "data": "...", + "apdu_times": [{"type": "select", "ms": 12}, {"type": "read_binary", "ms": 9}]} ``` Returns records: ```json {"success": true, "sw": "9000", "file_type": "linear_fixed", - "records": [{"num": 1, "data": "..."}, {"num": 2, "data": "..."}]} + "records": [{"num": 1, "data": "..."}, {"num": 2, "data": "..."}], + "apdu_times": [{"type": "select", "ms": 12}, + {"type": "read_record", "ms": 11}, {"type": "read_record", "ms": 13}]} ``` +`apdu_times` reports each command's duration (command sent to response +received) classified as `select`, `read_binary` or `read_record`; the PWA uses +it for snapshot timing statistics. Other commands are not reported. + ### `POST /api/write` Write raw hex data to a file. @@ -316,7 +323,8 @@ Returns: ```json {"name": "EF.ICCID", "fid": "2FE2", "file_type": "transparent", "file_size": 10, "record_len": null, "num_of_rec": null, - "fci_hex": "621082024021...", "exists": true} + "fci_hex": "621082024021...", + "apdu_times": [{"type": "select", "ms": 12}], "exists": true} ``` `fci_hex` is the raw FCP template (`'62'`) from the SELECT response, used by diff --git a/frontend/help-ru.html b/frontend/help-ru.html index e256e21..4fc65ec 100644 --- a/frontend/help-ru.html +++ b/frontend/help-ru.html @@ -394,7 +394,7 @@

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

Снимки карт

-

Представление списка имеет две вкладки — «Профили» и «Снимки карт». Снимок карты — неизменяемая фиксация файловой системы карты: для каждого существующего файла сохраняются путь, символьное имя, тип, размер (или длина/число записей), сырой FCI из ответа SELECT и содержимое, если файл читается (без списка игнорирования и без масок). ICCID декодируется из EF.ICCID и показывается рядом с именем снимка.

+

Представление списка имеет две вкладки — «Профили» и «Снимки карт». Снимок карты — неизменяемая фиксация файловой системы карты: для каждого существующего файла сохраняются путь, символьное имя, тип, размер (или длина/число записей), сырой FCI из ответа SELECT и содержимое, если файл читается (без списка игнорирования и без масок). ICCID декодируется из EF.ICCID и показывается рядом с именем снимка. При сканировании измеряется время каждой команды карты (SELECT, READ BINARY, READ RECORD) от отправки до ответа; снимок хранит min/сред/max по каждому типу команд и общее время сканирования, а в представлении эти значения показываются в сводке под заголовком, время select/read — для каждого файла и время чтения — для каждой записи. Время носит информационный характер и не используется при проверках и сравнении.