IMSI-catcher is a Python tool that captures and displays IMSI numbers, country codes, carrier brands, and operator information from mobile phones in the surrounding area using software-defined radio.
The tool works by decoding GSM signals received through an SDR device. It uses gr-gsm to decode GSM network traffic and a Python script to extract and display IMSI numbers from the decoded packets. The approach requires two terminal sessions running in parallel: one for the gr-gsm signal decoder and another for the IMSI extraction script. Users must identify the correct GSM frequency for their region before starting the capture process.
This tool is intended for educational purposes to understand how GSM networks operate. It requires a Linux system and an SDR receiver, with support for inexpensive USB DVB-T keys, OsmocomBB phones, HackRF, and BladeRF devices. The setup involves installing gr-gsm and its dependencies, with the README noting that Python 3.9 should be avoided due to a ctypes bug. The tool can optionally log captured data to a MySQL database and integrates with Wireshark for packet inspection. Users need to determine appropriate GSM frequencies for their location using provided frequency references or tools like kalibrate-hackrf.
The project maintains active documentation with setup instructions for multiple Linux distributions and SDR hardware options. The README includes detailed usage examples, frequency lookup guidance, and database integration instructions. The project provides Docker-based alternatives for gr-gsm installation and includes references to external resources for GSM frequency bands and mobile network codes.