python libraires and command line tools for SIM/UICC/USIM/ISIM card analysis and programming. https://osmocom.org/projects/pysim
Go to file
Robert Falkenberg b07a3e9c87 Add codecs for EF_SPN and GSM strings via construct
This will replace the hand-crafted codec for EF_SPN
by a struct definition using the construct library.
Old encoders are updated and kept for API compatibility
but are not used internally anymore.

New data structures:
* Rpad(Adapter): Right-padded bytestring (0xff, adjustable)
* GsmStringAdapter(Adapter): Codec for "SMS default 7-bit
	coded alphabet as defined int TS 23.038" using
	the gsm0338 library.
* GsmString(n): Convenient wrapper of both above

Adjustments:
* utils: update+deprecate old dec_spn(), enc_spn()
* remove refs to deprecated functions

Change-Id: Ia1d3a3835933bac0002b7c52511481dd8094b994
2021-05-10 06:15:39 +02:00
contrib Add codecs for EF_SPN and GSM strings via construct 2021-05-10 06:15:39 +02:00
docs docs/shell.rst: Document verify_adm and tree commands 2021-05-04 13:24:07 +02:00
pySim Add codecs for EF_SPN and GSM strings via construct 2021-05-10 06:15:39 +02:00
pysim-testdata ts_51_011, utils: fix Access Technology Identifier coding 2021-05-03 17:08:37 +02:00
tests ts_51_011, utils: fix Access Technology Identifier coding 2021-05-03 17:08:37 +02:00
.gitignore Add README, COPYING, .gitignor 2009-12-27 09:43:51 +01:00
.gitreview add .gitreview 2018-07-19 23:51:00 +02:00
COPYING Add README, COPYING, .gitignor 2009-12-27 09:43:51 +01:00
README.md Implement EF.ARR (Access Rule Reference) decoding 2021-05-04 13:24:07 +02:00
csv-format pySim-prog: Use CSV format with headers 2019-09-03 20:11:48 +02:00
pySim-prog.py Use construct for EF_AD in pySim-{shell, prog, read}.py, cards.py 2021-04-13 11:27:37 +00:00
pySim-read.py Add codecs for EF_SPN and GSM strings via construct 2021-05-10 06:15:39 +02:00
pySim-shell.py shell: Add 'reset' command to reset the card 2021-05-04 13:24:07 +02:00
pyproject.toml Introduce setuptools support 2021-04-04 10:54:46 +02:00
requirements.txt Add codecs for EF_SPN and GSM strings via construct 2021-05-10 06:15:39 +02:00
setup.py Add codecs for EF_SPN and GSM strings via construct 2021-05-10 06:15:39 +02:00

README.md

pySim-prog - Utility for programmable SIM/USIM-Cards

This repository contains a Python-language program that can be used to program (write) certain fields/parameters on so-called programmable SIM/USIM cards.

Such SIM/USIM cards are special cards, which - unlike those issued by regular commercial operators - come with the kind of keys that allow you to write the files/fields that normally only an operator can program.

This is useful particularly if you are running your own cellular network, and want to issue your own SIM/USIM cards for that network.

Homepage

The official homepage of the project is http://osmocom.org/projects/pysim/wiki

GIT Repository

You can clone from the official libosmocore.git repository using

git clone git://git.osmocom.org/pysim.git

There is a cgit interface at http://git.osmocom.org/pysim/

Dependencies

pysim requires:

  • pyscard
  • serial
  • pytlv
  • cmd2
  • jsonpath-ng
  • bidict

Example for Debian:

apt-get install python3-pyscard python3-serial python3-cmd2 python3-pip python3-yaml
pip3 install pytlv bidict

Alternatively, everything can be installed using pip:

pip3 install -r requirements.txt

Mailing List

There is no separate mailing list for this project. However, discussions related to pysim-prog are happening on the openbsc@lists.osmocom.org mailing list, please see https://lists.osmocom.org/mailman/listinfo/openbsc for subscription options and the list archive.

Please observe the Osmocom Mailing List Rules when posting.

Contributing

Our coding standards are described at https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards

We are using a gerrit-based patch review process explained at https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit

Manual

p Please see the sphinx based documentation in the 'docs' sub-directory of the source. A PDF rendering of the user manual is available from https://ftp.osmocom.org/docs/latest/osmosmlc-usermanual.pdf

Usage

  • 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 -s

  • 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'))