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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| Substrat | Snort/Suricata | Darktrace | Netzob | ||
|---|---|---|---|---|---|
| Signature-free detection | Détection sans signatures | Yes (grammar-based)Oui (grammaire) | Signature-basedÀ base de signatures | Yes (ML)Oui (ML) | Yes (inference)Oui (inférence) |
| Output format | Format de sortie | Human-readable grammarGrammaire lisible | Rule hit / missRègle touchée / ratée | Anomaly scoreScore d'anomalie | Grammar (partial)Grammaire (partielle) |
| Wireshark dissector export | Export dissecteur Wireshark | Built-inIntégré | NoNon | NoNon | NoNon |
| Built-in fuzz corpus | Corpus de fuzz intégré | YesOui | NoNon | NoNon | YesOui |
| Hardware footprint | Empreinte matérielle | Laptop / RPiLaptop / RPi | Laptop / serverLaptop / serveur | Appliance + GPUAppliance + GPU | Laptop (Python)Laptop (Python) |
| Real-time capture | Capture temps réel | Pcap only (v1.2)Pcap seul (v1.2) | YesOui | YesOui | NoNon |
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.
Commercial licensing coming soon. Contact us for enterprise needs. Licence commerciale à venir. Contactez-nous pour les besoins entreprise.
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 pcapSubstrat is actively developed. Here's where we're headed.
Substrat est en développement actif. Voici ce qui arrive.
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.
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.
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.
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é.
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.
substrat_learn — induce a grammar + bpc— induit une grammaire + bpcsubstrat_compress — compression ratio via learned grammar— ratio de compression via grammaire apprisesubstrat_anomaly — structural + statistical anomalies— anomalies structurelles + statistiquessubstrat_generate — sample valid strings from the grammar— échantillons valides de la grammairesubstrat_re — reverse-engineer pcap text flows— reverse engineering de flux pcap texteThe 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)
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.
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.
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.
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.
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.
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.
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: 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