Substrat logo
substrat v1.4.0

Your traffic has a grammar.
Substrat finds it.

Votre trafic a une grammaire.
Substrat la trouve.

Your machines talk.
Substrat understands them.

Vos machines communiquent.
Substrat les comprend.

Protocol reverse-engineering, anomaly detection, Wireshark export and fuzzing. Deterministic, auditable, runs on a laptop.

Reverse-engineering de protocoles, détection d'anomalies, export Wireshark et fuzzing. Déterministe, auditable, tourne sur un laptop.

A tool that automatically learns how your devices communicate, spots anything abnormal, and helps you test their security. No special hardware needed.

Un outil qui apprend automatiquement comment vos équipements communiquent, repère tout ce qui est anormal, et vous aide à tester leur sécurité. Aucun matériel spécial nécessaire.

macOS / Linux / WindowsZero GPURust backend
No expensive hardwarePas de matériel coûteux Works on Mac, Linux & WindowsMac, Linux & Windows Fast & lightweightRapide & léger

Imagine a doctor who has never seen this patient

Imaginez un médecin qui voit un patient pour la première fois

A doctor walks into a room. They've never met this patient. But within minutes, by taking a pulse, measuring blood pressure, checking temperature, they know what "normal" looks like for this body.

Now imagine an alarm goes off. The heart rate spikes. The doctor doesn't need a list of every possible disease — they just know: something has changed.

Substrat does the same thing, but with machines.

Your devices — sensors, servers, industrial controllers — talk to each other constantly. Every message follows a pattern. A rhythm. A grammar. But nobody wrote the manual.

Substrat watches a capture of your traffic, discovers the rules on its own, then checks every packet against them. When a message breaks the pattern — a corrupted header, an unknown command, an injected payload — it's flagged, with the exact reason. Live capture is on the roadmap for v1.3.

The doctor can read the chart. The engineer can read the grammar. It's not a black box. It's a formal description of what your protocol actually does, discovered automatically.

And just like a doctor can run a stress test, Substrat can generate test packets — mutated, corrupted, edge-case — to find out what breaks your system before an attacker does.

Un médecin entre dans une chambre. Il n'a jamais vu ce patient. Mais en quelques minutes — pouls, tension, température — il sait ce qui est normal pour ce corps.

Maintenant une alarme sonne. Le rythme cardiaque s'emballe. Le médecin n'a pas besoin de la liste de toutes les maladies possibles — il sait juste : quelque chose a changé.

Substrat fait la même chose, mais avec des machines.

Vos équipements — capteurs, serveurs, automates industriels — communiquent en permanence. Chaque message suit un schéma. Un rythme. Une grammaire. Mais personne n'a écrit le manuel.

Substrat analyse une capture de votre trafic, découvre les règles tout seul, puis confronte chaque paquet à ces règles. Quand un message casse le schéma, il est signalé avec la raison exacte. La capture live arrive dans la v1.3.

Le médecin peut lire le dossier patient. L'ingénieur peut lire la grammaire. Ce n'est pas une boîte noire. C'est une description formelle de ce que fait votre protocole, découverte automatiquement.

Et tout comme un médecin peut prescrire un test d'effort, Substrat peut générer des paquets de test — mutés, corrompus, cas limites — pour découvrir ce qui casse votre système avant qu'un attaquant ne le fasse.

$ substrat re capture.pcap --wireshark ./dissectors

Pcap: 85 packets, 1 services (1 analyzable)

--- Flow: TCP|192.168.1.10:502 (85 packets, BINARY mode) ---
Coverage: 94%

Protocol grammar discovered:
  MSG -> MAGIC_0 DATA_1 FIXED_2 TYPE_3 DATA_4 FIXED_5 DATA_6
  MAGIC_0 -> 0x00
  FIXED_2 -> 0x00000006
  TYPE_3  -> 0x01 | 0x02 | 0x03

Anomalies found: 5/85 packets

Wireshark dissector: ./dissectors/TCP_192.168.1.10_502.lua
Total CPU: 0.034s
    

Who is Substrat for

À qui s'adresse Substrat

Pentesters & forensics analysts

Pentesters & analystes forensics

Security testers

Testeurs de sécurité

Reverse-engineer unknown protocols from a pcap in under a second. Get the grammar, the Wireshark dissector and a fuzz corpus — hours of manual work, automated.

Reverse-engineerez des protocoles inconnus depuis un pcap en moins d'une seconde. Des heures de travail manuel, automatisées.

People who test the security of computer systems. Substrat gives them an instant X-ray of how machines talk to each other, and generates test cases to find weaknesses.

Les personnes qui testent la sécurité des systèmes informatiques. Substrat leur donne une radiographie instantanée de la communication entre machines, et génère des cas de test pour trouver les faiblesses.

SOC & security teams

SOC & équipes sécurité

Security monitoring teams

Équipes de surveillance

Analyze captured traffic without writing signatures. Substrat learns the baseline from a pcap and flags every deviation, with the exact rule broken. Live capture ships in v1.3.

Analysez des captures réseau sans écrire de signatures. Substrat apprend la baseline depuis un pcap et signale chaque déviation, avec la règle exacte cassée. La capture live arrive en v1.3.

Teams analyzing network captures for incidents. Substrat learns what's normal and flags anything unusual — even attacks nobody has seen before.

Les équipes qui analysent les captures réseau lors d'incidents. Substrat apprend ce qui est normal et signale tout ce qui est inhabituel — même des attaques jamais vues.

IoT & industrial (SCADA/ICS)

IoT & industriel (SCADA/ICS)

Factories & connected devices

Usines & objets connectés

Discover the grammar of proprietary protocols on sensors, PLCs, SCADA systems from captured traffic. Runs on a Raspberry Pi. No GPU, no cloud.

Découvrez la grammaire de protocoles propriétaires sur capteurs et automates depuis du trafic capturé. Tourne sur Raspberry Pi. Pas de GPU, pas de cloud.

Factories use machines that speak proprietary languages nobody documented. Substrat learns these languages automatically — running on hardware as small as a credit card.

Les usines utilisent des machines qui parlent des langages que personne n'a documentés. Substrat les apprend automatiquement — sur du matériel aussi petit qu'une carte de crédit.

R&D & protocol designers

R&D & concepteurs de protocoles

Engineers building new systems

Ingénieurs qui construisent de nouveaux systèmes

Validate that your implementation matches your spec. Use Substrat as an automatic conformance checker.

Validez que votre implémentation correspond à votre spec. Substrat sert de vérificateur de conformité automatique.

Engineers who design communication systems can use Substrat to verify that their system works as intended — like a spell-checker for machine communication.

Les ingénieurs qui conçoivent des systèmes de communication peuvent vérifier que leur système fonctionne comme prévu — comme un correcteur pour la communication entre machines.

0.04s
on MODBUS/TCP (85 packets)
sur MODBUS/TCP (85 paquets)
to analyze an industrial capture
pour analyser une capture industrielle
94%
grammar coverage (MODBUS)
couverture grammaire (MODBUS)
of messages understood
des messages compris
5/5
injected anomalies detected
anomalies injectées détectées
simulated attacks caught
attaques simulées détectées
8
protocols incl. TLV (IEC-104 style)
protocoles dont TLV (type IEC-104)
protocols tested so far
protocoles testés à ce jour

Measured on MacBook (Apple Silicon). Download the pcaps and reproduce every number. Mesuré sur MacBook (Apple Silicon). Téléchargez les pcaps et reproduisez chaque chiffre.

What you get from one command

Ce que vous obtenez en une commande

What Substrat does for you

Ce que Substrat fait pour vous

Protocol Grammar

Grammaire du protocole

It reads the language of your machines

Il comprend le langage de vos machines

Human-readable rules describing the exact structure of your protocol. Magic bytes, type fields, length fields, variable data — all identified automatically.

Des règles lisibles décrivant la structure exacte de votre protocole. Magic bytes, champs de type, de longueur, données variables — tout identifié automatiquement.

Your devices exchange messages in a specific format. Substrat figures out that format on its own, and writes it down in rules that any engineer can read and verify.

Vos équipements échangent des messages dans un format précis. Substrat découvre ce format tout seul et le rédige sous forme de règles que n'importe quel ingénieur peut lire.

Anomaly Detection

Détection d'anomalies

It spots what doesn't belong

Il repère ce qui ne va pas

Every packet that deviates from the learned structure is flagged. Corrupted headers, unknown types, truncated messages. No signatures needed.

Chaque paquet qui dévie de la structure apprise est signalé. Headers corrompus, types inconnus, messages tronqués. Pas de signatures.

Once it knows the normal rhythm of your traffic, any message that breaks the pattern triggers an alert. No need to describe every possible attack in advance.

Une fois qu'il connaît le rythme normal de votre trafic, tout message qui casse le schéma déclenche une alerte. Pas besoin de décrire chaque attaque à l'avance.

Wireshark Dissector

Dissecteur Wireshark

It plugs into your existing tools

Il se branche sur vos outils existants

Auto-generated .lua dissector, registered on the right port. Load it in Wireshark — fields are named, anomalies marked in Expert Info.

Dissecteur .lua généré automatiquement, enregistré sur le bon port. Chargez-le dans Wireshark — champs nommés, anomalies marquées.

Substrat generates a plugin for Wireshark (the standard network analysis tool). Open your capture, every field is already named — no manual work.

Substrat génère un plugin pour Wireshark (l'outil standard d'analyse réseau). Ouvrez votre capture, chaque champ est déjà nommé — aucun travail manuel.

Fuzz Corpus

Corpus de fuzz

It tests your system's resistance

Il teste la résistance de votre système

500 mutated packets in 3 strategies: field corruption, boundary values, structural mutations. Ready to send to the target.

500 paquets mutés selon 3 stratégies : corruption de champs, valeurs limites, mutations structurelles.

Like a stress test for your heart, Substrat generates hundreds of slightly corrupted messages to see how your system reacts. It finds weaknesses before an attacker does.

Comme un test d'effort pour votre cœur, Substrat génère des centaines de messages légèrement corrompus pour voir comment votre système réagit.

Tested on real protocols

Testé sur des protocoles réels

Works with real-world systems

Fonctionne avec des systèmes réels

MODBUS/TCP

SCADA industrial protocol. 94% grammar coverage on 85 packets. 5/5 injected anomalies detected. 0.04s end-to-end.

Protocole industriel SCADA. 94% de couverture grammaire sur 85 paquets. 5/5 anomalies injectées détectées. 0.04s bout-en-bout.

The language used by industrial machines in factories. Substrat understood 94% of it automatically and caught all 5 simulated attacks in a fifth of a second.

Le langage utilisé par les machines industrielles. Substrat en a compris 94% automatiquement et a détecté les 5 attaques simulées en un cinquième de seconde.

DNS

Real capture, 38 packets, 3 flows auto-separated. 94–100% coverage per flow. Transaction ID, Flags, Questions count identified. 0.14s.

Capture réelle, 38 paquets, 3 flux séparés automatiquement. 94–100% de couverture par flux. Transaction ID, Flags, nombre de questions identifiés. 0.14s.

The internet's phone book. Substrat identified its structure on a real capture and found anomalies in 0.14 seconds.

L'annuaire d'internet. Substrat a identifié sa structure sur une capture réelle et trouvé des anomalies en 0.14 seconde.

Telnet

136 packets auto-split: IAC binary commands separated from text data in the same TCP flow. 0.56s.

136 paquets séparés automatiquement : commandes binaires IAC séparées des données texte dans le même flux TCP. 0.56s.

A remote control protocol that mixes commands and text. Substrat separated them automatically.

Un protocole de contrôle à distance qui mélange commandes et texte. Substrat les a séparés automatiquement.

HTTP / FTP

Text mode: tokens discovered (CRLF, HTTP/1.1, status codes), requests and responses separated. 0.23–0.45s.

Mode texte : tokens découverts (CRLF, HTTP/1.1, codes status), requêtes et réponses séparées. 0.23–0.45s.

The protocols behind web pages and file transfers. Substrat identified the keywords and separated requests from responses.

Les protocoles derrière les pages web et les transferts de fichiers. Substrat a identifié les mots-clés et séparé requêtes et réponses.

Every benchmark above is fully reproducible — download the pcaps, run the command, compare output. No GPU, no training data, no cloud API. Chaque benchmark ci-dessus est entièrement reproductible — téléchargez les pcaps, lancez la commande, comparez la sortie. Pas de GPU, pas de données d'entraînement, pas d'API cloud.

How it compares

Face à la concurrence

Why Substrat is different

Pourquoi Substrat est différent

Most security tools need you to describe each attack in advance. Substrat works the other way around: it learns what's normal, and anything abnormal is flagged — even attacks never seen before.

Tools that do similar things either require GPU hardware and produce opaque scores, or stop at an anomaly score without telling you why. Substrat runs on a regular laptop and gives you a readable grammar your team can audit.

La plupart des outils de sécurité demandent de décrire chaque attaque à l'avance. Substrat fonctionne à l'envers : il apprend ce qui est normal, et tout ce qui est anormal est signalé — même les attaques jamais vues.

Les outils qui font des choses similaires nécessitent soit du matériel GPU et produisent des scores opaques, soit s'arrêtent à un score d'anomalie sans expliquer pourquoi. Substrat tourne sur un laptop ordinaire et produit une grammaire lisible auditable.

SubstratSnort/SuricataDarktraceNetzob
Signature-free detectionDétection sans signaturesYes (grammar-based)Oui (grammaire)Signature-basedÀ base de signaturesYes (ML)Oui (ML)Yes (inference)Oui (inférence)
Output formatFormat de sortieHuman-readable grammarGrammaire lisibleRule hit / missRègle touchée / ratéeAnomaly scoreScore d'anomalieGrammar (partial)Grammaire (partielle)
Wireshark dissector exportExport dissecteur WiresharkBuilt-inIntégréNoNonNoNonNoNon
Built-in fuzz corpusCorpus de fuzz intégréYesOuiNoNonNoNonYesOui
Hardware footprintEmpreinte matérielleLaptop / RPiLaptop / RPiLaptop / serverLaptop / serveurAppliance + GPUAppliance + GPULaptop (Python)Laptop (Python)
Real-time captureCapture temps réelPcap only (v1.2)Pcap seul (v1.2)YesOuiYesOuiNoNon

Comparison based on public documentation of each tool as of 2026. Substrat is complementary — not a replacement — for signature-based IDS. Comparaison basée sur la documentation publique de chaque outil en 2026. Substrat est complémentaire — pas un remplaçant — des IDS à signatures.

Early access — free, full features

Accès anticipé — gratuit, toutes les fonctionnalités

Early Access

Early Access

Accès anticipé

Free
Gratuit
  • substrat learn
  • substrat anomaly
  • substrat re — grammar + anomalies
  • substrat diagnose — fair MDL comparison new in 1.3
  • Wireshark .lua export
  • Fuzz corpus generation
  • Génération de corpus de fuzz
  • Understand any communication format
  • Comprendre n'importe quel format
  • Detect abnormal messages automatically
  • Détecter les messages anormaux
  • Analyze network capture files
  • Analyser les captures réseau
  • Generate a plugin for Wireshark
  • Générer un plugin Wireshark
  • Create security test packets
  • Créer des paquets de test
Download nowTélécharger maintenant

Commercial licensing coming soon. Contact us for enterprise needs. Licence commerciale à venir. Contactez-nous pour les besoins entreprise.

Help us improve Substrat

Aidez-nous à améliorer Substrat

Found a bug or a protocol that Substrat doesn't handle well? Send us the pcap file and a short description. Every report makes the tool better for everyone.

Vous avez trouvé un bug ou un protocole mal géré ? Envoyez-nous le fichier pcap et une courte description. Chaque retour améliore l'outil pour tout le monde.

Send a report with your pcap Envoyer un rapport avec votre pcap

What's coming next

La suite

Substrat is actively developed. Here's where we're headed.

Substrat est en développement actif. Voici ce qui arrive.

Real-time dashboard

Dashboard temps réel

Live monitoring screen

Écran de surveillance en direct

Web interface to visualize traffic, grammars and anomalies live.

Interface web pour visualiser le trafic, les grammaires et les anomalies en direct.

A visual dashboard to monitor your network in real time from any browser.

Un tableau de bord visuel pour surveiller votre réseau depuis n'importe quel navigateur.

REST API

API REST

Connect to your other tools

Connexion à vos autres outils

Integrate Substrat into your pipeline. Plug it into your SIEM, your CI, your SOC toolchain.

Intégrez Substrat dans votre pipeline. Branchez-le sur votre SIEM, votre CI, votre SOC.

Let Substrat work automatically with your existing software — no human intervention needed.

Laissez Substrat travailler automatiquement avec vos logiciels existants.

Burp Suite plugin

Plugin Burp Suite

Built into security testing tools

Intégré aux outils de test

Automatic protocol analysis directly inside Burp during a pentest.

Analyse automatique de protocoles directement dans Burp pendant un pentest.

Substrat will plug directly into the tools security professionals use every day.

Substrat s'intégrera dans les outils que les professionnels utilisent au quotidien.

Team & enterprise

Équipes & entreprises

For companies and teams

Pour les entreprises et équipes

Multi-user licenses, on-premise deployment, SCADA/IoT monitoring at scale, SLA.

Licences multi-utilisateurs, déploiement on-premise, monitoring à grande échelle, SLA.

Licenses for entire teams, installation on your own servers, large-scale monitoring, dedicated support.

Licences pour des équipes entières, installation sur vos serveurs, surveillance à grande échelle, support dédié.

Need something specific? Let's talk.

Un besoin spécifique ? Parlons-en.

Contact us Nous contacter

Substrat as an MCP server

Substrat en serveur MCP

Plug Substrat into Claude Code, Cursor, or any MCP-compatible LLM client — the agent calls grammar induction, compression, and anomaly detection as native tools, not as shell wrappers.

Branchez Substrat sur Claude Code, Cursor ou n'importe quel client LLM compatible MCP — l'agent appelle l'induction de grammaire, la compression et la détection d'anomalies comme des outils natifs, pas comme du wrapping shell.

5 tools exposed5 outils exposés

  • substrat_learn — induce a grammar + bpc— induit une grammaire + bpc
  • substrat_compress — compression ratio via learned grammar— ratio de compression via grammaire apprise
  • substrat_anomaly — structural + statistical anomalies— anomalies structurelles + statistiques
  • substrat_generate — sample valid strings from the grammar— échantillons valides de la grammaire
  • substrat_re — reverse-engineer pcap text flows— reverse engineering de flux pcap texte

Deterministic by designDéterministe par construction

The MCP server exposes the same deterministic engine as the CLI — no neural net, no GPU, same output every run. The LLM orchestrates; Substrat stays auditable. Every returned grammar is human-readable, every flagged anomaly has an explicit reason (nll, len, div, structural).

Le serveur MCP expose le même moteur déterministe que le CLI — pas de réseau neuronal, pas de GPU, même sortie à chaque run. Le LLM orchestre, Substrat reste auditable. Chaque grammaire est lisible, chaque anomalie porte une raison explicite (nll, len, div, structural).

# 1. Download the binary (see Download section below)
# 2. Register it as an MCP server — one command, no Python, no clone:
$ claude mcp add --scope user substrat /path/to/substrat-macos-arm64 mcp

# Same idea for Linux / Windows binaries:
$ claude mcp add --scope user substrat /path/to/substrat-linux-x86_64 mcp
$ claude mcp add --scope user substrat C:\path\to\substrat-windows-x86_64.exe mcp

# Cursor / other clients : same command, point them at the binary with arg "mcp".

# Then, from any conversation, the agent can call:
> analyse anomalies in /var/log/app.log
  → substrat_anomaly(file=..., top_k=20)
  → returns: { grammar, baseline, top-K anomalies by severity, reason_counts }

> compress this MQTT corpus
  → substrat_learn(file=mqtt.txt)
  → strategy: template, 5 slots, bpc=0.498, ratio=6.2% (16× smaller)
      

Frequently asked questions

Questions fréquentes

Does it work on encrypted (TLS) traffic?Est-ce que ça fonctionne sur du trafic chiffré (TLS) ?+

No. Grammar inference needs cleartext. Use Substrat upstream (on the plaintext side: server logs, decrypted captures) or on unencrypted protocols — MODBUS/TCP, many SCADA/IoT protocols, internal service-to-service traffic.

Non. L'inférence de grammaire a besoin de cleartext. Utilisez Substrat en amont (côté plaintext : logs serveur, captures déchiffrées) ou sur des protocoles non chiffrés — MODBUS/TCP, beaucoup de protocoles SCADA/IoT, trafic interne service-à-service.

How is this different from JA3/JA4 fingerprinting?Quelle différence avec JA3/JA4 fingerprinting ?+

JA3/JA4 fingerprint the TLS handshake — they identify who is talking. Substrat reverse-engineers the application protocol — it describes what is being said. Complementary, not competing.

JA3/JA4 fingerprintent le handshake TLS — ils identifient qui parle. Substrat reverse-engineerise le protocole applicatif — il décrit ce qui est dit. Complémentaires, pas concurrents.

Is Substrat replacing Wireshark?Substrat remplace-t-il Wireshark ?+

No — they work together. Substrat discovers the grammar of an unknown protocol and generates a .lua dissector that you load into Wireshark. You still use Wireshark to inspect packets; Substrat just teaches it a new language.

Non — ils fonctionnent ensemble. Substrat découvre la grammaire d'un protocole inconnu et génère un dissecteur .lua que vous chargez dans Wireshark. Vous continuez d'utiliser Wireshark pour inspecter les paquets ; Substrat lui apprend juste une nouvelle langue.

Why no AI or machine learning?Pourquoi pas d'IA ou de machine learning ?+

Protocol reverse-engineering requires output that is correct, not plausible. Substrat runs a fully deterministic pipeline — same input, same output, every time. Every rule is human-readable, every detection is explainable, no GPU needed, no training data, nothing leaves your machine. LLMs are a bad fit here: they hallucinate grammars and can't explain their reasoning.

Le reverse-engineering de protocoles demande une sortie correcte, pas plausible. Substrat repose sur un pipeline entièrement déterministe — même entrée, même sortie, à chaque fois. Chaque règle est lisible, chaque détection est explicable, pas besoin de GPU, pas de données d'entraînement, rien ne quitte votre machine. Les LLM sont mal placés ici : ils hallucinent les grammaires et ne savent pas justifier leur raisonnement.

What happens when the protocol evolves?Que se passe-t-il quand le protocole évolue ?+

The grammar is re-learned from a fresh pcap — takes seconds. New message types show up as anomalies on the old grammar, which is useful: you know something changed. Incremental learning (update-in-place) is planned for v1.4.

La grammaire est ré-apprise depuis un nouveau pcap — quelques secondes. Les nouveaux types de messages apparaissent comme anomalies sur l'ancienne grammaire, ce qui est utile : vous savez que quelque chose a changé. L'apprentissage incrémental (update-in-place) est prévu pour la v1.4.

Pricing for commercial use?Tarifs pour usage commercial ?+

Early access is free during active development. Commercial licensing will land before v2.0 — per-seat for pentesters/SOC analysts, site license for SCADA/industrial deployments, enterprise SLA available. Contact us for a quote based on your use case.

L'accès anticipé est gratuit pendant le développement actif. La licence commerciale arrivera avant la v2.0 — par utilisateur pour les pentesters/analystes SOC, licence site pour les déploiements SCADA/industriels, SLA entreprise dispo. Contactez-nous pour un devis.

Get started

Commencer

Download the binary. No Python, no dependencies, no install. Just run it.

Téléchargez le binaire. Pas de Python, pas de dépendances, pas d'installation. Lancez-le.

macOS (Apple Silicon)

M1 / M2 / M3 / M4

DownloadTélécharger

Linux (x86_64)

Ubuntu, Debian, Fedora, Arch

DownloadTélécharger

Windows (x86_64)

Windows 10 / 11

DownloadTélécharger
# macOS: remove quarantine flag
$ xattr -d com.apple.quarantine substrat-macos-arm64
$ chmod +x substrat-macos-arm64

# Linux: make executable
$ chmod +x substrat-linux-x86_64

# Windows: just double-click or run from cmd
> substrat-windows-x86_64.exe info

# Reverse-engineer a protocol
$ ./substrat re capture.pcap --wireshark ./dissectors

# Detect anomalies
$ ./substrat anomaly logs.txt

# Fair MDL comparison: SWC vs n-gram vs gzip (new in v1.3)
$ ./substrat diagnose mydata.txt

# Soft readout: ~14% better bpc under noise, same grammar (new in v1.4)
$ ./substrat diagnose mydata.txt --readout=both --fragility