diff --git a/frontend/help-ru.html b/frontend/help-ru.html index 08fbc4a..dd986e5 100644 --- a/frontend/help-ru.html +++ b/frontend/help-ru.html @@ -44,17 +44,17 @@
localStorage и сохраняется между перезагрузками.Построение командных APDU (C-APDU). Шесть подвкладок охватывают разные поколения карт и наборы команд: SIM RFM, USIM RFM, Expanded Script, RAM/GP, HTTP OTA и C-APDU Parser.
+Построение командных APDU (C-APDU). Шесть подвкладок охватывают разные поколения карт и наборы команд: SIM RFM, USIM RFM, Expanded Script, RAM/GP, HTTP OTA и Разбор C-APDU.
CLA = A0 (GSM 11.11 / TS 151 011, ISO 7816-4). Удалённое управление файлами классических SIM-карт.
Команды собираются в виде цепочки: нажмите кнопку + Command, чтобы добавить строку, заполните её поля — предпросмотр цепочки (над кнопкой упаковки) обновится автоматически. Добавьте строку GET RESPONSE, чтобы получить данные после SELECT. Кнопка Pack into Secured packet упаковывает всю цепочку в пакет SCP80.
Команды собираются в виде цепочки: нажмите кнопку + SELECT (или другую командную кнопку), чтобы добавить строку, заполните её поля — предпросмотр цепочки (над кнопкой упаковки) обновится автоматически. Добавьте строку GET RESPONSE, чтобы получить данные после SELECT. Кнопка Упаковать в Secured packet упаковывает всю цепочку в пакет SCP80.
| Команда | INS | Описание | @@ -138,7 +138,7 @@
|---|
| HTTP POST | 89 | Таблицы 4-8/9/10: Host-заголовок (8A), X-Admin-From agent ID (8B), URI (8C) — текст преобразуется в октеты. |
Command Scripting template (флажок) оборачивает всю команду 81 в формат Expanded Remote Application data с определённой длиной (AA, ETSI TS 102 226 §5.2.1) для TAR-ов, обрабатывающих расширенный формат (RAM-over-HTTP §4.7).
Pack into Secured packet отправляет готовый payload на вкладку SCP80 для заполнения SPI/счётчика — там укажите TAR, который слушает SD (обычно TAR OTASD).
+Флажок Обёртка в Command Scripting template ('AA') оборачивает всю команду 81 в формат Expanded Remote Application data с определённой длиной (AA, ETSI TS 102 226 §5.2.1) для TAR-ов, обрабатывающих расширенный формат (RAM-over-HTTP §4.7).
Упаковать в Secured packet отправляет готовый payload на вкладку SCP80 для заполнения SPI/счётчика — там укажите TAR, который слушает SD (обычно TAR OTASD).
Верхнеуровневая вкладка SCP80 объединяет разделы, связанные с SCP80. Переключение — тремя переключателями: Secured Packet, Cards и RAM. Собирает защищённые пакеты SCP80 по ETSI TS 102 225.
+Верхнеуровневая вкладка SCP80 объединяет разделы, связанные с SCP80. Переключение — тремя переключателями: Secured Packet, Карты и RAM. Собирает защищённые пакеты SCP80 по ETSI TS 102 225.
Собирает защищённые пакеты SCP80 по ETSI TS 102 225.
@@ -260,9 +260,9 @@10 (счётчик больше) или 11 (счётчик +1) согласно TS 102 225 §5.1.2/§5.1.3.100 по умолчанию или FF)Кнопка «Verify vs pySim» сверяет собранный пакет с эталонной реализацией OtaDialectSms.encode_cmd. Кнопка «Send to Card» доставляет пакет через ENVELOPE SMS-PP-DOWNLOAD (при подключении к серверу). Полученный Proof of Receipt декодируется и показывается строкой статуса PoR (статус, TAR, счётчик, сырой PoR); статусное слово и данные ответа последней команды подставляются на вкладку Response parser, а успешный PoR увеличивает счётчик повторов и очищает пакет.
Кнопка Проверить в pySim сверяет собранный пакет с эталонной реализацией OtaDialectSms.encode_cmd. Кнопка Отправить на карту доставляет пакет через ENVELOPE SMS-PP-DOWNLOAD (при подключении к серверу). Полученный Proof of Receipt декодируется и показывается строкой статуса PoR (статус, TAR, счётчик, сырой PoR); статусное слово и данные ответа последней команды подставляются на вкладку «Парсер ответов», а успешный PoR увеличивает счётчик повторов и очищает пакет.
Хранит предустановки карт локально в браузере (localStorage), чтобы представление Secured Packet могло автоматически подставлять ключи и параметры.
| Поле | Описание |
|---|---|
| KIc key / KID key | 16/24/32 hex-символа (ключи 8/16/24 байта 3DES) или 32/48/64 hex-символа (ключи 16/24/32 байта AES) |
Обмен предустановками: Export as JSON и Export to file для выгрузки, Import from file, Paste & import или Import JSON from clipboard для загрузки. Выбранная предустановка автоматически заполняет форму Secured Packet.
+Обмен предустановками: Экспорт в JSON и Экспорт в файл для выгрузки, Импорт из файла, Вставить и импортировать или Импорт JSON из буфера для загрузки. Выбранная предустановка автоматически заполняет форму Secured Packet.
Выполняет операции удалённого управления приложениями (Remote Application Management) как защищённые пакеты SCP80 через SMS-PP-DOWNLOAD ENVELOPE. Карта должна поддерживать SCP03 (AES или 3DES). Предустановка карты из подвкладки Cards обеспечивает SPI, ключи, TAR и счётчик.
+Выполняет операции удалённого управления приложениями (Remote Application Management) как защищённые пакеты SCP80 через SMS-PP-DOWNLOAD ENVELOPE. Карта должна поддерживать SCP03 (AES или 3DES). Предустановка карты из подвкладки Карты обеспечивает SPI, ключи, TAR и счётчик.
| Операция | Описание |
|---|---|
| Explore Card (all GP data) | Запрос GET STATUS для ISD, приложений, ELF и модулей ELF, а также GET DATA FF21 для информации о памяти. Результаты отображаются в обзоре с кнопками Delete для каждого элемента. |
| Install Package (.cap file) | Отправка .cap файла на карту через сервер: INSTALL[for load] → LOAD ×N → INSTALL[for install (+make selectable)]. |
| Обзор карты (все данные GP) | Запрос GET STATUS для ISD, приложений, ELF и модулей ELF, а также GET DATA FF21 для информации о памяти. Результаты отображаются в обзоре с кнопками Удалить для каждого элемента. |
| Установка пакета (.cap файл) | Отправка .cap файла на карту через сервер: INSTALL[for load] → LOAD ×N → INSTALL[for install (+make selectable)]. |
После выполнения «Explore Card» отображается:
+После выполнения «Обзор карты» отображается:
DELETE по AID).0x80).DELETE по AID).0x80).Удаление подтверждается через диалог браузера перед отправкой команды GP DELETE через SCP80. Обзор автоматически обновляется после успешного удаления.
Декодирует raw-ответ команды: выберите отправленную команду, введите SW (например, 9000) и hex данных ответа, затем нажмите Decode. Поля также автоматически заполняются статусным словом и данными ответа последней команды после успешного «Send to Card» (см. §3.1).
Декодирует raw-ответ команды: выберите отправленную команду, введите SW (например, 9000) и hex данных ответа, затем нажмите Декодировать. Поля также автоматически заполняются статусным словом и данными ответа последней команды после успешного нажатия Отправить на карту (см. §3.1).
Подключение к локальному pysim-otaman-server для работы с картой: введите URL сервера (по умолчанию http://127.0.0.1:8080) и нажмите Connect. Область статуса показывает состояние ридера/карты, а Equip card (пере)инициализирует карту после вставки. Подвкладки: File manager, Custom files, Profiler, pySim command line, Raw APDU и Proactive UICC.
Подключение к локальному pysim-otaman-server для работы с картой: введите URL сервера (по умолчанию http://127.0.0.1:8080) и нажмите Подключиться. Область статуса показывает состояние ридера/карты, а Подключить карту (пере)инициализирует карту после вставки. Подвкладки: Файловый менеджер, Пользовательские файлы, Профайлер, Командная строка pySim, Отправка APDU и Проактивный UICC.
Дерево файловой системы отображается слева; выбор файла открывает панель деталей справа.
Добавление файлов, не покрытых моделью pySim: введите полный путь (например, 3F00/7F20/6F46) и псевдоним (например, EF.SPN), затем нажмите Add; добавленные файлы появляются в дереве File manager. Список сохраняется в localStorage; обмен — Export as JSON / Export to file и Import from file / Paste & import / Import JSON from clipboard.
Добавление файлов, не покрытых моделью pySim: введите полный путь (например, 3F00/7F20/6F46) и псевдоним (например, EF.SPN), затем нажмите Добавить; добавленные файлы появляются в дереве «Файловый менеджер». Список сохраняется в localStorage; обмен — Экспорт в JSON / Экспорт в файл и Импорт из файла / Вставить и импортировать / Импорт JSON из буфера.
Выполнение любых команд pySim-shell с подсказками (300 мс) и автодополнением.
-Отправка произвольного APDU и просмотр ответа.
-Работа с сессией Card Application Toolkit: меню STK, подписанные события, журнал проактивных команд, словарь данных PROVIDE LOCAL INFORMATION и опрос STATUS.
Если карта выдала команду SET UP MENU, вверху этого представления появляется блок «STK menu» с изумрудной кнопкой STK: <название>, открывающей оверлей меню (браузер STK-меню карты). Если карта не задала меню, вместо кнопки показывается «No menu set by the card». Состояние меню обновляется при каждом открытии представления.
+Если карта выдала команду SET UP MENU, вверху этого представления появляется блок «Меню STK» с изумрудной кнопкой STK: <название>, открывающей оверлей меню (браузер STK-меню карты). Если карта не задала меню, вместо кнопки показывается «Меню не задано картой». Состояние меню обновляется при каждом открытии представления.
События, которые отслеживает карта. У каждого события есть кнопка Send, открывающая форму, специфичную для типа события:
+События, которые отслеживает карта. У каждого события есть кнопка Отправить, открывающая форму, специфичную для типа события:
9B)Отправка события использует ENVELOPE(Event Download) по TS 102 223 / TS 131 111.
Хронологический список извлечённых проактивных команд. Каждая строка показывает время, код типа, имя и декодированный квалификатор (для команд, у которых он есть). Для команд с данными ответа показывается строка Response: с байтами TERMINAL RESPONSE (без служебных TLV); ответы PROVIDE LOCAL INFORMATION декодируются через словарь данных PLI.
Хронологический список извлечённых проактивных команд. Каждая строка показывает время, код типа, имя и декодированный квалификатор (для команд, у которых он есть). Для команд с данными ответа показывается строка Ответ: с байтами TERMINAL RESPONSE (без служебных TLV); ответы PROVIDE LOCAL INFORMATION декодируются через словарь данных PLI.
Редактируемые hex-значения для всех 22 квалификаторов PLI (TS 102 223 §8.6 + TS 131 111). У десяти квалификаторов есть встроенные формы декодирования/кодирования:
@@ -362,69 +362,69 @@Значения хранятся на сервере до перезапуска. Когда карта выдаёт PLI, сервер вставляет значения словаря в TERMINAL RESPONSE.
Кнопка Send STATUS отправляет STATUS (F2) вручную. Переключатель Polling включает фоновый опрос: после настраиваемого интервала бездействия (аргумент сервера --poll-interval, 1–255 с, по умолчанию 30 с) сервер отправляет STATUS и обрабатывает любую ожидающую проактивную команду. При извлечении карты опрос останавливается, а состояние карты сбрасывается.
Кнопка Отправить STATUS отправляет STATUS (F2) вручную. Переключатель Опрос включает фоновый опрос: после настраиваемого интервала бездействия (аргумент сервера --poll-interval, 1–255 с, по умолчанию 30 с) сервер отправляет STATUS и обрабатывает любую ожидающую проактивную команду. При извлечении карты опрос останавливается, а состояние карты сбрасывается.
Проверяет соответствие карты именованному профилю — упорядоченному набору правил, описывающих ожидаемую файловую систему и (опционально) содержимое файлов. Профили хранятся в localStorage.
Правила выполняются последовательно. Редактор показывает символьное имя файла pySim (если известно) рядом с путём правила; Add rule добавляет правило, Save сохраняет изменения. Правило файловой системы задаётся:
+Правила выполняются последовательно. Редактор показывает символьное имя файла pySim (если известно) рядом с путём правила; Добавить правило добавляет правило, Сохранить сохраняет изменения. Правило файловой системы задаётся:
MF (например, MF/7F10/6F3A) или с AID ADF (например, A0000000871002/6F07).'62' — выявляет изменения FID/AID, жизненного цикла, атрибутов безопасности и проприетарных параметров).'62' — выявляет изменения FID/AID, жизненного цикла, атрибутов безопасности и проприетарных параметров).? — шаблон на один полубайт (маска без ? — совпадение префикса, например 0891 для MCC/MNC из IMSI). Для record-файлов хранится список по записям.? — шаблон на один полубайт (маска без ? — совпадение префикса, например 0891 для MCC/MNC из IMSI). Для record-файлов хранится список по записям.Check выполняет каждое правило на подключённой карте и показывает строку прогресса и отчёт прохождения. Рядом с путём файла указывается, что именно проверялось (например, тип файла и размер, содержимое или точный FCI); если часть проверок прошла, а часть нет — каждый аспект помечается (тип файла ✓, размер ✗, содержимое ✓), а расхождения расписываются ниже. Несовпавшие сырые данные (FCI, содержимое, данные записей) показываются как поля только для чтения с моноширинным шрифтом — ожидаемое над фактическим, в одной и той же колонке — для удобного сравнения. Для record-файлов при расхождении содержимого добавляется пометка совпадающие записи: 1-5, 7-10 со списком записей, которые совпали.
-Диалог сканирования запрашивает имя профиля и предлагает селектор «FCP/FCI check» (те же три режима, по умолчанию Filetype + size), применяемый ко всем создаваемым правилам, а также список «Ignore contents of» (все отмечены по умолчанию) часто перезаписываемых файлов, содержимое которых пропускается: EF.LOCI, EF.PSLOCI, EF.EPSLOCI, EF.5GS3GPPLOCI, EF.Keys, EF.KeysPS, EF.SMS, EF.Kc, EF.KcGPRS, EF.LOCIGPRS, EF.CBMID, EF.SMSS. Ещё две отмеченные по умолчанию опции «Match first 4 bytes for» EF.IMSI и EF.ICCID захватывают содержимое этих файлов как маску только первых 4 байт (снимите для точного сравнения). Строка прогресса показывает N / всего файлов с текущим путём файла во время сканирования; при сканировании опции скрываются, а кнопки блокируются. Правила создаются только для файлов, которые реально существуют на карте (возвращён FCP-шаблон); отсутствующие файлы пропускаются. Пользовательские файлы из подвкладки Custom files включаются с той же проверкой существования.
Проверить выполняет каждое правило на подключённой карте и показывает строку прогресса и отчёт прохождения. Рядом с путём файла указывается, что именно проверялось (например, тип файла и размер, содержимое или точный 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-шаблон); отсутствующие файлы пропускаются. Пользовательские файлы из подвкладки «Пользовательские файлы» включаются с той же проверкой существования.
3F00/7F20/6F46) и псевдоним (например, EF.SPN).9000) он работает как обычный файл.B.1 Ответы на PROVIDE LOCAL INFORMATION (PLI)
01), Location Info (00), Access Technology (06) и т.д.B.2 Симуляция сетевых действий через ENVELOPE (event download)
ENVELOPE(Event Download).ENVELOPE(Event Download).B.3 Проверка симулированной среды
Для работы с картой (вкладка Card reader, Proactive UICC, доставка OTA) нужен локальный pysim-otaman-server — встроенный в OTAMan HTTP-сервер, оборачивающий pySim, работающий с ридером через PC/SC или serial и раздающий сам PWA (откройте http://127.0.0.1:8080).
Для работы с картой (вкладка «Картридер», «Проактивный UICC», доставка OTA) нужен локальный pysim-otaman-server — встроенный в OTAMan HTTP-сервер, оборачивающий pySim, работающий с ридером через PC/SC или serial и раздающий сам PWA (откройте http://127.0.0.1:8080).
-d /dev/ttyUSB0 (Linux)Если карта отсутствует, вкладка Card reader показывает «No card detected». Вставьте карту и нажмите Equip card для инициализации.
+Если карта отсутствует, вкладка «Картридер» показывает «Карта не обнаружена. Вставьте карту и нажмите Подключить карту».
# Создать и активировать venv diff --git a/frontend/help.html b/frontend/help.html index 440e822..f07d220 100644 --- a/frontend/help.html +++ b/frontend/help.html @@ -54,7 +54,7 @@2.1 SIM RFM
CLA =
-A0(GSM 11.11 / TS 151 011, ISO 7816-4). Remote File Management for classic SIM cards.Commands are assembled as a chain: press a
++ Commandbutton to append a row, fill that row’s fields, and the chain preview (above the pack button) updates automatically. Add a GET RESPONSE row to fetch data following a SELECT. Press Pack into Secured packet to wrap the whole chain into an SCP80 packet.Commands are assembled as a chain: press a command button (e.g.
+ SELECT) to append a row, fill that row’s fields, and the chain preview (above the pack button) updates automatically. Add a GET RESPONSE row to fetch data following a SELECT. Press Pack into Secured packet to wrap the whole chain into an SCP80 packet.
| Command | INS | Description | diff --git a/frontend/sw.js b/frontend/sw.js index 36ff3d5..2f3944a 100644 --- a/frontend/sw.js +++ b/frontend/sw.js @@ -1,4 +1,4 @@ -const CACHE = 'otaman-v63'; +const CACHE = 'otaman-v64'; const URLS = [ 'index.html', 'help.html',
|---|