Форк PySim. То что хотелось добавить
Семён сохраняет полезное_)Много лет я пользовался pysim. За годы накопилось несколько даже попутных проектов для работы с файлами из pysim и надстроек к нему. Например - https://gitflic.ru/project/sdivcom/sim_translate
Но нашлись наконец-то силушки(на деле просто критическая масса проблем привысила все рамки).
За основу взят код из апстрима pysim и проект пока назван просто форк.
Форк - это osmocom/pysim плюс утилита pySim-translate.py. Она отвечает на два вопроса: что записано на карте и почему карта не работает. Всё, что умеет pySim, работает в форке так же: форк добавляет новое, а не меняет существующее.
Основа
Форк включает upstream по состоянию на 23 сентября 2026 года (коммит 3c437d4), последнее слияние сделано 27 сентября 2026 года.
Проект доступен здесь - https://gitflic.ru/project/sdivcom/pysim_fork
Что добавлено
Утилита pySim-translate.py
pySim показывает содержимое карты в терминах спецификаций: файлы, байты, поля структур. pySim-translate.py собирает из этого сводку, которую читает человек: идентификаторы, сети, службы, данные абонента - и диагностику с объяснением найденных проблем. Вывод на русском или английском языке (--lang ru|en). Та же сводка доступна внутри pySim-shell командой summary.
Чего в pySim нет вообще
Большая часть сводки собрана из декодеров pySim. Но кое-что форк делает сам:
- Диагностика. pySim разбирает файлы по одному и не сопоставляет их между собой. Форк проверяет, что сходится: IMSI с домашней сетью, службы с файлами, готовность к 5G и VoLTE, статус регистрации, контрольные суммы ICCID и EID.
- Паспорт чипа (CPLC) - изготовитель микросхемы, ОС, даты производства и персонализации (GET DATA 9F7F).
- OTA-сообщения в EF.SMS. pySim показывает защищённый пакет SMS-PP как испорченный текст; форк распознаёт его и выводит адресата (TAR) и параметры защиты.
- Правила ARA-M - кому правило даёт права оператора на Android, к какому приложению карты открывает доступ.
- Названия операторов по встроенной таблице MCC/MNC (3094 записи).
- Удалённые, но не затёртые сообщения и данные абонента одним списком.
- Чтение pcap и pcapng без tshark. Для файлов записи
pySim-trace.pyтребует pyshark и wireshark; форк читает их сам.
Ошибки pySim, которые форк обходит
По ходу работы нашлись четыре ошибки в самом pySim. Форк не правит upstream, а обходит их в своём коде:
- после ответа
63Cxна VERIFY без данных pySim шлёт лишний GET RESPONSE - счётчик попыток PIN теряется (зацикливание, которое это вызывало, upstream уже устранил); - смещение READ BINARY вычисляется через «и» вместо «или» и всегда равно нулю -
pySim-trace.pyне видит чтения файла по частям; encode_cmdдобавляет длину пакета OTA только к зашифрованному пакету;SmsCommandPacketбез контроля целостности пропускает байт KID, и TAR читается со сдвигом.
Тесты upstream в форке сохранены и запускаются вместе с тестами форка.
Что осталось прежним
pySim-shell,pySim-prog,pySim-read,pySim-traceи остальные утилиты работают как в upstream.- Дамп из
pySim-shell(fsdump) читается без изменений. Дамп, который снимает сам форк, — тот же формат с дополнительными полями (CPLC, счётчики PIN, апплеты, правила ARA-M).