mini-tor est une implémentation minimaliste du protocole Tor en C++, mise à jour pour fonctionner avec le réseau Tor actuel (2025). Cette bibliothèque permet d'accéder au contenu internet et aux services cachés (.onion) via le réseau Tor. L'objectif est d'obtenir une taille aussi petite que possible (environ 47 Ko, compressé avec kkrunchy environ 20 Ko), ce qui est réalisé en utilisant Microsoft CryptoAPI/CNG au lieu d'intégrer OpenSSL.
Une extension Python est disponible dans le dossier python/. Elle permet d'utiliser mini-tor depuis Python pour accéder aux services cachés Tor. Voir le fichier python/README.md pour plus d'informations.
- Client Tor léger capable de se connecter au réseau Tor actuel
- Support des services cachés (onion services) v2 et v3
- Implémentation du protocole NTOR pour l'établissement de circuits
Accéder au contenu internet via mini-tor :
> mini-tor.exe "https://check.torproject.org/"Accéder au contenu d'un service caché via mini-tor :
> mini-tor.exe "http://vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion/"Il peut également accéder au contenu HTTPS :
> mini-tor.exe "https://check.torproject.org/"
> mini-tor.exe "https://www.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion/"Ajoutez -v, -vv ou -vvv pour plus de verbosité :
> mini-tor.exe -v "http://vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion/"
> mini-tor.exe -vv "https://check.torproject.org/"
> mini-tor.exe -vvv "https://www.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion/"Vous pouvez désactiver la journalisation en commentant #define MINI_LOG_ENABLED dans mini/logger.h.
Cela réduira également considérablement la taille de l'exécutable.
- mini-tor prend en charge les protocoles de poignée de main TAP et NTOR.
- TAP utilise DH standard avec un exposant de 1024 bits.
- NTOR est un type de poignée de main plus récent qui utilise curve25519.
- Vous pouvez contrôler quel type de poignée de main est utilisé par défaut en modifiant
preferred_handshake_typedansmini/tor/common.h
- mini-tor peut utiliser soit CryptoAPI soit l'API CNG plus récente.
- Configurable via
mini/crypto/common.h. - Notez que curve25519 est pris en charge par CNG uniquement sur win10+.
- Une implémentation curve25519-donna est incluse. Vous pouvez l'activer en définissant
MINI_CRYPTO_CURVE25519_NAMESPACEsurextpour l'exécuter sur des systèmes plus anciens.
- Une implémentation curve25519-donna est incluse. Vous pouvez l'activer en définissant
- Notez que
cng::dh<>ne fonctionnera que sur win8.1+, en raison de l'utilisation deBCRYPT_KDF_RAW_SECRETpour récupérer le secret partagé.- Vous pouvez utiliser
capi::dh<>en définissantMINI_CRYPTO_DH_NAMESPACEsurcapi.
- Vous pouvez utiliser
- Tout le reste devrait fonctionner correctement sur win7+ (les versions antérieures ne sont pas encore prises en charge).
- Configurable via
- mini-tor crée des connexions TLS via SCHANNEL (voir
mini/net/ssl_socket.cppetmini/net/detail/ssl_context.cpp). - mini-tor n'utilise pas la CRT ou STL par défaut, tout est implémenté à partir de zéro.
- Une version plus ancienne de mini-tor basée uniquement sur CryptoAPI peut être trouvée dans le tag git ms_crypto_api (non maintenue).
- La version mise à jour (2025) ajoute le support pour Linux via OpenSSL et prend en charge les adresses onion v3.
Un exemple de création d'un serveur HTTP accessible comme service caché Tor est disponible dans le code source.
- Comme indiqué ci-dessus, cette application est une preuve de concept.
- Vous pouvez parfois vous attendre à un comportement bogué.
- Ce n'est définitivement pas un remplacement sécurisé complet pour Tor.
Compilez mini-tor à l'aide de Visual Studio 2017 ou supérieur. Le fichier solution est inclus. Aucune autre dépendance n'est requise.
mkdir build
cd build
cmake ..
makeTout le code de ce dépôt est open-source sous la licence MIT. Voir le fichier LICENSE.txt dans ce dépôt.