OTA SMS Generator SIM RFM · TS 31.115 / TS 102 225 / TS 102 226

Конструктор бинарных СМС для удалённой записи файлов на SIM/USIM

1Цель

2Действие на карте

Поддержка GSM-7, UCS-2 (префикс 0x80) и компактного UCS-2 (0x81 с base pointer). Кодировка выбирается автоматически.
Сгенерированный APDU-поток (Secured Data, plaintext)

3Безопасность (SPI, KIc, KID)

RC00 = ничего
CRC01
CC10 = MAC
DS11
Шифрb3=1
No CNTR00
Info01
Monotonic10
Strict +111
No PoR00
PoR always01
PoR on err10
PoR: none00
PoR: RC01
PoR: CC10
PoR: DS11
PoR шифрb5=1
PoR via SUBMITb6=1 (вместо DELIVER-REPORT)
16 21

1515(1-байтовые идентификаторы в заголовке)
⚠️ KIc и KID — это ДВА разных ключа по 16 байт каждый (для 3DES-2key). KIc шифрует тело пакета, KID считает MAC. Не путать с однобайтовыми идентификаторами KIc/KID в заголовке, которые кодируют только алгоритм и KVN. Если оператор дал «KIK» — это, скорее всего, ключ для команды PUT KEY (= DEK в GlobalPlatform), либо его слово для KIc — уточни у оператора.

4Адресация и счётчик

5Транспорт SMS

Содержимое .smshex-файлов меняется в зависимости от того, на каком уровне ваш SMSC принимает данные. UDH+CP — самый универсальный вариант для SMPP submit_sm.short_message.

Расчётный pipeline

  1. Сборка APDU-цепочки → Secured Data
  2. Расчёт паддинга PCNTR для выравнивания шифр-блока (8 байт)
  3. Сборка Command Header (CPL, CHL, SPI, KIc, KID, TAR, CNTR, PCNTR)
  4. Расчёт CC = 3DES-CBC-MAC по K1/K2 (MAC-вход включает CPL+CHL)
  5. Шифрование SPI..PCNTR..CC..SD+pad ключом KIc, CBC, IV=0
  6. Финал: CPL+CHL (открыто) + шифротекст

PTНезашифрованный пакет (plaintext)

Полный Command Packet до шага шифрования. CC уже подсчитан. В этой форме видны APDU-команды — удобно для аудита.
Hex (с разметкой полей)
CPL CHL/PCNTR SPI KIc/KID TAR CNTR CC Secured Data padding
MAC-вход (что попало в расчёт CC)
Шифр-вход (что пошло в 3DES-CBC)

CTЗашифрованный пакет (для отправки)

CPL и CHL остаются открытыми — приёмник на карте читает их до дешифровки. SPI и далее зашифрованы.
Hex (то, что физически уходит)
С UDH-префиксом (содержимое TP-UD)

Скачать / Скопировать

Если браузер блокирует скачивание из песочницы — жми «Копировать» и сохраняй вручную в любой текстовый файл.
plaintext .smshex (для аудита)
encrypted .smshex (для SMSC)
manifest.json