softSIM is a collection of tools to play with the SIM application (in the SIM card or elsewhere).

It uses bluetooth profile SIM Access Profile as abstraction layer to access the SIM (but no bluetooth is required).

The final purpose is to provide a virtual SIM, simulated in software.


All the scripts are written in ruby :

sudo apt-get install ruby

To use all tools, additional libraries and gems are required (you might want to use "sudo gem install" if you have ruby smartcard package loading problems):
sudo apt-get install rubygems ruby-dev libdbus-ruby pcscd ruby-serialport libpcsclite1 libpcsclite-dev libruby libxml-ruby
gem install --user-install smartcard

detailed information is in README

to get the code :

git clone git://



SAP is useful as it provides a easy common way to talk to the SIM, not restricted to any device (as PCSC is).

A tool to connect to BTSAP servers is also provided (some phones offer this profile).

You have to tell the Server how to communicate with the SIM.


h3. SIM information



h3. SIM copy

./demo_client.rb -t copy
This file can then be used by the SIMOS server to do softSIM.

There are limitations to the copy.
Only the body of the files with access condition ALWAYS or CHV1 can be read, otherwise only the header is saved.
Ki (the secret key used for authentication and encryption) can not be extracted (SIM cards can not be cloned).
Only some A38 triplets are saved.

Copying a card takes > 5min.
Sometimes the copy hangs (the APDU traffic is blocked).
I don't know the origin of this problem (smartcard gem, pcscd, reader, card, ???).
Just wait ~30s and it will continue.

h2. bugs & more

Please contact the author if any bug is discovered.