Agent IA autonome de test d'intrusion qui orchestre la reconnaissance multi-agents, l'exploitation, la post-exploitation et le reporting, avec un état d'engagement persistant.
Agent de test d'intrusion IA dans votre terminal.
Architecture multi-agents • Suivi de l'état de l'engagement • 20+ fournisseurs LLM
PentestCode est un agent de test d'intrusion autonome pour votre terminal. Pointez-le vers une cible et il exécute les outils, lit les sorties, met à jour sa vision du réseau et décide de la suite à donner — comme le ferait un opérateur. Un hard fork d'OpenCode (MIT), dépouillé de son orientation édition de code et reconstruit pour la sécurité offensive.
Bêta — il tient la route sur de vrais engagements et des CTF, mais attendez-vous à des aspérités. Ouvrez une issue quand quelque chose casse ; c'est ce qui le rend meilleur.
Une instruction en entrée, une chaîne d'attaque complète en sortie :
you: "pentest 10.10.10.5, goal is domain admin"
| Étape | Ce que fait l'agent |
|---|---|
| Scan | nmap -sS -p- trouve 7 ports ouverts et parse le XML directement dans l'état de l'engagement |
| Identification | Ports 88 + 389 → Contrôleur de domaine. Déploie trois énumérateurs en parallèle (SMB, LDAP, HTTP) |
| Énumération | Session SMB nulle → partage en écriture. LDAP → liste d'utilisateurs. Gobuster → répertoires web |
| Attaque | AS-REP roast → hash craquable → premier identifiant valide |
| Pulvérisation | Cet identifiant pulvérisé sur SMB, WinRM, LDAP et RDP sur chaque hôte connu |
| Exploitation | Pied-à-terre WinRM → l'agent post-exploitation extrait SAM / LSA / DPAPI |
| Résultat | Hash d'admin de domaine en main — chaque étape enregistrée avec sa chaîne de preuves |
Il est méthodique là où les gens deviennent paresseux : il pulvérise chaque identifiant contre chaque service sur chaque hôte, et il n'oublie pas de vérifier les choses. Tout ce qu'il apprend aboutit dans un état structuré que vous pouvez interroger en cours d'exécution avec /status, /vulns ou /creds.
npm install -g pentestcode-ai
# via curl
curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Un binaire unique autonome — pas de Bun, Node ou runtime à installer. Linux et macOS, x64 et arm64.
Épingler la version :
PENTESTCODE_VERSION=0.1.7 curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Répertoire personnalisé :
PENTESTCODE_INSTALL=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Depuis les sources :
bun install
bun run build --single --skip-embed-web-ui
# binary at packages/opencode/dist/pentestcode-<os>-<arch>/bin/pentestcode
pentestcode auth login # connect your LLM provider
pentestcode # interactive session
pentestcode --prompt "scan 10.10.10.0/24 and enumerate all services" # one-shot
Fonctionne avec 20+ fournisseurs via ai-sdk — Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama, et plus encore.
Deux choses distinguent PentestCode d'un prompt de pentester collé dans une fenêtre de chat : une équipe d'agents et une mémoire partagée.
La conception suit le modèle stratège-coordinateur de la recherche HPTSA — une amélioration de 4,3× par rapport à un agent unique :
┌─────────────┐
│ pentest │ strategist / coordinator
│ (lead) │ plans, dispatches, tracks state
└──────┬──────┘
┌───────┬───────┼───────┬───────┐
▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│recon ││scan- ││explo-││iden- ││post- │
│ ││ner ││iter ││tity ││explo │ ... + 7 more
└──────┘└──────┘└──────┘└──────┘└──────┘
L'agent principal (pentest) découpe l'engagement en tâches et répartit des sous-agents spécialisés en parallèle — chacun avec son propre prompt système, ses permissions d'outils et ses connaissances de domaine. 13 agents au total : recon, scanner, enumerator, exploiter, identity (AD/Kerberos), infrastructure (SNMP/IPMI/bases de données), webapp (OWASP Top 10), post-exploit, exploit-dev, critic (vérificateur de faux positifs), reporter, plus des agents cachés pour la compression de contexte et la gestion de session.
Quand le scanner trouve un port, l'énumérateur le voit instantanément — parce que chaque agent lit et écrit dans un seul état d'engagement structuré :
L'état survit à la session : fermez le terminal, revenez demain, et l'agent reprend là où il s'est arrêté. À côté, un findings.md lisible par les humains journalise chaque vulnérabilité, identifiant et gain d'accès avec horodatages — faites un tail -f dessus pour voir l'engagement se dérouler.
18 outils de pentest intégrés en plus de bash. Les outils de parsing sont obligatoires : après avoir lancé nmap, l'agent doit faire passer la sortie par nmap_parse plutôt que de grepper le XML à la main, afin que chaque découverte atteigne l'état de l'engagement.