
Un framework di attacco RPC per nodi Blockchain.
.. image:: https://img.shields.io/pypi/v/teatime.svg :target: https://pypi.python.org/pypi/teatime
.. image:: https://img.shields.io/travis/dmuhs/teatime.svg :target: https://travis-ci.com/dmuhs/teatime
.. image:: https://codecov.io/gh/dmuhs/teatime/branch/master/graph/badge.svg?token=RP0WZ6NXUP :target: https://codecov.io/gh/dmuhs/teatime
.. image:: https://readthedocs.org/projects/teatime/badge/?version=latest :target: https://teatime.readthedocs.io/en/latest/?badge=latest :alt: Stato della Documentazione
Teatime è un framework di attacco RPC progettato per facilitare l'individuazione di configurazioni errate nei nodi blockchain. Rileva un'ampia varietà di problemi, dalle fughe di informazioni agli account aperti e alla manipolazione della configurazione.
L'obiettivo è consentire a strumenti di scansione di nodi vulnerabili e minimizzare il rischio di attacchi basati su nodi dovuti a vulnerabilità comuni. Teatime utilizza un'architettura basata su plugin, quindi estendere la libreria con i propri controlli è semplice.
Si noti che questa libreria è ancora un PoC e manca di documentazione. Se ci sono plugin che vorresti vedere, sentiti libero di contattarmi su Twitter!
Teatime funziona su Python 3.6+.
Per iniziare, basta eseguire
.. code-block:: console
$ pip3 install teatime
In alternativa, clona il repository ed esegui
.. code-block:: console
$ pip3 install .
Oppure direttamente tramite :code:setuptools di Python:
.. code-block:: console
$ python3 setup.py install
Per iniziare, istanzia semplicemente una classe :code:Scanner e passa l'IP di destinazione, la porta, il tipo di nodo e una lista di plugin istanziati. Considera il seguente esempio per verificare se un nodo è sincronizzato e in mining:
.. code-block:: python
from teatime.scanner import Scanner
from teatime.plugins.context import NodeType
from teatime.plugins.eth1 import NodeSync, MiningStatus
TARGET_IP = "127.0.0.1"
TARGET_PORT = 8545
INFURA_URL = "Infura API Endpoint"
def get_scanner():
return Scanner(
ip=TARGET_IP,
port=TARGET_PORT,
node_type=NodeType.GETH,
plugins=[
NodeSync(infura_url=INFURA_URL, block_threshold=10),
MiningStatus(should_mine=False)
]
)
if __name__ == '__main__':
scanner = get_scanner()
report = scanner.run()
print(report.to_dict())
Dai un'occhiata alla directory examples per altri piccoli esempi! Teatime è completamente tipizzato, quindi sentiti libero di esplorare le opzioni nel tuo IDE se leggere la documentazione non è la tua scelta preferita. :)
Il futuro di Teatime è incerto, anche se mi piacerebbe aggiungere controlli più ampi che vadano oltre le interfacce RPC, in particolare per tecnologie come:
Se vuoi integrare plugin per chain più piccole e meno significative come Bitcoin o imitazioni di Ethereum, sentiti libero di fare il fork del progetto e integrarle separatamente.