DOCUMENTATION / GETTING STARTED
Build the toolkit.
Set up IMSIsting on Linux, build the GTK4 desktop, and choose the interface that fits your work.
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.
sudo apt update
sudo apt install git build-essential meson ninja-build pkg-config \
libgtk-4-dev libfontconfig1-dev python3 python3-numpy python3-scipysudo pacman -S git base-devel meson ninja pkgconf gtk4 fontconfig \
python python-numpy python-scipyPackage 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.
git clone https://github.com/yslxotwod/IMSIsting.git
cd IMSIsting03 / COMPILE
Build the desktop
Configure the native build once, then compile it. The executable is created inside native/builddir.
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.
./imsisting.sh --gui # GTK4 desktop
./imsisting.sh --tui # terminal interface
./imsisting.sh --list # list modules
./imsisting.sh --index # module index as TSVYou 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.
tools/fetch-reference-data.sh
# Check availability without downloading:
tools/fetch-reference-data.sh --checkA 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
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.