This site is a trip down memory lane. I finished my career testing SIM cards. Over time, I developed a large body of software in C# to automate the process.
Recently, I received an email from a head hunter that was looking for someone with the skills I used to have. While not interested in the opportunity (in Kansas for 6 months), it did make me wonder if I remembered enough content/skills to do a consulting gig if one were available and I could work from home.
Having a very short term memory, I quickly forgot most of what I knew. This web site is me running through what I do remember and seeing if I could construct a reasonable set of skills.
The Beginning
My work with SIM cards began in 2005 when, in the words of the Australian and British TV detectives I watch a lot, I was “seconded” to my companies SIM card team. A the time, I was the third member of the team and was being added to support testing. We were in the process of moving from GSM to UMTS and the team was developing and testing a UICC card to support the migration.
My role was to assist one of the team members to test and validate our first UICC card. Being new to the role, I tried using the term “UICC card” for a while, but gave up as everyone seemed to prefer the term “SIM card”. The UICC card we were developing at the time contained a GSM SIM application and a UMTS USIM application – so not a single application SIM card. But in the mobile world, at least during my time, the term SIM card predominated. So sometimes I’ll say SIM card and sometimes I’ll say UICC.
I once gave a deposition in a patent case. The lawyers kept telling me I had to “refresh my recollection”. Still not really sure what that means – but it is what I need to do now, because after two years of retirement – I don’t seem to remember much.
Step 1 – Refreshing my Recollection
As the goal is to quickly put together a software environment that will allow me to read and write to SIM cards through a Smart Card reader – I need to grab some SIM/UICC card documentation. A little googling shows up PDF’s of GSM 11.11 and 11.14 which document SIM cards or the SIM application on a UICC. Documents I started with originally, but which are no longer current. With a little more googling I found the ETSI web site that was my go to for 3GPP documentation.
https://www.3gpp.org/specifications/specification-numbering
From here I can find the SIM, USIM, and ISIM specifications (series 31) and the security specifications (series 35).
Step 2 – Software
In order to develop software in C# to access a SIM card, two things are needed.
- An IDE
- A managed code to unmanaged code interface to the Microsoft PC/SC Smart Card interface
Previously, I started development with Microsoft’s Visual Studio. However, I then read the license. My interpretation was that as an employee of a large enterprise not developing open source software, I could not use it without a license. So I looked for an alternative and found SharpDevelop, an open source IDE for C# which I used for coding and debugging. To build release versions of my tools I used NAnt (“make without makes wrinkles”).
Since I am no longer an employee of a large enterprise and everything I do will be open source, I will give Visual Studio a try for my IDE.
Next step is to start googling again to get a managed code to unmanaged code interface. The last time I grabbed one was a long time ago and I spent a lot of time modifying and enhancing it. This time, the plan is to do something quick and use it as is.