Petter Reinholdtsen: Simpler recipe on how to make a simple $7 IMSI Catcher using Debian
On friday, I came across an interesting article in the Norwegian
web based ICT news magazine digi.no on
how
to collect the IMSI numbers of nearby cell phones using the cheap
DVB-T software defined radios. The article refered to instructions
and a recipe by
Keld Norman on Youtube on how to make a simple $7 IMSI Catcher, and I decided to test them out.
The instructions said to use Ubuntu, install pip using apt (to
bypass apt), use pip to install pybombs (to bypass both apt and pip),
and the ask pybombs to fetch and build everything you need from
scratch. I wanted to see if I could do the same on the most recent
Debian packages, but this did not work because pybombs tried to build
stuff that no longer build with the most recent openssl library or
some other version skew problem. While trying to get this recipe
working, I learned that the apt->pip->pybombs route was a long detour,
and the only piece of software dependency missing in Debian was the
gr-gsm package. I also found out that the lead upstream developer of
gr-gsm (the name stand for GNU Radio GSM) project already had a set of
Debian packages provided in an Ubuntu PPA repository. All I needed to
do was to dget the Debian source package and built it.
The IMSI collector is a python script listening for packages on the
loopback network device and printing to the terminal some specific GSM
packages with IMSI numbers in them. The code is fairly short and easy
to understand. The reason this work is because gr-gsm include a tool
to read GSM data from a software defined radio like a DVB-T USB stick
and other software defined radios, decode them and inject them into a
network device on your Linux machine (using the loopback device by
default). This proved to work just fine, and I've been testing the
collector for a few days now.
The updated and simpler recipe is thus to
- start with a Debian machine running Stretch or newer,
- build and install the gr-gsm package available from http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/,
- clone the git repostory from https://github.com/Oros42/IMSI-catcher,
- run grgsm_livemon and adjust the frequency until the terminal where it was started is filled with a stream of text (meaning you found a GSM station).
- go into the IMSI-catcher directory and run 'sudo python simple_IMSI-catcher.py' to extract the IMSI numbers.