
.. 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 は、ブロックチェーンノードの設定ミスを簡単に発見できるように設計された RPC 攻撃フレームワークです。情報漏洩からオープンアカウント、設定の改ざんに至るまで、幅広い問題を検出します。
このツールの目標は、脆弱なノードをスキャンするためのツールを有効にし、一般的な脆弱性によるノードベースの攻撃のリスクを最小限に抑えることです。Teatime はプラグインベースのアーキテクチャを採用しているため、独自のチェックをライブラリに追加するのは簡単です。
このライブラリはまだ PoC であり、ドキュメントが不足していることに注意してください。追加してほしいプラグインがあれば、Twitter でお気軽にご連絡ください!
Teatime は Python 3.6+ で動作します。
始めるには、以下のコマンドを実行するだけです。
.. code-block:: console
$ pip3 install teatime
または、リポジトリをクローンして実行します。
.. code-block:: console
$ pip3 install .
あるいは、Python の :code:setuptools を使って直接インストールします。
.. code-block:: console
$ python3 setup.py install
始めるには、:code:Scanner クラスをインスタンス化し、対象の IP、ポート、ノードタイプ、インスタンス化されたプラグインのリストを渡します。次のサンプルは、ノードが同期されマイニング中かを確認するものです。
.. 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())
その他の小さなサンプルについては、examples ディレクトリを確認してください!Teatime は完全に型付けされているので、ドキュメントを読むよりも IDE でオプションを探索するのも自由です。:)
Teatime の将来は不透明ですが、RPC インターフェースを超えた、特に以下のようなテクノロジーに対するより広範なチェックを追加したいと考えています。
Bitcoin や Ethereum のコピーといった、より小さく意味の薄いチェーン向けのプラグインを統合したい場合は、プロジェクトをフォークして個別に統合してください。