Publicité

Pycrate

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

Pycrate, bibliothèque Python libre, décode et forge les messages des réseaux mobiles 2G à 5G pour développeurs et chercheurs, sous Windows, macOS et Linux.

Liens officiels uniquement, vérifiés le octobre 11, 2026

Sommaire
  1. À quoi sert Pycrate
  2. Pour qui ?
  3. Télécharger Pycrate sans risque
  4. Questions fréquentes

Encoder et décoder les messages de signalisation des réseaux mobiles, c’est la spécialité de Pycrate, une bibliothèque Python libre publiée sous licence LGPL v2.1. Son auteur, Benoit Michau, l’a diffusée pour la première fois en 2017 pour succéder à libmich, un projet lancé en 2009 et mis à la retraite en 2017.

Le code a longtemps été hébergé sur le compte GitHub de la société P1 Security, sous le nom P1sec. Depuis février 2024, il vit dans une organisation collaborative dédiée, pycrate-org, et l’ancien dépôt est archivé avec un renvoi vers le nouveau. La version 0.8.1 a été publiée sur PyPI le 11 mai 2026, et le dépôt continue de recevoir des modifications.

Publicité

À quoi sert Pycrate

La pièce maîtresse est un compilateur ASN.1 écrit en Python. ASN.1 est le langage dans lequel le 3GPP et l’UIT décrivent la structure de nombreux messages télécoms, par exemple ceux des protocoles S1AP, NGAP ou RRC. Pycrate lit ces spécifications et produit des modules Python capables d’encoder et de décoder les messages selon les règles PER, alignées ou non, ainsi que BER, CER, DER, OER et JER. Une large collection de spécifications déjà compilées est livrée avec la bibliothèque, ce qui évite de tout reconstruire soi-même.

Pycrate prend aussi en charge CSN.1, une notation plus confidentielle employée pour certains messages radio GSM et GPRS, et implémente directement la plupart des formats NAS, ces messages échangés entre le téléphone et le cœur de réseau, de la 2G jusqu’à la 5G. On y trouve encore GTP dans ses différentes versions, PFCP, Diameter, SCCP, ISUP, les SMS, les paquets sécurisés des cartes SIM, et même quelques formats multimédias comme JPEG, GIF ou TIFF. Des outils en ligne de commande accompagnent le tout, dont pycrate_asn1compile.py pour compiler une spécification et pycrate_shownas.py pour afficher le contenu d’un message NAS.

La bibliothèque embarque enfin un petit cœur de réseau, pycrate_corenet, qui sait piloter des femtocellules 3G par l’interface Iuh et des stations de base LTE par S1. Le dépôt précise qu’il gère surtout les SMS et la connexion aux données, mais ni les appels vocaux ni les transferts entre cellules. Pour exploiter un vrai cœur 4G ou 5G, Open5GS, présenté lui aussi dans notre logithèque, est bien plus abouti.

Sa place est voisine de celle de Scapy, déjà présent dans notre logithèque. Scapy brille dans la fabrication de paquets IP, TCP ou UDP, alors que Pycrate se concentre sur les structures imbriquées propres à la téléphonie mobile. Un développeur peut s’en servir pour vérifier qu’un message produit par sa pile est conforme, un ingénieur pour décoder une trace capturée sur une interface S1 ou N2, et un auditeur pour construire des messages volontairement mal formés afin d’observer la réaction d’un équipement.

Pour qui ?

Pycrate s’adresse aux développeurs de piles protocolaires, aux chercheurs en sécurité des réseaux mobiles, aux équipes de test d’équipementiers et aux étudiants avancés qui veulent manipuler des messages réels plutôt que de lire des tableaux de spécifications. Une bonne maîtrise de Python est indispensable.

Ce n’est pas un outil prêt à l’emploi pour le grand public. Il n’a pas d’interface graphique, et son utilisation suppose de savoir ce que contient une norme 3GPP et comment elle s’organise. La documentation repose sur un wiki et sur les commentaires du code, et l’auteur prévient dans le dépôt qu’une aide individuelle demande du temps et n’est pas toujours possible. Pour simplement visualiser une capture, un analyseur comme Wireshark sera plus confortable, et pour monter un réseau complet, mieux vaut se tourner vers Open5GS ou Osmocom.

Publicité

Télécharger Pycrate sans risque

La méthode la plus simple consiste à lancer pip install pycrate, qui récupère le paquet officiel publié sur PyPI, une archive d’environ 13 Mo. On peut aussi cloner le dépôt github.com/pycrate-org/pycrate et installer la bibliothèque avec son script setup.py, ce qui donne accès aux corrections les plus récentes. Aucune dépendance n’est obligatoire. Certaines fonctions demandent des modules facultatifs, comme CryptoMobile pour chiffrer les messages NAS en 4G et 5G ou pysctp pour le cœur de réseau.

Pycrate est entièrement gratuit. La licence LGPL v2.1 autorise son intégration dans un logiciel propriétaire, à condition de redistribuer les modifications apportées à la bibliothèque elle-même. L’ancien dépôt P1sec étant archivé, il ne reçoit plus de correctifs. Sur PyPI, mieux vaut vérifier que la page du paquet renvoie bien vers l’organisation pycrate-org avant d’installer quoi que ce soit, car les noms proches sont un piège classique de l’écosystème Python.

Questions fréquentes

Pycrate est-il gratuit ?

Oui. La bibliothèque est distribuée sous licence LGPL v2.1, compatible avec les versions plus récentes de la LGPL. Il n’existe aucune édition payante.

Quelle différence entre le dépôt P1sec et pycrate-org ?

Les deux adresses désignent la même bibliothèque. Le dépôt historique hébergé par P1sec est archivé depuis le déménagement de 2024, et le développement se poursuit dans l’organisation pycrate-org, d’où proviennent aussi les paquets PyPI.

Pycrate fonctionne-t-il sous Windows ?

Oui. Selon le dépôt, la bibliothèque est testée sous Linux, macOS et Windows avec Python 3.5 ou plus récent. La prise en charge de Python 2 s’est arrêtée avec la version 0.5.5.

Notre avis

On aime

  • Compilateur ASN.1 complet écrit en Python
  • Messages NAS de la 2G à la 5G prêts à l’emploi
  • Aucune dépendance obligatoire
  • Testé sous Linux, macOS et Windows
  • Licence LGPL compatible avec un usage commercial

On aime moins

  • Aucune interface graphique
  • Suppose de bien connaître les normes 3GPP
  • Maintenance assurée par une très petite équipe
  • Cœur corenet limité, ni appels ni handover

Fiche technique

ÉditeurBenoit Michau et l’organisation pycrate-org (projet hébergé à l’origine par P1 Security, compte GitHub P1sec)
LicenceOpen source
PrixOffert
Version0.8.1
Taille13,4 Mo (paquet wheel sur PyPI)
Mise à jour lemai 11, 2026
Configuration requisePython 3.5 ou plus récent (CPython) ; dépendances facultatives : CryptoMobile et pysctp pour le cœur de réseau corenet, lxml, crcmod
PlateformesWindows, macOS, Linux

Alternatives

Jean Mathieu

Écrit par

Jean Mathieu

Ingénieur passionné et rédacteur web depuis 2018, j'allie mon expertise technique à ma passion pour l'écriture pour partager astuces, actualités et savoirs pratiques avec la communauté.