pcaptriage
Triage automatique de captures reseau, construit au-dessus de Zeek.
Wireshark est manuel : tu ouvres un pcap et tu cherches toi-meme. pcaptriage fait l'inverse. Il laisse Zeek parser les protocoles, puis il applique une couche de triage : il detecte des comportements suspects, les mappe sur MITRE ATT&CK, et sort un rapport HTML priorise plus un JSON automatisable. Pensé pour traiter un pcap (ou un dossier entier) en une commande et rendre un verdict lisible, pas pour remplacer le decodeur de Wireshark.
Exemple de rapport : un recit d'attaque (les hotes qui traversent plusieurs phases de la kill chain) au-dessus des findings priorises et mappes MITRE ATT&CK.
Ce qui le distingue de Zeek / Suricata
Zeek et Suricata produisent des evenements. pcaptriage ajoute la couche qu'ils ne font pas : il correle les findings par hote et les ordonne le long d'une kill chain simplifiee (Reconnaissance -> Credential Access -> C2 -> Exfiltration). Un hote qui apparait dans plusieurs phases est signale comme chaine de compromission probable. C'est le passage de "voici des evenements" a "voici l'histoire".
Ce qu'il detecte
| Detection | Signal | MITRE |
|---|---|---|
| Credentials en clair | FTP/HTTP basic auth, services non chiffres | T1552, T1040 |
| Scan de ports / hotes | une source touche beaucoup de ports/hotes, connexions non abouties | T1046 |
| DNS tunneling / exfiltration | fort volume + noms longs/haute entropie vers un domaine | T1071.004, T1048 |
| Beaconing / C2 | rappels a intervalle quasi constant vers une meme destination | T1071, T1095 |
| Certificats TLS suspects | certificats auto-signes, expires ou non valides | T1573 |
| Poisoning LLMNR/NBT-NS/mDNS | un hote repond aux requetes de resolution de noms de plusieurs victimes (style Responder) | T1557.001 |
Prerequis
- Python 3.9+ (teste sur 3.14). Aucune dependance pip, stdlib uniquement.
- Zeek, au choix :
- local :
zeekdans le PATH ; - Docker (recommande sur Kali, ou le paquet .deb casse la libc) :
docker pull zeek/zeek:lts
- local :
Installation
# depuis PyPI (recommande)
pip install pcaptriage
# ou, pour une commande systeme isolee
pipx install pcaptriage
# en developpement, depuis une copie locale
pip install -e .
Une fois installe, la commande pcaptriage est disponible. Sans installation,
tout marche aussi via python3 -m pcaptriage.
Usage
# un seul pcap, Zeek via Docker
pcaptriage capture.pcap --docker
# un dossier entier de captures
python3 -m pcaptriage ./captures/ --docker -o resultats/
# Zeek installe en local
python3 -m pcaptriage capture.pcap
Sortie, par capture, dans le dossier -o (defaut pcaptriage-report/) :
pcaptriage-report/
<nom-capture>/
report.html <- rapport lisible (clair/sombre), findings prioritises
findings.json <- meme contenu, automatisable (injectable dans un SIEM)
zeek-logs/ <- logs Zeek bruts (conn/dns/http/ssl/...)
Architecture
pcap --> Zeek (parsing) --> *.log JSON --> loader --> detections --> findings
| |
MITRE map report HTML + JSON
zeek_runner.pylance Zeek (local ou Docker) et produit les logs JSON.loader.pycharge les logs en memoire.detections/: une detection = une fonction decoree@registerqui prend les logs et renvoie desFinding. Ajouter une detection = ajouter un fichier.mitre.py: table technique -> (nom, lien).report.py: resume de la capture + rendu HTML autonome.cli.py: orchestration, mode fichier ou dossier.
Feuille de route
- ARP spoofing / MITM, LLMNR/NBT-NS poisoning
- Extraction de fichiers (files.log) et de credentials additionnels
- Moteur de regles externes (YAML/Sigma-like) pour etendre sans coder
- Graphe de communication dans le rapport
- Sortie directe vers Elasticsearch (lien avec Mini-SOC)
Note
Outil d'analyse defensive / forensic sur des captures que tu es autorise a analyser. Les logs peuvent contenir des donnees sensibles (identifiants, hotes) : traite les sorties en consequence.
Metadata
Release files for pcaptriage 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pcaptriage-0.2.0.tar.gz | 20.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pcaptriage-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.3 kB
Release files / pcaptriage-0.2.0.tar.gz
| Download URL | pcaptriage-0.2.0.tar.gz |
|---|---|
| Size | 20.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9010c1f6536c14fd5563301749719b06a6be4e48ad73de7e2275565686827f13
|
|
BLAKE2b-256 checksum How to use checksums |
d613c79a0540525f35eeae3089595f4a4a5405faccd42ace585f3a68d29f995a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / pcaptriage-0.2.0-py3-none-any.whl
| Download URL | pcaptriage-0.2.0-py3-none-any.whl |
|---|---|
| Size | 23.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
032e8b6347971beb99be87a836047e3de27f0e90f2c6a6cef1645a4ce32aa626
|
|
BLAKE2b-256 checksum How to use checksums |
7200e122ac5b7d0af781d9f42823c32ea33252545d99496f47e005b4e7905bc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency log