Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pytm — Un framework Pythonic pour la modélisation des menaces | Kitploit
Outils/GitHubGitHub/owasp/pytm
Analyse des VulnérabilitésAnalyse de CodeDevSecOpsApprentissage et Éducation
GitHubowasp/pytm

pytm

Un framework Pythonic pour la modélisation des menaces

Voir le dépôt
1.2k22410il y a 1 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

build+test OpenSSF Best Practices

pytm : un framework Pythonic pour la modélisation des menaces

pytm logo

Introduction

La modélisation traditionnelle des menaces arrive trop souvent en retard, ou parfois pas du tout. De plus, la création manuelle de flux de données et de rapports peut prendre énormément de temps. L'objectif de pytm est de déplacer la modélisation des menaces vers la gauche, rendant la modélisation des menaces plus automatisée et axée sur les développeurs.

Fonctionnalités

En fonction de vos entrées et de la définition de la conception architecturale, pytm peut générer automatiquement les éléments suivants :

  • Diagramme de flux de données (DFD)
  • Diagramme de séquence
  • Menaces pertinentes pour votre système

Prérequis

  • Linux/MacOS
  • Python 3.11+
  • Paquet Graphviz
  • Java (OpenJDK 10 ou 11)
  • plantuml.jar

Pour commencer

tm.py est un exemple de modèle. Vous pouvez l'exécuter pour générer le rapport et les fichiers d'images de diagramme auxquels il fait référence :``` mkdir -p tm ./tm.py --report docs/basic_template.md | pandoc -f markdown -t html > tm/report.html ./tm.py --dfd | dot -Tpng -o tm/dfd.png ./tm.py --seq | java -Djava.awt.headless=true -jar $PLANTUML_PATH -tpng -pipe > tm/seq.png

Il existe aussi un exemple de `Makefile` qui regroupe tout cela en cibles faciles à partager pour plusieurs modèles. Si vous avez [GNU make](https://www.gnu.org/software/make/) installé (disponible par défaut sur les distributions Linux mais pas sur OSX), exécutez simplement :```
make MODEL=the_name_of_your_model_minus_.py

Vous devriez soit avoir plantuml.jar dans le même répertoire que votre modèle, soit définir PLANTUML_PATH.

Pour éviter d'installer toutes les dépendances, comme pandoc ou Java, le script peut être exécuté dans un conteneur :```

do this only once

export USE_DOCKER=true make image

call this after every change in your model

make

### Pour commencer - Variante Devbox

Pour simplifier l'utilisation de `pytm`, les dépendances hôtes peuvent être complètement isolées à l'aide de [`Devbox`](https://github.com/jetify-com/devbox). C'est généralement une alternative plus légère et plus pratique que l'approche par conteneur OCI.

- Installez Devbox sur Linux/MacOS : `curl -fsSL https://get.jetify.com/devbox | bash`
- Installez Devbox sur [Windows/WSL](https://www.jetify.com/docs/devbox/installing-devbox/index#installing-wsl2)
- Mettez à jour vers la dernière version de devbox : `devbox version update`
- Définissez votre jeton d'accès GitHub dans le fichier `~/.config/nix/nix.conf` : `access-tokens = github.com=YOUR_TOKEN_HERE`
- Créez un nouvel environnement shell isolé qui inclut tous les outils et paquets spécifiés dans le fichier `devbox.json` du projet : `devbox shell`
- Affichez le chemin complet de l'exécutable Python qui sera utilisé lorsque vous tapez simplement `python` dans votre terminal à l'aide de la commande which python. La sortie doit être le chemin suivant : `.devbox/nix/profile/default/bin/python`
- Testez en exécutant la commande suivante, qui doit générer un DFD sous forme de fichier PNG nommé `sample.png` :  `./tm.py --dfd | dot -Tpng -o sample.png`
- Quittez l'environnement shell Devbox : `exit`

## Utilisation

Tous les arguments disponibles :```text
usage: tm.py [-h] [--debug] [--dfd] [--report REPORT] [--exclude EXCLUDE]
             [--seq] [--list] [--colormap] [--describe DESCRIBE]
             [--list-elements] [--json JSON] [--levels LEVELS [LEVELS ...]]
             [--stale_days STALE_DAYS]

options:
  -h, --help            show this help message and exit
  --debug               print debug messages
  --dfd                 output DFD
  --report REPORT       output report using the named template file (sample
                        template file is under docs/template.md)
  --exclude EXCLUDE     specify threat IDs to be ignored
  --seq                 output sequential diagram
  --list                list all available threats
  --colormap            color the risk in the diagram
  --describe DESCRIBE   describe the properties available for a given element
  --list-elements       list all elements which can be part of a threat model
  --json JSON           output a JSON file
  --levels LEVELS [LEVELS ...]
                        Select levels to be drawn in the threat model (int
                        separated by comma).
  --stale_days STALE_DAYS
                        checks if the delta between the TM script and the code
                        described by it is bigger than the specified value in
                        days

L'argument stale_days tente de déterminer l'écart en jours entre le script du modèle (que vous écrivez) et le code qui implémente le système modélisé. Idéalement, ils devraient être assez proches dans la plupart des cas d'un système activement développé. Vous pouvez exécuter cette vérification périodiquement pour mesurer le pouls de votre projet et la « fraîcheur » de votre modèle de menace.

Les éléments actuellement disponibles sont : TM, Element, Server, ExternalEntity, Datastore, Actor, Process, SetOfProcesses, Dataflow, Boundary, Lambda, LLM et Agent.

Télécharger l’outil