Pubblicità

Pycrate

Benoit Michau et l’organisation pycrate-org (projet hébergé à l’origine par P1 Security, compte GitHub P1sec) Telecomunicazioni e VoIP Open source

Pycrate, libreria Python libera, decodifica e crea messaggi delle reti mobili dal 2G al 5G per sviluppatori e ricercatori su Windows, macOS e Linux.

Solo link ufficiali, verificati il Ottobre 11, 2026

Indice
  1. A cosa serve Pycrate
  2. Per chi è?
  3. Scaricare Pycrate in sicurezza
  4. Domande frequenti

Codificare e decodificare i messaggi di segnalazione delle reti mobili è il mestiere di Pycrate, una libreria Python libera rilasciata con licenza LGPL v2.1. Il suo autore, Benoit Michau, l’ha pubblicata per la prima volta nel 2017 come erede di libmich, un progetto avviato nel 2009 e messo a riposo nel 2017.

Per anni il codice è rimasto sull’account GitHub della società P1 Security, con il nome P1sec. Da febbraio 2024 si trova in un’organizzazione collaborativa dedicata, pycrate-org, e il vecchio repository è archiviato con un rimando a quello nuovo. La versione 0.8.1 è arrivata su PyPI l’11 maggio 2026 e il repository continua a ricevere modifiche.

Pubblicità

A cosa serve Pycrate

Il fulcro è un compilatore ASN.1 scritto in Python. ASN.1 è la notazione con cui il 3GPP e l’ITU descrivono la struttura di molti messaggi di telecomunicazione, come quelli dei protocolli S1AP, NGAP e RRC. Pycrate legge queste specifiche e genera moduli Python in grado di codificare e decodificare i messaggi secondo le regole PER, allineate e non, oltre a BER, CER, DER, OER e JER. Con la libreria viene fornita un’ampia raccolta di specifiche già compilate, così raramente serve partire da zero.

Pycrate gestisce anche CSN.1, una notazione meno diffusa usata per alcuni messaggi radio GSM e GPRS, e implementa direttamente la maggior parte dei formati NAS, cioè i messaggi scambiati tra il telefono e il core di rete dal 2G fino al 5G. L’elenco prosegue con GTP nelle sue varie versioni, PFCP, Diameter, SCCP, ISUP, gli SMS, i pacchetti protetti delle SIM e persino alcuni formati multimediali come JPEG, GIF e TIFF. Completano il tutto alcuni strumenti a riga di comando, tra cui pycrate_asn1compile.py per compilare una specifica e pycrate_shownas.py per mostrare il contenuto di un messaggio NAS.

La libreria include infine un piccolo core di rete, pycrate_corenet, capace di gestire femtocelle 3G tramite l’interfaccia Iuh e stazioni base LTE tramite S1. Il repository precisa che supporta soprattutto SMS e connessione dati, ma non le chiamate vocali né i passaggi da una cella all’altra. Per far funzionare un vero core 4G o 5G, Open5GS, presente anch’esso nella nostra raccolta di software, è molto più maturo.

Pycrate si colloca accanto a Scapy, già presente nella nostra raccolta. Scapy eccelle nella costruzione di pacchetti IP, TCP o UDP, mentre Pycrate si concentra sulle strutture annidate tipiche della telefonia mobile. Uno sviluppatore può usarlo per verificare che i messaggi prodotti dal proprio stack siano conformi, un ingegnere per decodificare una traccia catturata su un’interfaccia S1 o N2, un auditor per costruire messaggi volutamente malformati e osservare la reazione di un apparato.

Per chi è?

Pycrate si rivolge a chi sviluppa stack di protocolli, ai ricercatori che si occupano di sicurezza delle reti mobili, ai gruppi di collaudo dei produttori di apparati e agli studenti avanzati che preferiscono maneggiare messaggi reali piuttosto che leggere tabelle di specifiche. Una buona padronanza di Python è indispensabile.

Non è uno strumento pronto all’uso per il grande pubblico. Manca un’interfaccia grafica e per usarlo bene bisogna sapere che cosa contiene uno standard 3GPP e come è organizzato. La documentazione consiste in un wiki e nei commenti del codice, e l’autore avverte nel repository che un’assistenza individuale richiede tempo e non sempre è possibile. Per consultare semplicemente una cattura è più comodo un analizzatore come Wireshark, mentre per costruire una rete funzionante conviene guardare a Open5GS oppure a Osmocom.

Pubblicità

Scaricare Pycrate in sicurezza

La via più semplice è il comando pip install pycrate, che scarica il pacchetto ufficiale pubblicato su PyPI, un archivio di circa 13 MB. In alternativa si può clonare github.com/pycrate-org/pycrate e installare la libreria con lo script setup.py incluso, ottenendo così le correzioni più recenti. Nessuna dipendenza è obbligatoria. Alcune funzioni richiedono moduli opzionali, come CryptoMobile per cifrare i messaggi NAS 4G e 5G o pysctp per il core di rete.

Pycrate è del tutto gratuito. La licenza LGPL v2.1 ne consente l’integrazione in software proprietario, a patto di condividere le modifiche apportate alla libreria stessa. Il vecchio repository P1sec è archiviato e non riceve più correzioni. Su PyPI conviene controllare che la pagina del pacchetto rimandi all’organizzazione pycrate-org prima di installare qualunque cosa, perché i nomi quasi identici sono una trappola nota dell’ecosistema Python.

Domande frequenti

Pycrate è gratuito?

Sì. La libreria è distribuita con licenza LGPL v2.1, compatibile con le versioni successive della LGPL. Non esiste un’edizione a pagamento.

Che differenza c’è tra il repository P1sec e pycrate-org?

La libreria è la stessa. Il repository storico ospitato da P1sec è archiviato dal trasloco del 2024 e lo sviluppo prosegue nell’organizzazione pycrate-org, da cui provengono anche i pacchetti PyPI.

Pycrate funziona su Windows?

Sì. Secondo il repository, la libreria viene testata su Linux, macOS e Windows con Python 3.5 o versioni successive. Il supporto a Python 2 si è fermato con la versione 0.5.5.

La nostra opinione

Ci piace

  • Compilatore ASN.1 completo scritto in Python
  • Messaggi NAS dal 2G al 5G già pronti
  • Nessuna dipendenza obbligatoria
  • Testato su Linux, macOS e Windows
  • Licenza LGPL adatta anche all’uso commerciale

Ci piace meno

  • Nessuna interfaccia grafica
  • Richiede una buona conoscenza degli standard 3GPP
  • Mantenuto da un gruppo molto ristretto
  • Modulo corenet essenziale, senza chiamate

Scheda tecnica

EditoreBenoit Michau et l’organisation pycrate-org (projet hébergé à l’origine par P1 Security, compte GitHub P1sec)
LicenzaOpen source
PrezzoGratis
Versione0.8.1
Dimensione13,4 Mo (paquet wheel sur PyPI)
Aggiornato ilMaggio 11, 2026
RequisitiPython 3.5 ou plus récent (CPython) ; dépendances facultatives : CryptoMobile et pysctp pour le cœur de réseau corenet, lxml, crcmod
PiattaformeWindows, macOS, Linux

Alternative

Jean Mathieu

Scritto da

Jean Mathieu

Ingegnere e appassionato web writer dal 2018, unisco la mia competenza tecnica all'amore per la scrittura per condividere con la community notizie, consigli e conoscenze pratiche.