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

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

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

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

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

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


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


person Mawg says reinstate Monica    schedule 08.05.2010    source источник
comment
Вы ищете способ прочитать SIM-карту с помощью кард-ридера?   -  person Bernd    schedule 11.05.2010
comment
да. можете порекомендовать какой-нибудь?   -  person Mawg says reinstate Monica    schedule 12.05.2010


Ответы (5)


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

  • Разговор с картой осуществляется с помощью команд 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 Manager — это программа, которая делает все, что вам нужно ( в том числе читать смс, восстанавливать смс, может даже попытаться восстановить удаленные смс - если они еще физически на карте)
  • Также доступен SDK для SIM-карт. Это DLL, которую вы можете загрузить и применить в своей программе. Эта вещь делает всю тяжелую работу за вас, все, что вам нужно, это создать графический интерфейс поверх нее.

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

person ralien    schedule 06.10.2011
comment
Я изучаю веб-сайт ETSI. Существует множество спецификаций и стандартов. Какой из них я должен использовать для начала работы с программированием SIM-карт и USIM-карт? Разве спецификации, которые вы упомянули выше, не устарели сейчас? (Пожалуйста, укажите характеристики для разных SIM-карт) Спасибо. - person Jean; 09.03.2015
comment
Могут появиться новые версии этих стандартов, но основа уже есть, и любая добавленная функциональность будет расширять эти стандарты, а не заменять их. Вы должны использовать это как отправную точку, и впоследствии у вас будет лучшее представление о том, где еще искать. - person ralien; 09.03.2015
comment
GSM, ETSI, 3GPP? К какому из них я должен обратиться? Существуют ли другие спецификации/стандарты для (U)SIM-карт? Могу я попросить вас сопоставить эти спецификации с концепцией, на которую они нацелены? - person Jean; 10.03.2015
comment
Что именно вы хотите сделать с картой? Манипулировать содержимым файлов? Если да - то это то, что вам нужно: GSM 11.11 (для 2G) и ETSI TS 131.102 (для 3G). - person ralien; 11.03.2015
comment
Спасибо. Да, я хочу манипулировать содержимым. Но я хочу знать, для чего эти стандарты! Является ли GSM и 3GPP подмножеством ETSI? - person Jean; 11.03.2015
comment
Я не знаю, что такое организационная иерархия. Что касается вашего вопроса - эти стандарты объясняют формат структур данных каждого типа файлов в файловой системе SIM-карты. Как только вы ознакомитесь с этим, вы сможете манипулировать содержимым файла стандартным способом, чтобы телефоны могли его адекватно анализировать. Для фактической записи и чтения вам необходимо ознакомиться с командами APDU (определены в ISO7816). - person ralien; 13.03.2015
comment
@ralien Можете ли вы читать / записывать SSL-сертификаты с / на SIM-карту с помощью программного обеспечения? - person Reydel Leon; 11.06.2019
comment
Я не уверен, что когда-либо видел EF на SIM-карте, где написаны сертификаты. Если вы имеете дело со смарт-картой, используемой для криптографического хранения, то это имеет смысл, обычно вы можете использовать промежуточное ПО PKCS#11 для записи сертификатов на карту, а также можете делать это напрямую с помощью команд APDU. Если вы абсолютно уверены, что имеете дело с SIM-картой, то какой именно тип карты? - person ralien; 12.06.2019

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

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

person dandan78    schedule 22.10.2010
comment
+1 Звучит фантастически. Я не знал, что у Windows есть API для этого. Я проверю это и вернусь к вам. Еще раз спасибо. - person Mawg says reinstate Monica; 23.10.2010
comment
Без проблем. :) Кстати, считыватель смарт-карт == писатель смарт-карт. Я использовал свой считыватель OmniKey для записи данных на смарт-карту памяти SLE4442, которая несколько отличается тем, что с ней не так просто работать, как с SIM-картой, но принцип тот же. - person dandan78; 24.10.2010

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

person numediaweb    schedule 22.10.2010
comment
+1 Спасибо, на первый взгляд неплохо. Я проверю это и вернусь к вам. Увы, я строго ч/б, без знаний ч/б вообще. - person Mawg says reinstate Monica; 23.10.2010

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

Взгляните на https://github.com/kamwar/simLAB.

person amsterr    schedule 21.04.2016

  1. #P1# <цитата> #P2#
    $ ./pySim-prog.py -p 0 -n OpenBSC -t sysmosim-gr1 -i 901700000003080 -c 001 -x 001 -y 02 -s 1791198229180000075
    

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

Вот полный список опций:

$ ./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 для работы с ним. Я нашел эти вопросы и ответы полезными.
person theodor    schedule 23.01.2017