
블록체인 노드를 위한 RPC 공격 프레임워크.
.. 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 짝퉁과 같이 덜 중요하고 의미 없는 체인용 플러그인을 통합하려면, 프로젝트를 포크하여 별도로 통합하셔도 됩니다.