Как получить доступ к SIM-карте программно?

просто любая старая GSM-совместимая SIM-карта (бонус для 3G USIM).

Я полагаю, мне нужно оборудование? Может ли кто-нибудь порекомендовать что-то дешевое для любителя и что-то более профессиональное?

Я предполагаю, что будут полные документы API с h/w, поэтому, возможно, это должно быть помечено как "не связанное с программированием"? Прости, если так.

любые хорошие URL-адреса или книги (я знаком со стандартами 3GPP).

Я не (черная шляпа) взлом, не волнуйтесь, просто не доволен такими, как секретарь SIM-карты, восстановление данных врача и т. д., Поэтому хотел бы кодировать свой собственный, но может превратить его в коммерческий или предложить услуги по программированию SIM-карты (восстановление данных с поврежденной карты и т. д.) В качестве боковой линии.


обновление: хотя мне в первую очередь интересно просто читать мои SMS для резервного копирования, это может быть бонус, если кто-то знает о дешевом писателе SIM-карты (так что я могу создать резервную копию всех или части SIM-карты и восстановить ее позже)

5 ответов


вы можете сделать это с любым считывателем смарт-карт PC/SC (и writer, как указывали другие) и программой, которая может читать и анализировать данные для вас.

  • разговор с картой осуществляется с помощью команд APDU (определенных в ISO-7816)
  • набор команд, используемый SIM-картами (2G) и USIM (3G), отличается, поэтому вы должны иметь это в виду
  • структура и формат файловой системы SIM-карты определены в GSM 11.11 (для 2G) и ETSI TS 131.102 (для 3G) - вся эта документация является общедоступной и предоставляется бесплатно
  • SMS хранятся в файле под названием EF SMS, его имя 0x6F3C, его структура определена в разделе 10.5.3 GSM 11.11

прямые ответы на ваши вопросы:

  • вот где купить SIM-ридер, нажмите на "фото", чтобы увидеть фотографии аппарата и скриншоты программы
  • менеджер SIM - это программа, которая делает все, что вы хотите (включая чтение SMS, восстановление SMS, он может даже попытаться восстановить удаленные SMS - если они все еще физически на карте)
  • A SDK SIM-карты слишком доступен. Это DLL, которую вы можете загрузить и применить в своей программе. Эта вещь делает всю тяжелую работу для вас, все, что вам нужно, это создать графический интерфейс поверх него

Я один из людей из команды, которая создала SIM Manager и вышеупомянутый SDK.


вам, безусловно, понадобится считыватель смарт-карт, и из того, что я смог узнать, почти любой из них будет делать, потому что все они должны поддерживать стандартную функциональность. К тому же они довольно дешевые. Мой-OmniKey (не уверен, какая модель, потому что у меня ее сейчас нет).

предполагая, что вы разрабатываете под Windows, API Windows имеет функции, которые позволяют получить доступ к смарт-картам. здесь это статья о CodeProject, которая обсудите это более подробно как часть набора нескольких классов C#, которые дают вам доступ к куче этого материала без необходимости связываться с гайками и болтами. Я думаю, что пример приложения парня специально для SIM-карт, так что это, вероятно, поможет.


есть много продуктов и оборудования для чтения и записи SIM-карт, посмотрите на http://forum.gsmhosting.com/vbb/f500/ на этом форуме вы найдете много информации о sim-картах, мобильных телефонах.. один из самых больших ресурсов с 1999 года! для аппаратных программистов вы можете создать свой собственный, как JDM или ICprog.. проверка kiscan.net для информации..


можно использовать simLAB инструмент для чтения и редактирования практически любого SIM-файла. Он работает с каждым читателем смарт-карты ПК / СК. Инструмент также позволяет создавать резервные копии файловой системы SIM.

посмотреть https://github.com/kamwar/simLAB


  1. pySim

    в приведенном ниже примере мы меняем IMSI карты на 901700000003080 (опция-i) и мы указываем новый набор-N имя (Имя оператора), - T тип (тип карты), - c CC (код страны), - X MCC (Код мобильной страны), - y MNC (код мобильной сети) и-S ID (ID карты интегральной схемы) значения.

    $ ./pySim-prog.py -p 0 -n OpenBSC -t sysmosim-gr1 -i 901700000003080 -c 001 -x 001 -y 02 -s 1791198229180000075
    

достаточно просто заполнить новую SIM-карту новым meta и будет ли он работать так же, как оригинал? pyusb

вот полный список вариантов:

$ ./pySim-prog.py -help
  Usage: pySim-prog.py [options]  Options:   
  -h, --help            show this help message and exit
  -d DEV, --device=DEV  Serial Device for SIM access [default: /dev/ttyUSB0]
  -b BAUD, --baud=BAUD  Baudrate used for SIM access [default: 9600]
  -p PCSC, --pcsc-device=PCSC
                        Which PC/SC reader number for SIM access
  -t TYPE, --type=TYPE  Card type (user -t list to view) [default: auto]
  -a PIN_ADM, --pin-adm=PIN_ADM
                        ADM PIN used for provisioning (overwrites default)
  -e, --erase           Erase beforehand [default: False]   
  -S SOURCE, --source=SOURCE
                        Data Source[default: cmdline]
  -n NAME, --name=NAME  Operator name [default: Magic]
  -c CC, --country=CC   Country code [default: 1]
  -x MCC, --mcc=MCC     Mobile Country Code [default: 901]
  -y MNC, --mnc=MNC     Mobile Network Code [default: 55]
  -m SMSC, --smsc=SMSC  SMSP [default: '00 + country code + 5555']
  -M SMSP, --smsp=SMSP  Raw SMSP content in hex [default: auto from SMSC]
  -s ID, --iccid=ID     Integrated Circuit Card ID
  -i IMSI, --imsi=IMSI  International Mobile Subscriber Identity
  -k KI, --ki=KI        Ki (default is to randomize)
  -o OPC, --opc=OPC     OPC (default is to randomize)
  --op=OP               Set OP to derive OPC from OP and KI
  --acc=ACC             Set ACC bits (Access Control Code). not all card types are supported
  -z STR, --secret=STR  Secret used for ICCID/IMSI autogen
  -j NUM, --num=NUM     Card # used for ICCID/IMSI autogen
  --batch               Enable batch mode [default: False]
  --batch-state=FILE    Optional batch state file
  --read-csv=FILE       Read parameters from CSV file rather than command line
  --write-csv=FILE      Append generated parameters in CSV file
  --write-hlr=FILE      Append generated parameters to OpenBSC HLR sqlite3
  --dry-run             Perform a 'dry run', don't actually program the card

исходный код доступен.

  1. также SIM-карта - это просто смарт-карта. Вы можете использовать pyscard или pyusb оперировать на нем. Я нашел это Q & A полезная.