Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
IMSIsting — GTK4 and CLI cellular security toolkit with 57 modules for 2G GSM, 3G UMTS, 4G LTE and 5G NR air interface, core network, SIM identity, RF tracking, and attack analysis. | Kitploit
Tools/GitHubGitHub/yslxotwod/imsisting
IoT SecurityPayload GenerationVulnerability AnalysisExploitationInformation GatheringFuzzingNetwork SecurityWireless SecurityDigital ForensicsPenetration TestingHardware & IoT Security
2531555 days agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share
GitHub
yslxotwod/imsisting

IMSIsting

GTK4 and CLI cellular security toolkit with 57 modules for 2G GSM, 3G UMTS, 4G LTE and 5G NR air interface, core network, SIM identity, RF tracking, and attack analysis.

View RepositoryWebsite

IMSIsting

A GTK4 cellular security toolkit for Linux, with a full CLI behind it. Shell modules covering 2G/GSM, 3G/UMTS, 4G/LTE and 5G/NR, plus passive analysis over captures and per-generation CVE kits.

image

Every module is a standalone script. The GUI is a view over them, not a container — nothing is locked behind the interface.

Early development, and honest about it. No module in this tree has been run against a real radio. There is no SDR on the machine it was built on, so every over-the-air path is written and reviewed but not tested. The section What actually works says exactly which is which, and it is worth reading before you file a bug.


Why this exists

Cellular tooling is split by layer and by generation. gr-gsm is 2G. srsRAN is 4G/5G. Osmocom is the stack underneath. Wireshark dissects what you captured but will not capture it, and none of them share a target view.

This tree is wide on purpose: one desk, one launcher, one place where a cell survey, a NAS decode, a Diameter message and a cipher audit all land in the same TSV.

The other thing it does differently: most tools tell you they worked. This one is built to tell you when they didn't. Every module has a --selftest, the hardware-gated ones name the radio they are missing instead of returning an empty result, and a module that cannot do its job exits non-zero rather than reporting success.

No module has an approval gate. Nothing refuses because a flag or an environment variable was not set first. The retired --i-have-a-lab-and-authorisation, --ack-isolated-lab, LTE_ARMED, NR_ARMED, MAP_ARMED, FEMT_S1_ARMED, SBA_ARMED, BEXP_TX_ARMED, NRJ_TX_ARMED and JAMD_LAB_AUTHORISED are accepted and ignored, so old command lines keep working. bash modules/00_deps.sh --preflight prints the state of the box in one page.


How to run it

Build the GUI:

cd native
meson setup builddir
meson compile -C builddir

Then, from the project root:

sudo ./imsisting.sh          # CLI menu
./imsisting.sh --list        # module list
./imsisting.sh --index       # the module index as TSV
./imsisting.sh --gui         # launch the GUI
./imsisting.sh --tui         # launch the TUI (modules listed by their menu keys)
image

Or launch the built binary directly:

./native/builddir/imsisting-gui

Shortcuts. The repository ships bin/ wrappers so you can type imsisting, imsisting-gui, imsisting-tui without the full path. Add them to your PATH:

export PATH="$PWD/bin:$PATH"   # add to ~/.bashrc or ~/.profile
imsisting --list                # works from any directory
imsisting-gui                   # launch the GUI
imsisting-tui                   # launch the TUI

The GUI asks for your password per action via pkexec, not once at startup.

Dependencies

Required: GTK4 (4.14+), meson, ninja, a C compiler, python3.

# Debian / Ubuntu
sudo apt install build-essential meson ninja-build libgtk-4-dev \
                 python3 python3-numpy python3-scipy

# Arch
sudo pacman -S base-devel meson ninja gtk4 python python-numpy python-scipy

Optional but used by specific modules: gnuradio + gr-gsm, srsRAN, Open5GS/free5GC, tshark, pcsc-tools, gpsd, python3-cryptography. 00_deps reports what is present and what is missing, and distinguishes a tool that is installed from a stack that is actually complete.

Reference data

A decode gives you an identity; the reference tables give you an owner. They are public but not shipped, because they are hundreds of thousands of rows and go stale — run the fetcher once per checkout:

tools/fetch-reference-data.sh            # ~2 500 PLMNs, ~6 300 ISPCs, ~67 000 PENs
tools/fetch-reference-data.sh --check    # what is present, without downloading

Lookups distinguish three states and the toolkit never collapses them: ok (the operator), absent (the register was read and holds no such row — that is the finding), and silent (the table is not on this machine — the answer is unobserved, not negative). 02_cell_recon --status-tsv reports the register under plmn_register; 26_ss7_map --ispc prints owner_state on every lookup.

data/opops/ is the private half: operator-supplied tables for global-title prefixes, cell identity blocks, core address ranges and SMSC identities. The tree ships the loader and the schema, never the contents, and reports a missing file as silent rather than as an empty answer.

The interface

The GUI opens on a Dashboard — every module as a card, grouped by category. Click a card and the module opens as its own tab. Six tabs are permanent:

image
TabWhat it is
DashboardEvery module as a card, grouped by category. The main menu.
Live TrafficA live GSMTAP view (below). Starts listening when you open it.
CasebookCases, selected cells, evidence/captures, timeline, IDS alerts, passive sensor nodes and HTML/JSON/TSV reports. The Evidence page retains the per-module loot browser and preview.
MapOne permanent map for everything the toolkit located: cells, TA rings, geolocated frames and areas from loot/map/layers/*.tsv, drawn over a bundled Natural Earth basemap. Pan, zoom, and toggle layers.
FleetRemote nodes and what each one measured: class, transport, role, capabilities, last seen and how far behind its event stream is. Survey a node, collect a stream window, copy it into the case, or dispatch a module to run there.
StatsModule and collection counts, a health line, and where the toolkit is thick.
NotificationsWhat the tree decided to tell you, oldest first.
HelpHow the tree fits together and how to drive it.
SettingsEnvironment facts, plus dependency and SDR probe actions.
WorkflowsSaved chains, run from the panel.

Module tabs appear alongside these and can be closed; the permanent tabs cannot.

Themes

Settings → Interface → Theme switches the whole desk between two palettes: Night, the blue-black palette the app was drawn in, and Ember, the same desk one temperature over — near-black surfaces with a warm bias and a single ember accent.

After changing the generator:

tools/gen-theme.py            # write native/resources/theme-ember.css
tools/check-theme.sh          # packaged? generated? in step with the base sheet?
cd native && ninja -C builddir

tools/check-theme.sh exists because a theme that is not packaged fails silently: GTK draws the base sheet and the dropdown still reads "Ember". The GUI's --selftest asserts the same thing (gui-theme-ember PASS packaged).

A node as a source

A survey does not have to happen on the machine in front of you. Any module that reads the air can be pointed at a registered node, and the node answers with what it actually measured:

Download Tool