예제 #1
0
def leveldb_search(config: MythrilConfig, args: argparse.Namespace):
    if args.search or args.contract_hash_to_address:
        leveldb_searcher = MythrilLevelDB(config.eth_db)
        if args.search:
            # Database search ops
            leveldb_searcher.search_db(args.search)

        else:
            # search corresponding address
            try:
                leveldb_searcher.contract_hash_to_address(args.contract_hash_to_address)
            except AddressNotFoundError:
                print("Address not found.")

        sys.exit()
예제 #2
0
파일: cli.py 프로젝트: yanliu18/mythril
def leveldb_search(config: MythrilConfig, args: Namespace):
    """
    Handle leveldb search
    :param config:
    :param args:
    :return:
    """
    if args.command in ("hash-to-address", "leveldb-search"):
        leveldb_searcher = MythrilLevelDB(config.eth_db)
        if args.command == "leveldb-search":
            # Database search ops
            leveldb_searcher.search_db(args.search)

        else:
            # search corresponding address
            try:
                leveldb_searcher.contract_hash_to_address(args.hash)
            except AddressNotFoundError:
                print("Address not found.")

        sys.exit()
def test_leveldb_code_search(mock_leveldb, f1, f2, f3):
    config = MythrilConfig()
    config.set_api_leveldb("some path")
    leveldb_search = MythrilLevelDB(leveldb=config.eth_db)
    leveldb_search.search_db("code#PUSH#")
    mock_leveldb.assert_called()