Skip to content
KitploitKITPLOIT
OutilsBlog
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
zerobox — Sandboxing léger et multiplateforme de processus, propulsé par le runtime d'OpenAI Codex. Isolez toute commande avec des contrôles de fichier, réseau et d'identifiants. | Kitploit
Outils/GitHubGitHub/afshinm/zerobox
Sécurité des ConteneursAnalyse Dynamique (Sandboxing)DevSecOpsSécurité de l'IA
GitHubafshinm/zerobox

zerobox

Sandboxing léger et multiplateforme de processus, propulsé par le runtime d'OpenAI Codex. Isolez toute commande avec des contrôles de fichier, réseau et d'identifiants.

Voir le dépôt
69940il y a 3 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

SDK Python de Zerobox

Zerobox PyPI version Zerobox license

SDK Python pour zerobox. Permet de mettre en sandbox n'importe quelle commande avec des contrôles sur les fichiers, le réseau et les identifiants.

root@kitploit:~
pip install zerobox

L'installation de la wheel dépose la CLI zerobox dans le bin/ de votre environnement et expose un SDK Python.

Pour l'utilisation de la CLI, les concepts de secrets, la référence complète des flags, les chiffres de performance et la prise en charge des plateformes, consultez le README principal.

Démarrage rapide

root@kitploit:~
from zerobox import Sandbox

sandbox = Sandbox.create({"allow_write": ["/tmp"]})
print(sandbox.sh("echo hello").text())

Commandes

Trois façons d'exécuter une commande. Chacune renvoie un ShellCommand que vous terminez avec .text(), .json() ou .output().

Shell

root@kitploit:~
name = "world"
sandbox.sh(f"echo hello {name}").text()

Python en ligne

root@kitploit:~
data = sandbox.py("import json; print(json.dumps({'sum': 1 + 2}))").json()

Commande explicite + arguments

root@kitploit:~
sandbox.exec("python3", ["-c", "print('hi')"]).text()

Résultats

root@kitploit:~
data = sandbox.sh("cat data.json").json()
result = sandbox.sh("exit 42").output()
# CommandOutput(code=42, stdout='', stderr='')

API asynchrone

Utilisez AsyncSandbox dans les applications asynchrones afin que l'attente du sous-processus sandboxé ne bloque pas la boucle d'événements. La forme des commandes est la même que pour Sandbox, mais la création et les terminateurs sont utilisés avec await.

root@kitploit:~
from zerobox import AsyncSandbox

sandbox = await AsyncSandbox.create({"allow_write": ["/tmp"]})

text = await sandbox.sh("echo hello").text()
data = await sandbox.sh("printf '{\"ok\": true}'").json()
result = await sandbox.exec("python3", ["-c", "print('hi')"]).output()

Les commandes asynchrones acceptent la même option timeout :

root@kitploit:~
import subprocess

try:
    await sandbox.sh("sleep 60").text(timeout=1.0)
except subprocess.TimeoutExpired:
    print("cancelled")

Gestion des erreurs

Une sortie non nulle lève SandboxCommandError :

root@kitploit:~
from zerobox import Sandbox, SandboxCommandError

sandbox = Sandbox.create()
try:
    sandbox.sh("exit 1").text()
except SandboxCommandError as e:
    print(e.code, e.stderr)

Secrets

Transmettez des clés API que le processus sandboxé ne voit jamais. Le proxy ne substitue la valeur réelle que pour les hôtes approuvés.

root@kitploit:~
import os
from zerobox import Sandbox

sandbox = Sandbox.create({
    "secrets": {
        "OPENAI_API_KEY": {
            "value": os.environ["OPENAI_API_KEY"],
            "hosts": ["api.openai.com"],
        },
        "GITHUB_TOKEN": {
            "value": os.environ["GITHUB_TOKEN"],
            "hosts": ["api.github.com"],
        },
    },
})

sandbox.sh('curl -H "Authorization: Bearer $OPENAI_API_KEY" https://api.openai.com/v1/models').text()

Consultez le README principal pour savoir comment fonctionne la substitution des placeholders.

Snapshots

Enregistrez les modifications du système de fichiers et annulez-les automatiquement :

root@kitploit:~
sandbox = Sandbox.create({
    "allow_write": ["."],
    "restore": True,
})
sandbox.sh("npm install").text()

Enregistrez sans annuler :

root@kitploit:~
sandbox = Sandbox.create({
    "allow_write": ["."],
    "snapshot": True,
    "snapshot_exclude": ["node_modules"],
})
sandbox.sh("npm install").text()

Annulation

Passez un timeout (en secondes) à n'importe quel terminateur :

root@kitploit:~
import subprocess
try:
    sandbox.sh("sleep 60").text(timeout=1.0)
except subprocess.TimeoutExpired:
    print("cancelled")

Variables d'environnement

root@kitploit:~
sandbox = Sandbox.create({
    "env": {"NODE_ENV": "production"},
    "allow_env": ["PATH", "HOME"],
    "deny_env": ["AWS_SECRET_ACCESS_KEY"],
})

Consultez le README principal pour savoir ce qui est hérité par défaut et les équivalents CLI.

Options

Sandbox.create(options) accepte une dataclass SandboxOptions ou un simple dict. Tous les champs sont facultatifs.

Les clés de dict inconnues (par exemple allowWrite au lieu de allow_write) lèvent une TypeError au moment de la construction.

Mises en garde

Sandbox.py(code) exécute le python3 présent sur le PATH dans le sandbox. Si votre interpréteur actif se trouve en dehors des racines lisibles du sandbox (par exemple les Pythons gérés par uv sous ~/.local/share/uv/), utilisez plutôt :

root@kitploit:~
import sys
sandbox = Sandbox.create({"allow_read": [sys.prefix]})
sandbox.exec(sys.executable, ["-c", "print('hi')"]).text()

Autres SDKs

  • TypeScript SDK (npm: zerobox)
  • Rust SDK (crates.io: zerobox)

Licence

Apache-2.0

Télécharger l’outil
MéthodeEn cas de succèsEn cas de sortie non nulle
.text()Renvoie stdout sous forme de chaîneLève SandboxCommandError
.json()Analyse stdout comme JSONLève SandboxCommandError
.output()Renvoie CommandOutput(code, stdout, stderr)Renvoie la même structure, ne lève jamais
ChampTypeDescription
profilestr | list[str]Profil(s) nommé(s). Une liste fusionne de gauche à droite. Valeur par défaut : "workspace".
allow_read / deny_readlist[str]Chemins lisibles / bloqués.
allow_write / deny_writelist[str]Chemins inscriptibles / bloqués.
allow_netbool | list[str]True autorise tout. Une liste restreint l'accès à ces domaines.
deny_netlist[str]Domaines bloqués.
allow_allboolAccès complet au système de fichiers et au réseau.
no_sandboxboolDésactive entièrement le sandbox.
strict_sandboxboolÉchoue au lieu de recourir à une isolation plus faible.
cwdstrRépertoire de travail.
envdict[str, str]Variables d'environnement explicites.
allow_envbool | list[str]Hérite des variables d'environnement du parent.
deny_envlist[str]Variables d'environnement bloquées.
snapshotboolEnregistre les modifications du système de fichiers.
restoreboolEnregistre et annule après la sortie. Implique snapshot.
snapshot_paths / snapshot_excludelist[str]Chemins suivis / motifs exclus.
secretsdict[str, SecretConfig]Secrets avec des portées par hôte.
debugboolAffiche la configuration du sandbox sur stderr.