web-dev-qa-db-fra.com

Comment accéder à une carte SIM par programme?

N'importe quelle ancienne carte SIM compatible GSM (bonus pour 3G USIM).

Je suppose que j'ai besoin de matériel? Quelqu'un peut-il recommander quelque chose de pas cher pour les amateurs et quelque chose de plus professionnel?

Je présume qu'il y aura une documentation complète d'une API avec le h/w, alors peut-être que cela devrait être étiqueté "non lié à la programmation"? Désolé, si oui.

Tous les bons URL ou livres (je suis au courant des normes 3GPP).

Je ne suis pas un pirate informatique, ne vous inquiétez pas, vous n'êtes pas satisfait des fonctions de secrétaire de carte SIM, de récupération de données, etc., alors j'aimerais coder le mien, mais vous pourriez le commercialiser ou vous proposer une carte SIM. services de programmation (récupération de données à partir d'une carte endommagée, etc.) en parallèle.


Mise à jour: bien que mon intérêt principal soit de lire mon SMS pour la sauvegarde, cela pourrait être un bonus si quelqu'un connaissait un graveur de carte SIM bon marché (pour pouvoir sauvegarder tout ou partie de la carte SIM et la restaurer plus tard)

16
Mawg

Vous pouvez le faire avec n’importe quel lecteur de carte à puce PC/SC (et le graveur, comme d’autres l'ont fait remarquer) et un programme capable de lire et d’analyser les données pour vous.

  • Parler à une carte se fait via des commandes APDU (définies dans ISO-7816)
  • Le jeu de commandes utilisé par les cartes SIM (2G) et USIM (3G) est différent, vous devez donc en tenir compte.
  • La structure et le format du système de fichiers d'une carte SIM sont définis dans les normes GSM 11.11 (pour 2G) et ETSI TS 131.102 (pour 3G) - toute 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 à la section 10.5.3 de GSM 11.11.

Réponses directes à vos questions:

  • Voici où vous rendre achetez un lecteur de carte SIM , cliquez sur "Photos" pour afficher 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 et la restauration de SMS, il peut même tenter de récupérer les fichiers supprimés SMS s'ils sont encore physiquement sur la carte)
  • Un SDK de la carte SIM est également disponible. C'est un DLL que vous pouvez charger et appliquer dans votre programme. Cette chose fait tout le travail dur pour vous, tout ce dont vous avez besoin est de créer une interface graphique par dessus

Je fais partie de l'équipe qui a créé SIM Manager et le SDK susmentionné.

20
ralien

Vous aurez certainement besoin d’un lecteur de carte à puce et, d’après ce que j’ai pu découvrir, quasiment tout le monde le fera parce qu’ils doivent tous prendre en charge les fonctionnalités standard. Ils se trouvent également être assez bon marché. Le mien est une OmniKey (je ne sais pas quel modèle car je ne l'ai pas ici pour le moment).

En supposant que vous développiez sous Windows, l’API Windows possède des fonctions permettant d’accéder aux cartes à puce. Here est un article sur CodeProject qui analyse cela plus en détail dans le cadre d'un ensemble de plusieurs classes C # qui vous donnent accès à un tas de ces éléments sans avoir à vous embrouiller avec les détails. Je pense que l'exemple d'application de ce type est spécifiquement conçu pour les cartes SIM. Cela aidera donc probablement.

4
dandan78

Il existe de nombreux produits et matériels pour lire et écrire des cartes SIM, consultez http://forum.gsmhosting.com/vbb/f500/ dans ce forum, vous trouverez de nombreuses informations sur les cartes SIM, les téléphones mobiles .. l'une des plus grandes ressources depuis 1999! pour les programmeurs matériels, vous pouvez créer le vôtre, comme JDM ou ICprog .. consultez kiscan.net pour plus d'informations ..

2
numediaweb
  1. pySim

    Dans l'exemple ci-dessous, nous modifions l'IMSI de la carte en 901700000003080 (option -i) et nous spécifions un nouvel ensemble de -n NAME (nom de l'opérateur), -t TYPE (type de carte), -c CC (code de pays), -x MCC (code de pays du mobile), -y valeurs du MNC (code de réseau du mobile) et -s (ID de la carte 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-il suffisant de remplir la nouvelle carte SIM avec une nouvelle méta et fonctionnera-t-il de la même manière 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
theodor

Vous pouvez utiliser simLAB tool pour lire et éditer presque tous les fichiers 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
amsterr