diff --git a/README.md b/README.md index 4c8c0bc..d86f9aa 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# OTAMan — SIM OTA toolkit: PWA + local card server +# SIMple — SIM OTA toolkit: PWA + local card server -OTAMan is an offline HTML/JS PWA for building APDU commands (SIM, USIM, GlobalPlatform RAM), assembling SCP80 secured packets per ETSI TS 102 225, and constructing Expanded Remote Application data format APDU per ETSI TS 102 226. A bundled [`pysim-otaman-server`](pysim_otaman_server/) exposes a local HTTP API over pySim for live card operations: file manager, raw APDU, SIM Toolkit menu browsing, and OTA (SCP80) delivery. +SIMple is an offline HTML/JS PWA for building APDU commands (SIM, USIM, GlobalPlatform RAM), assembling SCP80 secured packets per ETSI TS 102 225, and constructing Expanded Remote Application data format APDU per ETSI TS 102 226. A bundled [`pysim-simple-server`](pysim_simple_server/) exposes a local HTTP API over pySim for live card operations: file manager, raw APDU, SIM Toolkit menu browsing, and OTA (SCP80) delivery. -**Demo:** [otaman.atroshin.ru](https://otaman.atroshin.ru) — the PWA alone, for experimenting. Install the server (below) for card-reader functions. +**Demo:** [simple.atroshin.ru](https://simple.atroshin.ru) — the PWA alone, for experimenting. Install the server (below) for card-reader functions. ## Quick start @@ -11,8 +11,8 @@ OTAMan is an offline HTML/JS PWA for building APDU commands (SIM, USIM, GlobalPl **Full (PWA + card server):** ```sh -git clone https://github.com/anttro/otaman.git -cd otaman +git clone https://github.com/anttro/simple.git +cd simple ./setup.sh # or setup.bat on Windows — creates .venv, installs pysim + server ./start.sh # or start.bat — starts the server (it serves the PWA too) ``` @@ -480,9 +480,9 @@ Delete confirms via a browser prompt before sending the GP `DELETE` command via ## Card Reader (pySim integration) -Connects to the bundled [`pysim-otaman-server`](pysim_otaman_server/) for live card operations. +Connects to the bundled [`pysim-simple-server`](pysim_simple_server/) for live card operations. -> **Browser restriction:** when the PWA is served from a public HTTPS host, reaching the local server (`http://127.0.0.1:8080`) requires two things: the server must send `Access-Control-Allow-Private-Network: true` (pysim-otaman-server ≥ 1.6.1 does this automatically), and the browser must be allowed to access the local network — in Chrome/Edge/Vivaldi: Site settings → Local network access → allow the site (or accept the permission prompt). Without the browser permission, the request to `127.0.0.1` is blocked before any preflight is sent. +> **Browser restriction:** when the PWA is served from a public HTTPS host, reaching the local server (`http://127.0.0.1:8080`) requires two things: the server must send `Access-Control-Allow-Private-Network: true` (pysim-simple-server ≥ 1.6.1 does this automatically), and the browser must be allowed to access the local network — in Chrome/Edge/Vivaldi: Site settings → Local network access → allow the site (or accept the permission prompt). Without the browser permission, the request to `127.0.0.1` is blocked before any preflight is sent. ### File Browser @@ -605,7 +605,7 @@ The state line shows the listener, the negotiated identity and live channels (by ### Scripts -The **Scripts** pill manages named APDU lists stored in `localStorage` (`otaman_scripts`) and sent to the server when a listener starts. Each list is a sequence of hex C-APDUs, one per line (`#`/`;` comments allowed). **New** creates one from a template: +The **Scripts** pill manages named APDU lists stored in `localStorage` (`simple_scripts`) and sent to the server when a listener starts. Each list is a sequence of hex C-APDUs, one per line (`#`/`;` comments allowed). **New** creates one from a template: | Template | What it builds | |---|---| @@ -618,7 +618,7 @@ The table lists each script with kind, APDU count and creation time; **Edit** op ## PWA -OTAMan is a Progressive Web App and can be installed for offline use. Use the **INSTALL PWA** button in the header, or use the browser's install prompt. +SIMple is a Progressive Web App and can be installed for offline use. Use the **INSTALL PWA** button in the header, or use the browser's install prompt. - Service worker pre-caches all assets on first visit - App icons at 192×192 and 512×512 @@ -631,9 +631,9 @@ A dark theme is included. It follows the system preference and can be toggled ma The interface is in English with Russian support. The language is detected from `navigator.language`; the header toggle (EN/RU) stores the choice in `localStorage`. Switching the language also re-renders visible dynamic views (profile lists, check reports, snapshots, cards, proactive views). -## Server (pysim-otaman-server) +## Server (pysim-simple-server) -The bundled Python server wraps [pySim](https://osmocom.org/projects/pysim/wiki) and serves both the OTAMan PWA (from `frontend/`) and a JSON API under `/api/*`. +The bundled Python server wraps [pySim](https://osmocom.org/projects/pysim/wiki) and serves both the SIMple PWA (from `frontend/`) and a JSON API under `/api/*`. ### Prerequisites @@ -657,7 +657,7 @@ python3 -m venv .venv source .venv/bin/activate # Linux/macOS (Windows: .venv\Scripts\activate) pip install git+https://github.com/osmocom/pysim.git pip install -e . # editable — serves frontend/ from the source tree -pysim-otaman-server --http-port 8080 +pysim-simple-server --http-port 8080 ``` ### CLI options @@ -699,7 +699,7 @@ The UI is in English with Russian language support. Language is detected from th ## Version compatibility -| PWA (OTAMan) | Server | Status | +| PWA (SIMple) | Server | Status | |-------------|--------|--------| | 1.x.x | 1.x.x | ✅ Compatible | | 1.x.x | 0.x.x | ❌ Outdated — update server | diff --git a/README_RUS.md b/README_RUS.md index 201dc4c..fca2694 100644 --- a/README_RUS.md +++ b/README_RUS.md @@ -1,8 +1,8 @@ -# OTAMan — SIM OTA toolkit: PWA + локальный сервер карт +# SIMple — SIM OTA toolkit: PWA + локальный сервер карт -OTAMan — автономный offline-PWA (HTML/JS) для создания APDU-команд (SIM, USIM, GlobalPlatform RAM), сборки защищённых пакетов SCP80 по ETSI TS 102 225 и построения Expanded Remote Application data format APDU по ETSI TS 102 226. В комплекте — [`pysim-otaman-server`](pysim_otaman_server/) — локальный HTTP-сервер поверх pySim для работы с картой: файловый менеджер, сырые APDU, меню SIM Toolkit и доставка OTA. +SIMple — автономный offline-PWA (HTML/JS) для создания APDU-команд (SIM, USIM, GlobalPlatform RAM), сборки защищённых пакетов SCP80 по ETSI TS 102 225 и построения Expanded Remote Application data format APDU по ETSI TS 102 226. В комплекте — [`pysim-simple-server`](pysim_simple_server/) — локальный HTTP-сервер поверх pySim для работы с картой: файловый менеджер, сырые APDU, меню SIM Toolkit и доставка OTA. -**Демо:** [otaman.atroshin.ru](https://otaman.atroshin.ru) — только PWA, для экспериментов. Для функций картридера установите сервер (ниже). +**Демо:** [simple.atroshin.ru](https://simple.atroshin.ru) — только PWA, для экспериментов. Для функций картридера установите сервер (ниже). ## Быстрый старт @@ -11,8 +11,8 @@ OTAMan — автономный offline-PWA (HTML/JS) для создания AP **Полная установка (PWA + сервер карт):** ```sh -git clone https://github.com/anttro/otaman.git -cd otaman +git clone https://github.com/anttro/simple.git +cd simple ./setup.sh # или setup.bat в Windows — создаёт .venv, ставит pysim + сервер ./start.sh # или start.bat — запускает сервер (он же раздаёт PWA) ``` @@ -454,9 +454,9 @@ Delivery PoR (SPI2 `01`) проще — карта возвращает PoR на ## Card Reader (интеграция с pySim) -Подключение к встроенному [`pysim-otaman-server`](pysim_otaman_server/) для работы с картой. +Подключение к встроенному [`pysim-simple-server`](pysim_simple_server/) для работы с картой. -> **Ограничение браузера:** если PWA раздаётся с публичного HTTPS-хоста, для доступа к локальному серверу (`http://127.0.0.1:8080`) нужны два условия: сервер должен отправлять `Access-Control-Allow-Private-Network: true` (pysim-otaman-server ≥ 1.6.1 делает это автоматически), и браузеру должно быть разрешено обращаться к локальной сети — в Chrome/Edge/Vivaldi: Настройки сайта → Доступ к локальной сети → разрешить сайт (или подтвердить запрос). Без разрешения браузера запрос к `127.0.0.1` блокируется ещё до отправки preflight. +> **Ограничение браузера:** если PWA раздаётся с публичного HTTPS-хоста, для доступа к локальному серверу (`http://127.0.0.1:8080`) нужны два условия: сервер должен отправлять `Access-Control-Allow-Private-Network: true` (pysim-simple-server ≥ 1.6.1 делает это автоматически), и браузеру должно быть разрешено обращаться к локальной сети — в Chrome/Edge/Vivaldi: Настройки сайта → Доступ к локальной сети → разрешить сайт (или подтвердить запрос). Без разрешения браузера запрос к `127.0.0.1` блокируется ещё до отправки preflight. ### Файловый менеджер @@ -575,7 +575,7 @@ Delivery PoR (SPI2 `01`) проще — карта возвращает PoR на ### Скрипты -Подвкладка **Scripts** управляет именованными списками APDU, которые хранятся в `localStorage` (`otaman_scripts`) и передаются серверу при старте слушателя. Каждый список — последовательность hex C-APDU, по одной в строке (допускаются комментарии `#`/`;`). Кнопка **New** создаёт список из шаблона: +Подвкладка **Scripts** управляет именованными списками APDU, которые хранятся в `localStorage` (`simple_scripts`) и передаются серверу при старте слушателя. Каждый список — последовательность hex C-APDU, по одной в строке (допускаются комментарии `#`/`;`). Кнопка **New** создаёт список из шаблона: | Шаблон | Что строит | |---|---| @@ -588,7 +588,7 @@ Delivery PoR (SPI2 `01`) проще — карта возвращает PoR на ## PWA -OTAMan — Progressive Web App. Можно установить для offline-использования через кнопку **INSTALL PWA** или через браузер. +SIMple — Progressive Web App. Можно установить для offline-использования через кнопку **INSTALL PWA** или через браузер. - Service worker кеширует все ресурсы при первом посещении - Иконки 192×192 и 512×512 @@ -603,7 +603,7 @@ OTAMan — Progressive Web App. Можно установить для offline- ## Совместимость версий -| PWA (OTAMan) | Сервер | Статус | +| PWA (SIMple) | Сервер | Статус | |---|---|---| | 1.x.x | 1.x.x | ✅ Совместимы | | 1.x.x | 0.x.x | ❌ Сервер устарел | @@ -613,7 +613,7 @@ PWA проверяет версию сервера при подключении --- -## Сервер (pysim-otaman-server) +## Сервер (pysim-simple-server) Встроенный Python-сервер оборачивает [pySim](https://osmocom.org/projects/pysim/wiki) и раздаёт как PWA (из `frontend/`), так и JSON API по `/api/*`. @@ -639,7 +639,7 @@ python3 -m venv .venv source .venv/bin/activate # Linux/macOS (Windows: .venv\Scripts\activate) pip install git+https://github.com/osmocom/pysim.git pip install -e . # editable — раздаёт frontend/ из исходного дерева -pysim-otaman-server --http-port 8080 +pysim-simple-server --http-port 8080 ``` ### Параметры CLI diff --git a/docs/api.md b/docs/api.md index 3805dcc..fcc63c1 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1,4 +1,4 @@ -# pysim-otaman-server — HTTP API reference +# pysim-simple-server — HTTP API reference The server exposes a JSON HTTP API under `/api/*`. All responses carry `Access-Control-Allow-Origin: *` (plus `Access-Control-Allow-Private-Network: true` @@ -6,7 +6,7 @@ on the preflight), so the API is reachable from a separately-hosted PWA. ## Version compatibility -| Server | PWA (OTAMan) | Status | +| Server | PWA (SIMple) | Status | |--------|-------------|--------| | 1.x.x | 1.x.x | ✅ Compatible | | 0.x.x | 1.x.x | ❌ Outdated — update server | diff --git a/docs/scp81-findings.md b/docs/scp81-findings.md index d3788cb..93d0f39 100644 --- a/docs/scp81-findings.md +++ b/docs/scp81-findings.md @@ -5,7 +5,7 @@ Purpose: record **every attempted configuration and its outcome**, so the same variations are not repeated. Add rows as tests are run; keep the confirmed rules section current. -Setup: `pysim_otaman_server` with a PC/SC reader, the PWA SCP81 tab (or +Setup: `pysim_simple_server` with a PC/SC reader, the PWA SCP81 tab (or `POST /api/scp81/bip`), the card triggered by its SMS-PP push / the Location status event. Server log at `GET /api/scp81/log`, script state at `GET /api/scp81/script`, proactive history at `GET /api/proactive-log`. diff --git a/frontend/help-ru.html b/frontend/help-ru.html index 1a297a7..73e7d37 100644 --- a/frontend/help-ru.html +++ b/frontend/help-ru.html @@ -3,7 +3,7 @@ -OTAMan — Справка +SIMple — Справка @@ -16,12 +16,12 @@
-

OTAMan Документация

+

SIMple Документация

1. Обзор

-

OTAMan — Progressive Web App (PWA) для построения APDU-команд, сборки защищённых пакетов SCP80, просмотра меню SIM Toolkit (STK) и симуляции реальной сетевой среды для тестирования SIM/USIM/UICC-карт через PC/SC-ридер.

-

Приложение — один статический файл index.html. Все вычисления выполняются в браузере; доступ к карте — через локальный HTTP-сервер (pysim-otaman-server), оборачивающий библиотеку pySim.

-
Браузер (OTAMan PWA) → HTTP :8080 → pysim-otaman-server → pySim → PC/SC → ридер → UICC/SIM
+

SIMple — Progressive Web App (PWA) для построения APDU-команд, сборки защищённых пакетов SCP80, просмотра меню SIM Toolkit (STK) и симуляции реальной сетевой среды для тестирования SIM/USIM/UICC-карт через PC/SC-ридер.

+

Приложение — один статический файл index.html. Все вычисления выполняются в браузере; доступ к карте — через локальный HTTP-сервер (pysim-simple-server), оборачивающий библиотеку pySim.

+
Браузер (SIMple PWA) → HTTP :8080 → pysim-simple-server → pySim → PC/SC → ридер → UICC/SIM

Стандарты, на которые опирается приложение: