Skip to main content

Just deployed a blockchain node? Have some tea.

Project description

https://img.shields.io/pypi/v/teatime.svg https://img.shields.io/travis/dmuhs/teatime.svg https://codecov.io/gh/dmuhs/teatime/branch/master/graph/badge.svg?token=RP0WZ6NXUP Documentation Status Updates

Deployed a node? Have a cup.

Teatime is an RPC attack framework aimed at making it easy to spot misconfigurations in blockchain nodes. It detects a large variety of issues, ranging from information leaks to open accounts, and configuration manipulation.

The goal is to enable tools scanning for vulnerable nodes and minimizing the risk of node-based attacks due to common vulnerabilities. Teatime uses a plugin-based architecture, so extending the library with your own checks is straightforward.

Please note that this library is still a PoC and lacks documentation. If there are plugins you would like to see, feel free to contact me on Twitter!

Installation

Teatime runs on Python 3.6+.

To get started, simply run

$ pip3 install teatime

Alternatively, clone the repository and run

$ pip3 install .

Or directly through Python’s setuptools:

$ python3 setup.py install

Example

To get started, simply instantiate a Scanner class and pass in the target IP, port, node type, and a list of instantiated plugins. Consider the following sample to check whether a node is synced and mining:

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())

Check out the examples directory for more small samples! Teatime is fully typed, so also feel free to explore options in your IDE if reading the documentation is not your preferred choice. :)

Future Development

The future of Teatime is uncertain, even though I would love to add broader checks that go beyond RPC interfaces, specifically for technologies such as:

  • Ethereum 2.0

  • Filecoin

  • IPFS

If you want to integrate plugins for smaller, less meaningful chains such as Bitcoin or Ethereum knock-offs, feel free to fork the project and integrate them separately.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

teatime-0.3.1.tar.gz (46.2 kB view details)

Uploaded Source

Built Distribution

teatime-0.3.1-py2.py3-none-any.whl (53.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file teatime-0.3.1.tar.gz.

File metadata

  • Download URL: teatime-0.3.1.tar.gz
  • Upload date:
  • Size: 46.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for teatime-0.3.1.tar.gz
Algorithm Hash digest
SHA256 67f2aeec80ce2d9850eab8fa402835c940443fdfc052582fdbd7f0ddf75c6913
MD5 3672c4a11aac41df3591a5d236a77a13
BLAKE2b-256 d8b870233bbdb27b7b9489b460956688d3af1994d318b9902506e8421b17f1fe

See more details on using hashes here.

File details

Details for the file teatime-0.3.1-py2.py3-none-any.whl.

File metadata

  • Download URL: teatime-0.3.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 53.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for teatime-0.3.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 77b92d28fe32d421ab0bef9d3cf153cfbeb4a82888c0e43446e92ea97e3d4beb
MD5 20077f0b6ff6248005de7940d26c6a7e
BLAKE2b-256 bac579dfca269bd9636645077ba38c7d450ebdf4fb1c0b8872fefa22ce0df545

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page