2010-05-08 41 views
15

Cualquier tarjeta SIM compatible con GSM anterior (bono para 3G USIM).¿Cómo acceder a una tarjeta SIM mediante programación?

Supongo que necesito un poco de hardware? ¿Alguien puede recomendar algo barato para un aficionado y algo más profesional?

Supongo que habrá documentos completos de una API con la h/w, por lo que tal vez esto debería etiquetarse como "no relacionado con la programación". Lo siento, si es así.

Cualquier buena URL o libros (estoy familiarizado con los estándares 3GPP).

No soy pirata informático, no se preocupe, simplemente no me gusta el SIM Card Secretary, Data Doctor Recovery, etc., así que me gustaría codificar el mío, pero podría convertirlo en comercial, u ofrezca servicios de programación de tarjeta SIM (recuperación de datos de una tarjeta dañada, etc.) como una actividad secundaria.


Actualización: mientras estoy interesado principalmente sólo leer mi SMS de copia de seguridad, puede ser una ventaja si alguien sabe de un escritor barato tarjeta SIM (de modo que pueda realizar copias de seguridad de todo o parte de la SIM y restaurar más tarde)

+1

¿Está buscando la forma de leer la SIM con un lector de tarjetas? – Bernd

+0

sí, lo soy. puedes recomendar alguno? – Mawg

Respuesta

19

Puede hacerlo con cualquier lector de tarjeta inteligente PC/SC (y escritor, como otros señalaron) y un programa que puede leer y analizar los datos por usted.

  • Hablando con una tarjeta se realiza a través de órdenes APDU (definido en la norma ISO-7816)
  • El conjunto de comandos utilizada por SIM (2G) y las tarjetas USIM (3G) es diferente, por lo que tiene que tener eso en mind
  • La estructura y el formato del sistema de archivos de una tarjeta SIM se define en GSM 11.11 (para 2G) y ETSI TS 131.102 (para 3G) - toda esta documentación es pública y está disponible sin costo
  • Los SMS son guardado en un archivo llamado EF SMS, su nombre es 0x6F3C, su estructura se define en la sección 10.5.3 de GSM 11.11

respuestas directas a sus preguntas:

  • Aquí es donde a buy a SIM reader, haga clic en 'Fotos' para ver las fotografías del dispositivo y capturas de pantalla del software
  • SIM Manager es el programa que hace todo lo que desea (incluso leer SMS, restaurar SMS, incluso puede intentar recuperar mensajes de texto borrados, si aún están físicamente en la tarjeta)
  • A SIM card SDK está disponible también. Es una DLL que puede cargar y aplicar en su programa. Esta cosa hace todo el trabajo duro para usted, todo lo que necesita es crear una GUI además de eso

Soy una de las personas del equipo que creó SIM Manager y el SDK antes mencionado.

+0

exploro el sitio web de ETSI. Hay muchas especificaciones y estándares. ¿Cuál debo usar para comenzar con la programación de tarjetas SIM y tarjetas SIM? ¿Las especificaciones que mencionaste anteriormente no están obsoletas ahora? (Por favor, mencione las especificaciones para diferentes tarjetas SIM) Gracias. – Jean

+0

Puede haber nuevas revisiones de esos estándares, pero la base está ahí y cualquier nueva funcionalidad que se agregue extenderá esos estándares, en lugar de reemplazarlos. Deberías usar eso como punto de partida y luego tendrás una mejor idea de dónde buscar más. – Alex

+0

GSM, ETSI, 3GPP? ¿A cuál debo referirme? ¿Hay alguna otra especificación/estándar para (U) tarjetas SIM? ¿Puedo pedirle que haga coincidir estas especificaciones con el concepto al que se dirigen? – Jean

2

Hay muchos productos y hardware para leer y escribir tarjetas SIM, echa un vistazo a http://forum.gsmhosting.com/vbb/f500/ en este foro encontrarás mucha información sobre tarjetas SIM, teléfonos móviles ... uno de los recursos más grandes desde 1999! para programadores de hardware, puede construir el suyo como JDM o ICprog .. consulte kiscan.net para obtener información ..

+0

+1 Gracias, eso se ve bien a primera vista. Lo verificaré y te responderé. Por desgracia, soy estrictamente s/w, sin ningún conocimiento de h/w. – Mawg

4

Seguramente necesitará un lector de tarjeta inteligente y, por lo que he podido averiguar, bastante mucho cualquiera lo hará porque todos deben respaldar la funcionalidad estándar. También son bastante baratos. El mío es una OmniKey (no estoy seguro de qué modelo porque no lo tengo aquí en este momento).

Suponiendo que se está desarrollando en Windows, la API de Windows tiene funciones que hacen posible el acceso a las tarjetas inteligentes. Here es un artículo en CodeProject que analiza esto en mayor detalle como parte de un conjunto de varias clases de C# que le dan acceso a un montón de estas cosas sin tener que enredarse con las tuercas y los pernos. Creo que la aplicación de ejemplo del tipo es específicamente para tarjetas SIM, por lo que probablemente sea útil.

+0

+1 Eso suena fantástico. No me di cuenta de que Windows tenía una API para eso. Lo verificaré y te responderé. Gracias de nuevo. – Mawg

+1

No hay problema. :) Por cierto, lector de tarjetas inteligentes == escritor de tarjetas inteligentes. He usado mi "lector" OmniKey para escribir datos en una tarjeta inteligente de memoria SLE4442, que es algo diferente en el sentido de que no es tan sencillo trabajar con una tarjeta SIM, pero el principio es el mismo. – dandan78

+0

+1 Gracias por la sugerencia. Eso me sorprendió – Mawg

1

Puede usar la herramienta simLAB para leer y editar casi cualquier archivo SIM. Funciona con todos los lectores de tarjetas inteligentes PC/SC. La herramienta también le permite hacer una copia de seguridad del sistema de archivos SIM.

Tenga una mirada en https://github.com/kamwar/simLAB

1
  1. pySim

    En el siguiente ejemplo, estamos cambiando la IMSI de la tarjeta al 901700000003080 (opción -i) y estamos especificando un nuevo conjunto de -n NOMBRE (Nombre del operador), -t TIPO (tipo de tarjeta), -c CC (código de país), -x MCC (código de país móvil), -y MNC (código de red móvil) y -s ID (integrado Valores de ID de la tarjeta de circuito).

    $ ./pySim-prog.py -p 0 -n -t OpenBSC sysmosim-GR1 -i 901700000003080 -c 001 001 -x -y 02 -s 1791198229180000075 ¿Es suficiente sólo llenar la nueva tarjeta SIM con el nuevo meta y ¿funcionará de la misma manera que el original ? pyusb

    lista completa de opciones Aquí

    $ ./pySim-prog.py -help uso: pySim-prog.py [opciones] Opciones:
    -h, --help mostrar este mensaje de ayuda y salir de -d DEV, --device = Dispositivo en serie DEV para acceso SIM [predeterminado:/dev/ttyUSB0] -b BAUD, --baud = BAUD Baudrate utilizado para acceso a SIM [predeterminado: 9600] -p PCSC, --pcsc-device = PCSC Cuál número de lector de PC/SC para acceso SIM -t TYPE, --type = TYPE Tipo de tarjeta (usuario -t lista para ver) [predeterminado: automático] -a PIN_ADM, --pin-adm = PIN_ADM ADM PIN utilizado para el aprovisionamiento (sobrescribe el valor predeterminado) -e, --erase Borrado de antemano [predeterminado: falso]
    -S SOURCE, --source = FUENTE Origen de datos [predeterminado: cmdline] -n NOMBRE, - nombre = NOMBRE Nombre del operador [predeterminado: Magia] -c CC, --país = CC Código del país [predeterminado: 1] -x MCC, --mcc = MCC Código de país móvil [predeterminado: 901] -y MNC, --mnc = Código de red móvil de MNC [predeterminado: 55] -m SMSC, --smsc = SMSC SMSP [predeterminado: '00 + código de país + 5555 '] -M SMSP, --smsp = SMSP Contenido SMSP sin formato en hexadecimal [predeterminado: auto de SMSC] -s ID, --iccid = ID ID de tarjeta de circuito integrado -i IMSI, --imsi = IMSI Identidad de suscriptor móvil internacional -k KI, --ki = KI Ki (predeterminado es aleatorizar) -o OPC, --opc = OPC OPC (predeterminado es aleatorizar) --op = OP Establecer OP en deriva OPC de OP y KI --acc = ACC Establecer bits de ACC (código de control de acceso). No se admiten todos los tipos de tarjeta -z STR, --secreto = STR Secret utilizado para ICCID/IMSI autogen -j NUM, --num = NUM ​​Número de tarjeta utilizado para ICCID/IMSI autogen --batch Habilitar modo por lotes [predeterminado : False] --batch-state = ARCHIVO Archivo de estado de lote opcional
    --read-csv = ARCHIVO Leer los parámetros del archivo CSV en lugar de la línea de comando --write-csv = ARCHIVO Agregar los parámetros generados en archivo CSV --escritura-- HLR = file Agrega genera parámetros a OpenBSC HLR sqlite3 --dry plazo Realizar un 'simulacro', en realidad no programar la tarjeta

    el código fuente está disponible.

  2. Además, la tarjeta SIM es solo una tarjeta inteligente. Puede usar pyscard o pyusb para operar en él. Encontré this Q&A útil.

Cuestiones relacionadas