2010-05-08 5 views
15

Solo una vecchia scheda SIM compatibile GSM (bonus per 3G USIM).Come accedere a una carta SIM programmaticamente?

Suppongo di aver bisogno di hardware? Qualcuno può consigliare qualcosa di economico per l'hobbista e qualcosa di più professionale?

Suppongo che ci saranno documenti completi di un'API con l'h/w, quindi forse questo dovrebbe essere contrassegnato come "no-programming-related"? Scusa, se è così.

Qualsiasi URL o libro valido (sono esperto degli standard 3GPP).

Non sono (black hat) l'hacking, non preoccuparti, non sono contento di come SIM Card Secretary, Data Doctor Recovery, ecc., Quindi vorrei scrivere il mio, ma potrebbe renderlo commerciale, o offrire servizi di programmazione di schede SIM (recupero dati da scheda danneggiata, ecc.) come linea laterale.


Aggiornamento: mentre sono principalmente interessati solo leggendo il mio SMS per il backup, potrebbe essere un bonus se qualcuno sa di un buon mercato scheda SIM scrittore (in modo da poter eseguire il backup di tutto o parte del SIM e il ripristino in un secondo momento)

+1

Stai cercando un modo per leggere la SIM con un lettore di schede? – Bernd

+0

sì, lo sono. puoi consigliarne qualcuno? – Mawg

risposta

19

È possibile farlo con qualsiasi lettore di smart card PC/SC (e scrittore, come altri hanno sottolineato) e un programma in grado di leggere e analizzare i dati per voi.

  • Parlando a una scheda avviene tramite APDU comandi (definito in ISO-7816)
  • Il set di comandi usati per SIM (2G) e le carte USIM (3G) è diverso, quindi bisogna tenere a mind
  • La struttura e il formato del file system di una SIM card sono definiti in GSM 11.11 (per 2G) e ETSI TS 131.102 (per 3G) - tutta questa documentazione è pubblica e disponibile gratuitamente
  • Gli SMS sono conservato in un file chiamato EF SMS, il suo nome è 0x6F3C, la sua struttura è definita nella sezione 10.5.3 di GSM 11.11

risposte dirette alle vostre domande:

  • Ecco dove buy a SIM reader, cliccare su 'foto' di vedere le foto del dispositivo e screenshot del software
  • SIM Manager è il programma che fa tutto vuoi (incluso leggere SMS, ripristinare SMS, può anche tentare di recuperare SMS cancellati - se sono ancora fisicamente sulla carta)
  • A SIM card SDK è disponibile anche. È una DLL che puoi caricare e applicare nel tuo programma. Questa cosa fa tutto il lavoro duro per te, basta creare una GUI

Sono una delle persone del team che ha creato SIM Manager e il suddetto SDK.

+0

esplorare il sito ETSI. Ci sono molte specifiche e standard. Quale devo usare per iniziare con la programmazione delle carte SIM e USIM? Le specifiche che hai menzionato sopra non sono obsolete ora? (Si prega di citare le specifiche per le diverse schede SIM) Grazie. – Jean

+0

Potrebbero esserci nuove revisioni di tali standard, ma le fondamenta ci sono e qualsiasi nuova funzionalità aggiunta estenderà tali standard, anziché sostituirli. Dovresti usarlo come punto di partenza e in seguito avrai una visione migliore di dove guardare. – Alex

+0

GSM, ETSI, 3GPP? A quale devo riferirmi? Esistono altre specifiche/standard per le schede SIM (U)? Posso chiederti di abbinare queste specifiche con il concetto che hanno preso di mira? – Jean

2

C'è un sacco di prodotti e hardware per leggere e scrivere le schede SIM, dare un'occhiata a http://forum.gsmhosting.com/vbb/f500/ in questo forum troverete un sacco di informazioni relative a carte sim, telefoni cellulari .. uno della risorsa bigest dal 1999! per programmatori hardware, è possibile creare il proprio come JDM o ICprog .. controllare kiscan.net per alcune informazioni ..

+0

+1 Grazie, sembra buono a prima vista. Lo controllerò e tornerò da te. Ahimè, sono rigorosamente s/w, senza alcuna conoscenza h/w. – Mawg

4

Avrete sicuramente bisogno di un lettore di smart card e da quello che sono stato in grado di scoprire, piuttosto molto nessuno lo farà perché tutti devono supportare la funzionalità standard. Sono anche abbastanza economici. Il mio è un OmniKey (non so quale modello perché non ce l'ho qui adesso).

Presumendo che si sviluppi in Windows, l'API di Windows ha funzioni che consentono di accedere alle smartcard. Here è un articolo su CodeProject che lo discute in maggior dettaglio come parte di un insieme di diverse classi C# che ti danno accesso a un sacco di queste cose senza doverti intrecciare con i dadi e bulloni. Penso che l'app di esempio del ragazzo sia specifica per le schede SIM, quindi probabilmente servirà.

+0

+1 Sembra fantastico. Non avevo capito che Windows aveva un'API per questo. Lo controllerò e tornerò da te. Grazie ancora. – Mawg

+1

Nessun problema. :) Btw, smartcard reader == scrittore di smartcard. Ho usato il mio "lettore" OmniKey per scrivere dati su una smart card SLE4442, che è un po 'diversa in quanto non è semplice da utilizzare come una scheda SIM, ma il principio è lo stesso. – dandan78

+0

+1 Grazie per il suggerimento. Questo mi ha sorpreso – Mawg

1

È possibile utilizzare lo strumento simLAB per leggere e modificare quasi tutti i file SIM. Funziona con ogni lettore di smart card PC/SC. Lo strumento consente anche di eseguire il backup del file system della SIM.

Dai un'occhiata alla https://github.com/kamwar/simLAB

1
  1. pySim

    Nell'esempio sottostante, stiamo cambiando IMSI della scheda per 901.700.000.003.080 (opzione -i) e stiamo specificando una nuova serie di -n NOME (Nome operatore), -t TIPO (tipo di scheda), -c CC (codice paese), -x MCC (codice paese mobile), -y MNC (codice rete mobile) e -s ID (integrato Valori di ID scheda circuito).

    $ ./pySim-prog.py -p 0 -n OpenBSC -t sysmosim-GR1 -i 901.700.000.003.080 -c 001 -x 001 -y 02 -s 1791198229180000075 E 'sufficiente riempire la nuova scheda SIM con il nuovo meta e funzionerà allo stesso modo di originale? pyusb

    qui la lista completa di opzioni

    $ ./pySim-prog.py -help utilizzo: pySim-prog.py [opzioni] Opzioni:
    -h, --help mostra questo messaggio di aiuto ed esce -d DEV, --device = DEV dispositivo seriale per l'accesso SIM [default:/dev/ttyUSB0] -b BAUD, --baud = BAUD Baudrate utilizzato per l'accesso SIM [default: 9600] -p PCSC, --pcsc-device = PCSC Quale numero di lettore PC/SC per l'accesso SIM -t TYPE, --type = TYPE Tipo di scheda (elenco utente -t ​​da visualizzare) [default: auto] -a PIN_ADM, --pin-adm = PIN_ADM PIN ADM utilizzato per il provisioning (sovrascrive predefinito) -e, --erase Cancella prima [default: False]
    -S SOURCE, --source = ORIGINE Origine dati [valore predefinito: cmdline] -n NOME, --name = NOME Nome operatore [valore predefinito: Magic] -c CC, --country = CC Codice paese [valore predefinito: 1] -x MCC, --mcc = MCC Codice internazionale mobile [predefinito: 901] -y MNC, --mnc = Codice rete mobile MNC [impostazione predefinita: 55] -m SMSC, --smsc = SMSC SMSP [predefinito: '00 + prefisso internazionale + 5555 '] -M SMSP, --smsp = SMSP Contenuto SMSP raw in esadecimale [predefinito: auto da SMSC] -s ID, --iccid = ID ID circuito integrato ID -i IMSI, --imsi = IMSI International Mobile Subscriber Identity -k KI, --ki = Ki KI (l'impostazione predefinita è randomizzare) -o OPC, --opc = OPC OPC (l'impostazione predefinita è randomizzare) --op = OP Impostare OP su derivare OPC da OP e KI --acc = ACC Impostare i bit ACC (Codice controllo accessi). non tutti i tipi di tessera sono supportati -z STR, --secret = STR Segreto usato per ICCID/IMSI autogen -j NUM, --num = NUM ​​Card # usata per ICCID/IMSI autogen --batch Abilita modalità batch [default : False] --batch-state = FILE File di stato batch opzionale
    --read-csv = FILE Legge i parametri dal file CSV anziché dalla riga di comando --write-csv = FILE Aggiungi i parametri generati nel file CSV --write- HLR = FILE Aggiunge generato parametri OpenBSC HLR sqlite3 --dry-run Esegue una 'prova generale', in realtà non programmare la scheda

    il codice sorgente è disponibile.

  2. Anche la scheda SIM è solo una smart card. È possibile utilizzare pyscard o pyusb per operare su di esso. Ho trovato utile this Q&A.