
Ein RPC-Angriffsframework für Blockchain-Knoten.
.. 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: Documentation Status
Teatime ist ein RPC-Angriffs-Framework, das darauf abzielt, Fehlkonfigurationen in Blockchain-Knoten leicht erkennbar zu machen. Es erkennt eine Vielzahl von Problemen, von Informationslecks über offene Konten bis hin zur Manipulation von Konfigurationen.
Das Ziel ist es, Tools zu ermöglichen, die nach anfälligen Knoten suchen und das Risiko von knotenbasierten Angriffen aufgrund häufiger Schwachstellen minimieren. Teatime verwendet eine plugin-basierte Architektur, sodass die Erweiterung der Bibliothek um eigene Prüfungen unkompliziert ist.
Bitte beachten Sie, dass diese Bibliothek noch ein Proof-of-Concept ist und keine Dokumentation enthält. Falls Sie bestimmte Plugins vermissen, können Sie mich gerne auf Twitter kontaktieren!
Teatime läuft unter Python 3.6+.
Um loszulegen, führen Sie einfach aus
.. code-block:: console
$ pip3 install teatime
Alternativ können Sie das Repository klonen und ausführen
.. code-block:: console
$ pip3 install .
Oder direkt über Pythons :code:setuptools:
.. code-block:: console
$ python3 setup.py install
Um loszulegen, instanziieren Sie einfach eine :code:Scanner-Klasse und übergeben Sie die Ziel-IP, den Port, den Knotentyp und eine Liste instanziierter Plugins. Betrachten Sie das folgende Beispiel, um zu prüfen, ob ein Knoten synchronisiert ist und schürft:
.. 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())
Schauen Sie sich das Verzeichnis „examples“ für weitere kleine Beispiele an! Teatime ist vollständig typisiert, also können Sie auch gerne die Optionen in Ihrer IDE erkunden, falls das Lesen der Dokumentation nicht Ihre bevorzugte Methode ist. :)
Die Zukunft von Teatime ist ungewiss, auch wenn ich gerne breitere Prüfungen hinzufügen würde, die über RPC-Schnittstellen hinausgehen, insbesondere für Technologien wie:
Wenn Sie Plugins für kleinere, weniger bedeutende Chains wie Bitcoin oder Ethereum-Kopien integrieren möchten, können Sie das Projekt gerne forken und die Integration separat vornehmen.