PySIM

From OnnoWiki
Revision as of 17:14, 29 April 2014 by Onnowpurbo (talk | contribs)
Jump to navigation Jump to search

pySIM adalah SIM card management tool, yang mampu untuk membuat, mengedit, men-delete, backup dan restore phonebook & SMS records.

SIM card di handphone adalah smartcard sederhana. Kita dapat mem-program SIM card menggunakan smartcard writer. Pada dasarnya smartcard writer ada 2 jenis, yaitu:

  • USB Serial device. Di UNIX akan terdeteksi sebagai /dev, seperti /dev/ttyUSB0. Contoh 16-in-1 Magic SIM.
  • PC/SC device. Device ini berhubungan melalui PC/SC driver dan tidak akan terlihat sebagai /dev. Jenis ini lebih banyak. Bluedrive II yang digunakan oleh RangeNetworks adalah jenis ini.


Untuk melihat apakah smartcard writer terdeteksi dengan baik kita dapat menulis

lsusb

Hasilnya kira-kira

Bus 003 Device 002: ID 1b0e:1078 BLUTRONICS S.r.l. BLUDRIVE II CCID

Untuk mendukung operasi smartcard writer kita perlu menginstalasi

sudo apt-get install libudev1 libpcsclite1 libccid python-pyscard

Setelah semua di instalasi, kita dapat memprogram SIM card dengan pysim. Gunakan opsi -p untuk menentukan PC/SC interface (biasanya "-p 0"), dan untuk Range GR-Card blank SIM kita menset tipe card sebagai "-t grcardsim". Contoh:

openbts@UnitC:~/pysim$ ./pySim-prog.py  -p 0 -n OpenBTS -c 1 -x 001 -y 01 -j 4 -t grcardsim
Failed to load symbol for: SCardCancelTransaction, /usr/local/lib/libpcsclite.so.1: undefined symbol:  SCardCancelTransaction!
Insert card now (or CTRL-C to cancel)
Generated card parameters :
 > Name    : OpenBTS
 > SMSP    : 0015555
 > ICCID   : 89010010100000000004
 > MCC/MNC : 1/1
 > IMSI    : 001010000000004
 > Ki      : bc9aecfabe1f81f1f85d09370f5a6f51
 
Programming ...
Done !

Other comments on pysim:

   The "undefined symbol" warning does not appear to be a problem, so ignore it.
   If you get the error message
   smartcard.Exceptions.CardConnectionExc

eption: Unable to connect with protocol: T0 or T1. Card is unpowered

   that means the SIM is in the drive upside down or backwards. 

Use of the Bludrive II:

   Proper card orientation is with the metal contacts facing up, inside the device.
   When the SIM is inserted correctly, the LED on the unit will turn red for about ten seconds and then turn green again.
   If the SIM is not inserted correctly, the LED on the unit will flash red for about a second and then turn red and stay red until the SIM is removed. 

SIM Programming FAQ

   Q: Should all the sims have the same Ki ? Or is recomended that each sim has its own Ki?
   A: Every SIM needs a unique and random Ki. PySIM will generate a random Ki by default. 
   Q: What is the use of the "Name" in the sim?
   A: It is the "short name" for your phone company. It should be 8 characters or less to be displayed properly on most phones. 
   Q: What is the "SMSP"?
   A: "Short Message Service Parameters". Take a look at GSM 11.11 Section 10.5.6, attached. The default values provided by PySIM are OK if you don't want to worry with these. 
   Q: Why do all generated sims have "89" as the starting value of the ICCID?
   A: Take a look at http://en.wikipedia.org/wiki/Subscriber_Identity_Module#ICCID for an explanation of the ICCID fields. The "89" prefix is used for all SIMs. The next 2-3 digits are from the E.164 country code. 


pySIM requires the following:

   Windows 98 or later
   PC/SC software components installed (see my PC/SC web page for details)
   PC/SC compliant card reader
   GSM SIM card

Note: PC/SC software is configured as part of the Operating System on Windows 2000 and later. You may have to install it manually on Windows 98,ME and NT. Source

pySIM source code is released under the GNU General Public License (GPL) and is available on SourceForge: pySim


Lebih Detail

This utility allows to : Program customizable SIMs. Two modes are possible:

  • one where you specify every parameter manually :
./pySim-prog.py -n 26C3 -c 49 -x 262 -y 42 -i <IMSI> -s <ICCID>


  • one where they are generated from some minimal set :
./pySim-prog.py -n 26C3 -c 49 -x 262 -y 42 -z <random_string_of_choice> -j <card_num>

With <random_string_of_choice> and <card_num>, the soft will generate 'predictable' IMSI and ICCID, so make sure you choose them so as not to conflict with anyone. (for eg. your name as <random_string_of_choice> and 0 1 2 ... for <card num>).

You also need to enter some parameters to select the device :

-t TYPE : type of card (supersim, magicsim, fakemagicsim or try 'auto')
-d DEV  : Serial port device (default /dev/ttyUSB0)
-b BAUD : Baudrate (default 9600)
  • Interact with SIMs from a python interactive shell (ipython for eg :)
from pySim.transport.serial import SerialSimLink
from pySim.commands import SimCardCommands
sl = SerialSimLink(device='/dev/ttyUSB0', baudrate=9600)
sc = SimCardCommands(sl)
sl.wait_for_card()
# Print IMSI
print sc.read_binary(['3f00', '7f20', '6f07'])
# Run A3/A8
print sc.run_gsm('00112233445566778899aabbccddeeff')

Referensi