Penelope Shell Handler
Penelope est un gestionnaire de shells moderne pour les testeurs d'intrusion et les joueurs de CTF. Il offre une alternative plus performante aux simples écouteurs netcat, en ajoutant des mises à niveau automatiques vers PTY, la gestion de sessions, la journalisation, les transferts de fichiers et des modules d'aide.
Penelope fonctionne sur les systèmes de type Unix, y compris Linux, macOS et FreeBSD, et nécessite Python 3.6+.
Penelope est disponible dans Kali Linux :
sudo apt update
sudo apt install penelope
Penelope est implémenté entièrement avec la bibliothèque standard de Python, ce qui permet de l'exécuter comme un script autonome sans dépendances externes :
wget -q https://raw.githubusercontent.com/brightio/penelope/refs/heads/main/penelope.py && python3 penelope.py
Pour installer la dernière version amont directement depuis GitHub :
pipx install git+https://github.com/brightio/penelope
Pour un chemin de versionnement et plus stable, Penelope est également disponible sur PyPI :
pipx install penelope-shell-handler
| Fonctionnalité | Cible de type Unix | Cible Windows |
|---|---|---|
| Mise à niveau automatique du shell | PTY | readline(*) |
| Redimensionnement du terminal en temps réel | ✅ | ❌ |
| Journalisation de l'activité du shell | ✅ | ✅ |
| Téléchargement de fichiers/dossiers distants | ✅ | ✅ |
| Téléversement de fichiers/dossiers locaux/HTTP | ✅ | ✅ |
| Exécution de script local/HTTP en mémoire avec téléchargement de sortie en temps réel | ✅ | ❌ |
| Redirection de port local | ✅ | ❌ |
| Ouverture de shells sur plusieurs onglets et/ou hôtes | ✅ | ❌ |
| Maintien automatique de N shells actifs par hôte (ré-ouverture à la mort) | ✅ | ❌ |
(*) Peut être manuellement mis à niveau vers PTY avec la commande upgrade
⚠️ Le support Windows est expérimental et en développement actif.
set DisablePayloadHandler True--mcp (HTTP local, authentifié par jeton), pilotant les mêmes shells à vos côtés

penelope # Écoute des shells inversés sur 0.0.0.0:4444
penelope -p 5555 # Écoute des shells inversés sur 0.0.0.0:5555
penelope -p 4444,5555 # Écoute des shells inversés sur 0.0.0.0:4444 et 0.0.0.0:5555
penelope -i eth0 -p 5555 # Écoute des shells inversés sur eth0:5555
penelope -a # Écoute des shells inversés sur 0.0.0.0:4444 et affiche des exemples de payloads de shell inversé
penelope -c target -p 3333 # Connexion à un shell bind sur target:3333
penelope ssh user@target # Obtient un shell inversé depuis target sur le port local 4444
penelope -p 5555 ssh user@target # Obtient un shell inversé depuis target sur le port local 5555
penelope -i eth0 -p 5555 -- ssh -l user -p 2222 target # Obtient un shell inversé depuis target sur eth0, port local 5555 (utiliser -- si ssh nécessite des options)
penelope -s <Fichier/Dossier> # Partage un fichier ou dossier via HTTP

-s)Penelope peut également être utilisé comme un serveur de fichiers HTTP rapide.
penelope -s file.txt # Servir un seul fichier sur 0.0.0.0:8000
penelope -s /path/to/dir # Servir tout un dossier
penelope -s a.sh b.elf notes.txt # Servir plusieurs éléments à la fois
penelope -s . -p 80 # Servir le répertoire courant sur le port 80
penelope -s secret.txt -prefix xk9 # Cacher derrière un préfixe d'URL : /xk9/secret.txt
penelope -s -u # Mode téléversement : accepter PUT/POST dans le répertoire de travail
penelope -s -u -ud /tmp/loot # Mode téléversement, stocker les fichiers reçus dans /tmp/loot
Au démarrage, Penelope affiche un lien prêt à l'emploi par interface (et un indice de téléversement
quand -u est défini), vous pouvez donc copier-coller directement dans le shell cible.
Comme le montre la vidéo ci-dessous, en quelques secondes seulement, nous pouvons :
https://github.com/brightio/penelope/assets/65655412/7295da32-28e2-4c92-971f-09423eeff178
Quelques notes :
F12 pour détacher le shell PTY et aller au Menu Principal. Si la mise à niveau n'a pas été possible et que vous avez un shell basique, vous pouvez le détacher avec Ctrl+C. Cela évite également la suppression accidentelle du shell.interact 1, vous pouvez simplement taper i 1.