DOCUMENTATION / GETTING STARTED

Build the toolkit.

Set up IMSIsting on Linux, build the GTK4 desktop, and choose the interface that fits your work.

PLATFORM Linux DESKTOP GTK 4.14+ BUILD Meson / Ninja

01 / PREPARE

Requirements

Use Linux with GTK4 4.14 or newer, Meson, Ninja, a C compiler, Python 3, and Fontconfig development files. Git is needed to clone the repository. NumPy and SciPy are included in the package examples below.

DEBIAN / UBUNTUDEPENDENCIES
sudo apt update
sudo apt install git build-essential meson ninja-build pkg-config \
  libgtk-4-dev libfontconfig1-dev python3 python3-numpy python3-scipy
ARCH LINUXDEPENDENCIES
sudo pacman -S git base-devel meson ninja pkgconf gtk4 fontconfig \
  python python-numpy python-scipy

Package versions vary by distribution. Check pkg-config --modversion gtk4; if it reports less than 4.14, use a distribution or package source with a newer GTK4.

Specific modules may need additional tools such as GNU Radio and gr-gsm, srsRAN, Open5GS or free5GC, tshark, pcsc-tools, gpsd, or Python cryptography. Run bash modules/00_deps.sh --preflight from the project root to inspect the toolchain.

02 / SOURCE

Clone the repository

Get the source and enter the project directory. The commands that follow assume this checkout.

TERMINALPROJECT ROOT
git clone https://github.com/yslxotwod/IMSIsting.git
cd IMSIsting

03 / COMPILE

Build the desktop

Configure the native build once, then compile it. The executable is created inside native/builddir.

TERMINALGTK4 DESKTOP
cd native
meson setup builddir
meson compile -C builddir
cd ..

For an existing build directory, use meson setup --reconfigure builddir from native, then compile again.

04 / RUN

Choose an interface

From the project root, launch the desktop or use the terminal interface. The modules also run as standalone scripts.

TERMINALPROJECT ROOT
./imsisting.sh --gui     # GTK4 desktop
./imsisting.sh --tui     # terminal interface
./imsisting.sh --list    # list modules
./imsisting.sh --index   # module index as TSV

You can also run ./native/builddir/imsisting-gui directly. The GUI requests privileges per action through pkexec, rather than at startup.

05 / OPTIONAL DATA

Fetch reference tables

Public PLMN, ISPC, and PEN tables help identify network and registry owners. They are not shipped with the repository; fetch them once per checkout or check what is already present.

TERMINALPROJECT ROOT
tools/fetch-reference-data.sh
# Check availability without downloading:
tools/fetch-reference-data.sh --check

A missing table means an answer is unobserved, not that the register has no matching entry. Operator-supplied private tables are not included.

06 / BEFORE YOU BEGIN

Know the limits

EARLY DEVELOPMENT

No module has been run against a real radio. Over-the-air paths are written and reviewed, but untested on hardware. Hardware, radios, and external stacks are not bundled; individual operations may require specific equipment or software.

Some protocol and capture analysis can run without a radio. A verb or a successful build is not proof that a live operation works. Consult the project’s what actually works and hardware notes before relying on a path.