Comment accéder à une carte SIM par programmation?

juste n'importe quelle vieille carte SIM compatible GSM (bonus pour 3G USIM).

je suppose que j'ai besoin de matériel? Est-ce que quelqu'un peut recommander quelque chose de pas cher pour un hobbyiste, et quelque chose de plus professionnel?

je présume qu'il y aura des docs complets D'une API avec le h/w, donc peut-être que ceci devrait être étiqueté "sans-programmation"? Désolé, le cas échéant.

tout bon URL ou livre (je suis familier avec les normes 3GPP).

Je ne Pirate pas, ne vous inquiétez pas, tout simplement pas satisfait avec les goûts de secrétaire de carte SIM, rétablissement de docteur de données, etc, Donc je voudrais coder mon propre, mais pourrait tourner publicitaire, ou d'offrir des services de programmation de carte SIM (récupération de données de la carte endommagée, etc) comme une ligne de côté.


mise à jour: alors que je suis principalement intéressé à lire mon SMS pour la sauvegarde, il pourrait être un bonus si quelqu'un connaît un auteur de carte SIM bon marché (de sorte que je peux sauvegarder tout ou partie de la SIM et de le restaurer plus tard)

16
demandé sur Cœur 2010-05-08 04:02:44

5 réponses

vous pouvez le faire avec N'importe quel lecteur de carte à puce PC/SC (et écrivain, comme d'autres l'ont souligné) et un programme qui peut lire et analyser les données pour vous.

  • parler à une carte se fait via les commandes APDU (définies dans la norme ISO-7816)
  • le jeu de commandes utilisé par les cartes SIM (2G) et USIM (3G) est différent, donc vous devez garder cela à l'esprit
  • la structure et le format du système de fichiers D'une carte SIM sont définis dans GSM 11.11 (pour 2G) et ETSI TS 131.102 (pour 3G) - tous cette documentation est publique et disponible gratuitement
  • les SMS sont conservés dans un fichier appelé EF SMS, son nom est 0x6F3C, sa structure est définie dans la section 10.5.3 de GSM 11.11

réponses directes à vos questions:

  • Ici acheter un lecteur SIM cliquez sur "photos" pour voir des photos de l'appareil et des captures d'écran du logiciel
  • SIM Manager est le programme qui fait tout ce que vous voulez (y compris la lecture de SMS, la restauration de SMS, il peut même tenter de récupérer les SMS supprimés - s'ils sont encore physiquement sur la carte)
  • SIM card SDK est aussi disponible. C'est une DLL que vous pouvez charger et appliquer dans votre programme. Cette chose fait tout le travail dur pour vous, tout ce que vous avez besoin est de créer une interface graphique sur le dessus de cela

je suis une des personnes de l'équipe qui a créé SIM Manager et le SDK susmentionné.

20
répondu ralien 2015-03-13 11:54:52

vous aurez certainement besoin d'un lecteur de carte à puce et d'après ce que j'ai pu découvrir, à peu près tout le monde le fera parce qu'ils doivent tous prendre en charge la fonctionnalité standard. Ils sont aussi très bon marché. Le mien est un OmniKey (Je ne sais pas quel modèle parce que je ne l'ai pas ici en ce moment).

en présumant que vous développez sous Windows, L'API Windows a des fonctions qui permettent d'accéder aux cartes à puce. Ici est un article sur Codeprojet qui discutes cela plus en détail dans le cadre d'un ensemble de plusieurs classes C# qui vous donnent accès à un tas de ces trucs sans avoir à se mêler avec les écrous et les boulons. Je pense que l'application exemple du gars est spécifiquement pour les cartes SIM, donc ça va probablement aider.

4
répondu dandan78 2010-10-22 08:35:23

il y a beaucoup de produits et de matériel pour lire et écrire des cartes SIM, regardez http://forum.gsmhosting.com/vbb/f500/ dans ce forum Vous trouverez beaucoup d'informations concernant les cartes sim, les téléphones mobiles.. une des ressources les plus importantes depuis 1999! pour les programmeurs de matériel, vous pouvez construire votre propre comme JDM ou ICprog.. vérifier kiscan.net pour des infos..

2
répondu numediaweb 2010-10-22 07:57:29

Vous pouvez utiliser simLAB outil pour lire et éditer presque n'importe quel fichier SIM. Il fonctionne avec tous les lecteurs de cartes à puce PC/SC. L'outil vous permet également de sauvegarder le système de fichiers SIM.

regardez https://github.com/kamwar/simLAB

1
répondu amsterr 2016-04-21 15:59:06
  1. pySim

    dans l'exemple ci-dessous, nous changeons L'IMSI de la carte en 90170000000003080 (option-i) et nous spécifions un nouvel ensemble de-n Nom (Nom de l'opérateur), - T TYPE (Type de carte), - C CC (code du pays), - x MCC (Code du pays Mobile), - y MNC (Code du réseau Mobile) et-s ID (Carte D'identité de Circuit intégré).

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

Est-ce suffisant de remplir la nouvelle carte SIM avec de nouveaux meta et will il fonctionne de la même façon que l'original? pyusb

Voici la liste complète des options:

$ ./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

Le code source est disponible.

  1. de plus, la carte SIM n'est qu'une carte à puce. Vous pouvez utiliser pyscard ou pyusb pour l'opérer. J'ai trouvé ce Q&A utile.
1
répondu theodor 2018-10-03 20:23:02