
Boîte à outils de sécurité cellulaire GTK4 et CLI avec 57 modules pour l'interface radio 2G GSM, 3G UMTS, 4G LTE et 5G NR, le réseau cœur, l'identité SIM, le suivi RF et l'analyse d'attaques.
Une boîte à outils GTK4 de sécurité cellulaire pour Linux, avec une CLI complète en arrière-plan. Des modules shell couvrant la 2G/GSM, la 3G/UMTS, la 4G/LTE et la 5G/NR, ainsi qu'une analyse passive sur captures et des kits CVE par génération.
Chaque module est un script autonome. L'interface graphique est une vue au-dessus d'eux, pas un conteneur — rien n'est verrouillé derrière l'interface.
Développement précoce, et honnête à ce sujet. Aucun module de cet arbre n'a été exécuté contre une radio réelle. Il n'y a pas de SDR sur la machine sur laquelle il a été construit, donc chaque chemin radio est écrit et relu mais non testé. La section Ce qui fonctionne réellement indique exactement ce qui l'est et ce qui ne l'est pas, et il vaut la peine de la lire avant de signaler un bug.
L'outillage cellulaire est divisé par couche et par génération. gr-gsm c'est la 2G. srsRAN c'est la 4G/5G. Osmocom c'est la pile en dessous. Wireshark dissèque ce que vous avez capturé mais ne le capturera pas, et aucun d'entre eux ne partage une vue cible.
Cet arbre est large à dessein : un bureau, un lanceur, un endroit où une étude de cellules, un décodage NAS, un message Diameter et un audit de chiffrement aboutissent tous dans le même TSV.
L'autre chose qu'il fait différemment : la plupart des outils vous disent qu'ils ont fonctionné. Celui-ci est conçu pour vous dire quand ils ne l'ont pas fait. Chaque module dispose d'un --selftest, ceux conditionnés par le matériel nomment la radio qui leur manque au lieu de renvoyer un résultat vide, et un module qui ne peut pas faire son travail se termine avec un code non nul plutôt que de signaler un succès.
Chaque ligne porte un statut d'attaque, et c'est le statut honnête. L'axe n'est pas « le module possède-t-il un verbe d'attaque » — un verbe qui imprime un fichier de plan et un verbe qui imprime des octets de protocole sont identiques dans --help, et les distinguer est tout l'intérêt de cette colonne. L'axe est calcule-t-il les octets de l'attaque.
| Statut | Signification |
|---|---|
built | Il construit réellement les octets de protocole de l'attaque et effectue chaque étape logicielle. Le saut radio ou réseau est un passage de relais nommé (status: handoff, matériel nommé) — délibéré, conformément à docs/MODULE_CONVENTIONS.md §9, et non une lacune. |
built · TX | Comme built, et il dispose aussi d'un véritable verbe de transmission : la trame est envoyée à une commande externe que vous fournissez (BEXP_TX_CMD / NRJ_TX_CMD), derrière une garde armée. |
partial | Certains verbes offensifs calculent de vrais octets ; d'autres sont de la prose, un modèle arithmétique ou un plan. La description précise lesquels. |
plan | Aucun calcul offensif. Le vecteur est un fichier de plan nommant le matériel ou le banc de test nécessaire. |
none | Aucun volet offensif, par conception — décodage, analyse ou défense. Pas une lacune ; le module ne prétend pas le contraire. |
L'audit détaillé derrière ces verdicts, avec un file:line pour chaque classification, se trouve dans docs/OFFENSIVE-GAP-ANALYSIS.md.
| Module | Description | Attaque |
|---|---|---|
00_deps | Inspecter la chaîne d'outils cellulaire et installer ce qui manque | none |
01_radio | Énumérer les SDR, rapporter la capacité par bande, enregistrer l'IQ | none |
05_field_kit | Pré-vol RF, vérification d'honnêteté de chaque verbe radio, source GSMTAP synthétique | none |
| Module | Description | Attaque |
|---|---|---|
02_cell_recon | Étudier les cellules GSM/UMTS/LTE/NR ; calculs ARFCN et PLMN | none |
03_gsmtap | GSMTAP en direct sur UDP, et décodage hors ligne d'une capture GSMTAP | none |
04_tower_map | Étude de cellules géolocalisées avec export CSV/KML/GeoJSON | none |
| Module | Description | Attaque |
|---|---|---|
06_gsm_air | Décodage BCCH/SI, analyse de pagination, audit de chiffrement, keystream A5/1 | none |
07_gsm_attack | Séquence d'IMSI catcher, rétrogradation A5/1, désanonymisation TMSI | built |
| Module | Description | Attaque |
|---|---|---|
08_umts_air | UARFCN, décodage SIB, intégrité RRC (UIA), analyse de relais AKA | none |
08_umts_air est le trou honnête dans l'arborescence. Toutes les autres générations disposent d'un module de station de base frauduleuse : la GSM a 07_gsm_attack, la LTE a 09_lte_attach et 10_lte_air, la NR a 12_nr_air. L'UMTS n'a qu'un décodeur et rien d'autre — pas de --forge-*, pas d'encodeur, aucun verbe offensif d'aucune sorte. C'est la seule génération sans chemin de type IMSI-catcher, et la primitive manquante est déjà présente, inutilisée, dans l'arborescence : 07_gsm_attack --f9-mac est le KASUMI f9 (UIA1) vérifié contre les trois vecteurs officiels de la TS 35.203 §5, et 08_umts_air --mac-input émet déjà les champs que f9 consomme. Les câbler dans un --forge-rrc représente une trentaine de lignes. Cela n'a pas encore été fait.
| Module | Description | Attaque |
|---|---|---|
09_lte_attach | Encodage-décodage NAS EMM/ESM, IMSI/IMEI en BCD, forge d'attach | built |
10_lte_air | Décodage RRC/SIB, calcul de trame de paging, orchestration d'eNB srsRAN | built |
11_lte_core | Diameter S6a/S6d, GTP-C/GTP-U, S1-MME, vecteurs EPC | plan |
10_lte_air écrit les deux configurations srsRAN et exécute srsenb — un véritable eNB frauduleux, pour ce qui est du logiciel. 11_lte_core est le cas inverse : quatre encodeurs Diameter/GTP terminés qui émettent de vrais octets, et jusqu'à présent aucun transport. --gtpc-send ferme la moitié GTP-C via tools/udp_assoc.py — armé (LTE_ARMED=1), et honnête sur ce que prouve un datagramme : le rapport indique sent et, séparément, si quelque chose a répondu, car UDP n'a pas d'accusé de réception et le silence n'est pas une livraison. --diameter-send ferme la moitié Diameter via tools/stream_assoc.py : TCP 3868, TLS lorsque LTE_DIAMETER_TLS=1, et vérification activée par défaut — un pair non vérifié est signalé en toutes lettres et n'est jamais le défaut silencieux. Aucune poignée de main CER/CEA n'est effectuée et aucune réponse n'est associée à une requête.
| Module | Description | Attaque |
|---|---|---|
12_nr_air | NR-ARFCN, SSB/MIB/SIB1, RACH, orchestration de gNB | built |
13_nr_core | N2/N3/N4, bus de services SBA, NGAP, PFCP, 5G-AKA | plan |
14_suci | Dissimulation/dévoilement SUCI, profil ECIES A/B, HKDF, MSIN en BCD | built |
15_downgrade | Pilotage inter-générations, chiffrement nul, analyse de cause de rejet | built |
13_nr_core décode réellement NGAP/PFCP/GTP-U, mais chacun de ses quatre vecteurs est un fichier de plan ; il n'y a aucun client réseau.
| Module | Description | Attaque |
|---|---|---|
16_sim | APDU ISO-7816, fichiers USIM, OTA (TS 23.048), eSIM RSP | plan |
16_sim construit une véritable C-APDU ISO-7816 et décode OTA/IMSI/ICCID, mais ses quatre chemins offensifs — rejeu OTA vers une UICC, écriture sur SIM programmable, installation de profil eSIM, session APDU en direct — sont des fichiers de plan status: handoff. Il n'y a ni appel PC/SC ni CCID, ni boucle d'échange APDU dans le module.
| Module | Description | Attaque |
|---|---|---|
17_pcap_analysis | Dissection pcap/pcapng avec un lecteur autonome | none |
18_imsi_exposure | Collecte d'identités, corrélation TMSI→IMSI, notation de l'exposition | built |
19_cipher_audit | Notation du chiffrement négocié et détection de downgrade | none |
19_cipher_audit détecte un downgrade ; il n'en effectue pas — il ne contient ni injecteur de Security Mode Command ni forçage A5/0.