ืคื™ืฉื•ื˜ ื”-Check Point API ืขื Python SDK

ืคื™ืฉื•ื˜ ื”-Check Point API ืขื Python SDKืžืœื•ื ื”ืขื•ืฆืžื” ืฉืœ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžืžืฉืงื™ API ืžืชื’ืœื” ื›ืืฉืจ ืžืฉืชืžืฉื™ื ื‘ื” ื™ื—ื“ ืขื ืงื•ื“ ืชื•ื›ื ื™ืช, ื›ืืฉืจ ืžืชืขื•ืจืจื•ืช ื”ื–ื“ืžื ื•ื™ื•ืช ืœื™ืฆื™ืจืช ื‘ืงืฉื•ืช API ื•ื›ืœื™ื ืœื ื™ืชื•ื— ืชื’ื•ื‘ื•ืช API ื‘ืื•ืคืŸ ื“ื™ื ืžื™. ืขื ื–ืืช, ื”ื™ื ืขื“ื™ื™ืŸ ื ื•ืชืจื” ืžืขื˜ื” ืžื“ื™. ืขืจื›ืช ืคื™ืชื•ื— ืชื•ื›ื ื” ืฉืœ ืคื™ื™ืชื•ืŸ (ืœื”ืœืŸ: ืขืจื›ืช ืคื™ืชื•ื— ืชื•ื›ื ื” ืœืคื™ื™ืชื•ืŸ) ืขื‘ื•ืจ ืžืžืฉืง API ืœื ื™ื”ื•ืœ ื ืงื•ื“ื•ืช ื‘ื“ื™ืงื”, ืืš ืœืฉื•ื•ื. ื–ื” ืžืงืœ ืžืื•ื“ ืขืœ ื”ื—ื™ื™ื ืขื‘ื•ืจ ืžืคืชื—ื™ื ื•ื—ื•ื‘ื‘ื™ ืื•ื˜ื•ืžืฆื™ื”. ืคื™ื™ืชื•ืŸ ืฆื‘ืจื” ืคื•ืคื•ืœืจื™ื•ืช ืขืฆื•ืžื” ืœืื—ืจื•ื ื” ื•ื”ื—ืœื˜ืชื™ ืœืžืœื ืืช ื”ื—ืกืจ ื•ืœืกืงื•ืจ ืืช ื”ืชื›ื•ื ื•ืช ื”ืขื™ืงืจื™ื•ืช ืขืจื›ืช ืคื™ืชื•ื— Python ืฉืœ Check Point APIืžืืžืจ ื–ื” ืžืฉืžืฉ ื›ื”ืฉืœืžื” ืžืฆื•ื™ื ืช ืœืžืืžืจ ืื—ืจ ืขืœ ื”ืื‘ืจ API ืฉืœ Check Point R80.10. ื ื™ื”ื•ืœ ื‘ืืžืฆืขื•ืช CLI, ืกืงืจื™ืคื˜ื™ื ื•ืขื•ื“ื ื‘ื—ืŸ ื›ื™ืฆื“ ืœื›ืชื•ื‘ ืกืงืจื™ืคื˜ื™ื ื‘ืืžืฆืขื•ืช Python SDK ื•ื ืชืžืงื“ ื‘ื™ืชืจ ืคื™ืจื•ื˜ ื‘ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื—ื“ืฉื” ืฉืœ Management API ื‘ื’ืจืกื” 1.6 (ื ืชืžื›ืช ืžืื– R80.40). ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ืžืืžืจ, ืชื–ื“ืงืง ืœื™ื“ืข ื‘ืกื™ืกื™ ื‘ืขื‘ื•ื“ื” ืขื API ื•-Python.

ืฆ'ืง ืคื•ื™ื ื˜ ืžืคืชื—ืช ื‘ืื•ืคืŸ ืคืขื™ืœ ืžืžืฉืงื™ API ื•ื›ืจื’ืข ืฉื•ื—ืจืจื• ื”ื™ื™ืฉื•ืžื™ื ื”ื‘ืื™ื:

ืขืจื›ืช ืคื™ืชื•ื— ื”ืชื•ื›ื ื” ืฉืœ Python ืชื•ืžื›ืช ื›ืจื’ืข ืจืง ื‘ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžืžืฉืง ื”-API ืœื ื™ื”ื•ืœ ื•- ืžืžืฉืง API ืฉืœ ื’ืื™ื”ื‘ืžื•ื“ื•ืœ ื–ื” ื ืกืงื•ืจ ืืช ื”ืžื—ืœืงื•ืช, ื”ืžืชื•ื“ื•ืช ื•ื”ืžืฉืชื ื™ื ื”ื—ืฉื•ื‘ื™ื ื‘ื™ื•ืชืจ.

ืคื™ืฉื•ื˜ ื”-Check Point API ืขื Python SDK

ื”ืชืงื ืช ื”ืžื•ื“ื•ืœ

ะœะพะดัƒะปัŒ ืกื™-ืคื™-ืคื™ ืžืชืงื™ืŸ ื‘ืžื”ื™ืจื•ืช ื•ื‘ืงืœื•ืช ืž ืžืื’ืจ ื”ื’ื™ื˜ื”ืื‘ ื”ืจืฉืžื™ ืฉืœ ืฆ'ืง ืคื•ื™ื ื˜ ื‘ืืžืฆืขื•ืช ืคึฐึผืขึดื™ืื”ื•ืจืื•ืช ื”ืชืงื ื” ืžืคื•ืจื˜ื•ืช ื–ืžื™ื ื•ืช ื‘ README.mdืžื•ื“ื•ืœ ื–ื” ืžื•ืชืื ืœืขื‘ื•ื“ื” ืขื ื’ืจืกืื•ืช Python 2.7 ื•-3.7. ื‘ืžืืžืจ ื–ื”, ื™ื™ื ืชื ื• ื“ื•ื’ืžืื•ืช ื‘ืืžืฆืขื•ืช Python 3.7. ืขื ื–ืืช, ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืืช Python SDK ื™ืฉื™ืจื•ืช ืžืฉืจืช ื”ื ื™ื”ื•ืœ ืฉืœ Check Point (Smart Management), ืืš ืจืง Python 2.7 ื ืชืžืš ืขืœื™ื”ื, ืœื›ืŸ ื”ืงื•ื“ ืขื‘ื•ืจ ื’ืจืกื” 2.7 ื™ื™ื ืชืŸ ื‘ื—ืœืง ื”ืื—ืจื•ืŸ. ืžื™ื“ ืœืื—ืจ ื”ืชืงื ืช ื”ืžื•ื“ื•ืœ, ืื ื™ ืžืžืœื™ืฅ ืœืขื™ื™ืŸ ื‘ื“ื•ื’ืžืื•ืช ื‘ืชื™ืงื™ื•ืช. examples_python2 ะธ examples_python3.

ืชื—ื™ืœืช ื”ืขื‘ื•ื“ื”

ื›ื“ื™ ืฉื ื•ื›ืœ ืœืขื‘ื•ื“ ืขื ืจื›ื™ื‘ื™ ืžื•ื“ื•ืœ cpapi, ืขืœื™ื ื• ืœื™ื™ื‘ื ืื•ืชื• ืžื”ืžื•ื“ื•ืœ ืกื™-ืคื™-ืคื™ ืœืคื—ื•ืช ืฉื ื™ ืงื•ืจืกื™ื ื—ื•ื‘ื”:

ืœืงื•ื— API ะธ APIClientArgs

from cpapi import APIClient, APIClientArgs

ื‘ื›ื™ืชื” APIClientArgs ืื—ืจืื™ ืขืœ ืคืจืžื˜ืจื™ ื”ื—ื™ื‘ื•ืจ ืœืฉืจืช ื”-API ื•ืขืœ ื”ืžื—ืœืงื” ืœืงื•ื— API ืื—ืจืื™ ืขืœ ื”ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”-API.

ืื ื• ืžื’ื“ื™ืจื™ื ืคืจืžื˜ืจื™ ื—ื™ื‘ื•ืจ

ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืคืจืžื˜ืจื™ื ืฉื•ื ื™ื ืฉืœ ื—ื™ื‘ื•ืจ ืœ-API, ืขืœื™ืš ืœื™ืฆื•ืจ ืžื•ืคืข ืฉืœ ื”ืžื—ืœืงื” APIClientArgsื‘ืื•ืคืŸ ืขืงืจื•ื ื™, ื”ืคืจืžื˜ืจื™ื ืฉืœื• ืžื•ื’ื“ืจื™ื ืžืจืืฉ ื•ื›ืืฉืจ ืžืคืขื™ืœื™ื ืืช ื”ืกืงืจื™ืคื˜ ื‘ืฉืจืช ื”ื ื™ื”ื•ืœ, ืื™ืŸ ืฆื•ืจืš ืœืฆื™ื™ืŸ ืื•ืชื.

client_args = APIClientArgs()

ืื‘ืœ ื›ืืฉืจ ืžืคืขื™ืœื™ื ืืช ื”ืžืขืจื›ืช ืขืœ ื’ื‘ื™ ืžื—ืฉื‘ ืžืืจื— ืฉืœ ืฆื“ ืฉืœื™ืฉื™, ืขืœื™ื›ื ืœืฆื™ื™ืŸ ืœืคื—ื•ืช ืืช ื›ืชื•ื‘ืช ื”-IP ืื• ืฉื ื”ืžืืจื— ืฉืœ ืฉืจืช ื”-API (ื”ื™ื“ื•ืข ื’ื ื›ืฉืจืช ื”ื ื™ื”ื•ืœ). ื‘ื“ื•ื’ืžื” ืœืžื˜ื”, ืื ื• ืžื’ื“ื™ืจื™ื ืืช ืคืจืžื˜ืจ ื—ื™ื‘ื•ืจ ื”ืฉืจืช ื•ืžืงืฆื™ื ืœื• ืืช ื›ืชื•ื‘ืช ื”-IP ืฉืœ ืฉืจืช ื”ื ื™ื”ื•ืœ ื›ืžื—ืจื•ื–ืช.

client_args = APIClientArgs(server='192.168.47.241')

ื‘ื•ืื• ื ื‘ื—ืŸ ืืช ื›ืœ ื”ืคืจืžื˜ืจื™ื ื•ืขืจื›ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื”ื ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘ืขืช ื”ืชื—ื‘ืจื•ืช ืœืฉืจืช ื”-API:

ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ื”ืžืชื•ื“ื” __init__ ืฉืœ ื”ืžื—ืœืงื” APIClientArgs

class APIClientArgs:
    """
    This class provides arguments for APIClient configuration.
    All the arguments are configured with their default values.
    """

    # port is set to None by default, but it gets replaced with 443 if not specified
    # context possible values - web_api (default) or gaia_api
    def __init__(self, port=None, fingerprint=None, sid=None, server="127.0.0.1", http_debug_level=0,
                 api_calls=None, debug_file="", proxy_host=None, proxy_port=8080,
                 api_version=None, unsafe=False, unsafe_auto_accept=False, context="web_api"):
        self.port = port
        # management server fingerprint
        self.fingerprint = fingerprint
        # session-id.
        self.sid = sid
        # management server name or IP-address
        self.server = server
        # debug level
        self.http_debug_level = http_debug_level
        # an array with all the api calls (for debug purposes)
        self.api_calls = api_calls if api_calls else []
        # name of debug file. If left empty, debug data will not be saved to disk.
        self.debug_file = debug_file
        # HTTP proxy server address (without "http://")
        self.proxy_host = proxy_host
        # HTTP proxy port
        self.proxy_port = proxy_port
        # Management server's API version
        self.api_version = api_version
        # Indicates that the client should not check the server's certificate
        self.unsafe = unsafe
        # Indicates that the client should automatically accept and save the server's certificate
        self.unsafe_auto_accept = unsafe_auto_accept
        # The context of using the client - defaults to web_api
        self.context = context

ืื ื™ ืžืืžื™ืŸ ืฉื”ืืจื’ื•ืžื ื˜ื™ื ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘ืžื•ืคืขื™ื ืฉืœ ื”ืžื—ืœืงื” APIClientArgs ืžื•ื‘ื ื™ื ื‘ืื•ืคืŸ ืื™ื ื˜ื•ืื™ื˜ื™ื‘ื™ ืœืžื ื”ืœื™ Check Point ื•ืื™ื ื ื“ื•ืจืฉื™ื ื”ืขืจื•ืช ื ื•ืกืคื•ืช.

ื”ืชื—ื‘ืจื•ืช ื“ืจืš APIClient ื•ืžื ื”ืœ ื”ื”ืงืฉืจ

ื‘ื›ื™ืชื” ืœืงื•ื— API ื”ื›ื™ ื ื•ื— ืœื”ืฉืชืžืฉ ื‘ื• ื“ืจืš ืžื ื”ืœ ื”ื”ืงืฉืจ. ื›ืœ ืžื” ืฉืฆืจื™ืš ืœื”ืขื‘ื™ืจ ืœืžื•ืคืข ื”ืžื—ืœืงื” APIClient ื”ื•ื ืคืจืžื˜ืจื™ ื”ื—ื™ื‘ื•ืจ ืฉื”ื•ื’ื“ืจื• ื‘ืฉืœื‘ ื”ืงื•ื“ื.

with APIClient(client_args) as client:

ืžื ื”ืœ ื”ื”ืงืฉืจ ืœื ื™ื‘ืฆืข ืื•ื˜ื•ืžื˜ื™ืช ืงืจื™ืืช ื”ืชื—ื‘ืจื•ืช ืœืฉืจืช ื”-API, ืืš ื™ื‘ืฆืข ืงืจื™ืืช ื”ืชื ืชืงื•ืช ื‘ืขืช ื”ื™ืฆื™ืื” ืžืžื ื•. ืื ืžืกื™ื‘ื” ื›ืœืฉื”ื™ ืื™ืŸ ืฆื•ืจืš ื‘ื”ืชื ืชืงื•ืช ืœืื—ืจ ืกื™ื•ื ื”ืขื‘ื•ื“ื” ืขื ืงืจื™ืื•ืช ื”-API, ืขืœื™ืš ืœื”ืชื—ื™ืœ ืœืขื‘ื•ื“ ืžื‘ืœื™ ืœื”ืฉืชืžืฉ ื‘ืžื ื”ืœ ื”ื”ืงืฉืจ:

client = APIClient(clieng_args)

ื‘ื“ื™ืงืช ื—ื™ื‘ื•ืจ

ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ืœื‘ื“ื•ืง ื”ืื ื”ื—ื™ื‘ื•ืจ ืคื•ืขืœ ื‘ื”ืชืื ืœืคืจืžื˜ืจื™ื ืฉืฆื•ื™ื ื• ื”ื™ื ื‘ืืžืฆืขื•ืช ื”ืฉื™ื˜ื” ื‘ื“ื™ืงืช_ื˜ื‘ื™ืขืช_ืืฆื‘ืขืื ื‘ื“ื™ืงืช ื”-hash ืฉืœ sha1 ืขื‘ื•ืจ ื˜ื‘ื™ืขืช ื”ืืฆื‘ืข ืฉืœ ืื™ืฉื•ืจ ืฉืจืช ื”-API ื ื›ืฉืœื” (ื”ืฉื™ื˜ื” ืฉื”ื•ื—ื–ืจื” ืœื ื ื›ื•ืŸ), ืื– ื–ื” ื‘ื“ืจืš ื›ืœืœ ื ื’ืจื ืขืงื‘ ื‘ืขื™ื•ืช ื—ื™ื‘ื•ืจ ื•ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืขืฆื•ืจ ืืช ื‘ื™ืฆื•ืข ื”ืชื•ื›ื ื™ืช (ืื• ืœืชืช ืœืžืฉืชืžืฉ ืืช ื”ื”ื–ื“ืžื ื•ืช ืœืชืงืŸ ืืช ื ืชื•ื ื™ ื”ื—ื™ื‘ื•ืจ):

    if client.check_fingerprint() is False:
        print("Could not get the server's fingerprint - Check connectivity with the server.")
        exit(1)

ืฉื™ืžื• ืœื‘ ืฉื‘ืขืชื™ื“ ื”ืฉื™ืขื•ืจ ืœืงื•ื— API ื™ื‘ื“ื•ืง ื›ืœ ืงืจื™ืื” ืœ-API (ืฉื™ื˜ื•ืช api_call ะธ api_query, ื ื“ื‘ืจ ืขืœื™ื”ื ืงืฆืช ื™ื•ืชืจ) ื˜ื‘ื™ืขืช ืืฆื‘ืข sha1 ืฉืœ ื”ืชืขื•ื“ื” ื‘ืฉืจืช ื”-API. ืื‘ืœ ืื ืžืชื’ืœื” ืฉื’ื™ืื” ื‘ืขืช ื‘ื“ื™ืงืช ื˜ื‘ื™ืขืช ื”ืืฆื‘ืข sha1 ืฉืœ ืชืขื•ื“ืช ืฉืจืช ื”-API (ื”ืชืขื•ื“ื” ืื™ื ื” ื™ื“ื•ืขื” ืื• ืฉื•ื ืชื”), ื”ืฉื™ื˜ื” ื‘ื“ื™ืงืช_ื˜ื‘ื™ืขืช_ืืฆื‘ืข ื™ืกืคืง ืืช ื”ื™ื›ื•ืœืช ืœื”ื•ืกื™ืฃ/ืœืฉื ื•ืช ืžื™ื“ืข ืื•ื“ื•ืชื™ื• ื‘ืžื—ืฉื‘ ื”ืžืงื•ืžื™ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™. ื ื™ืชืŸ ืœื”ืฉื‘ื™ืช ืœื—ืœื•ื˜ื™ืŸ ื‘ื“ื™ืงื” ื–ื• (ืืš ืžื•ืžืœืฅ ืœืขืฉื•ืช ื–ืืช ืจืง ื‘ืžืงืจื” ืฉืœ ื”ืจืฆืช ืกืงืจื™ืคื˜ื™ื ื‘ืฉืจืช ื”-API ืขืฆืžื•, ื‘ืขืช ื”ืชื—ื‘ืจื•ืช ืœ-127.0.0.1), ื‘ืืžืฆืขื•ืช ื”ืืจื’ื•ืžื ื˜ APIClientArgs - ืงื‘ืœื”_ืื•ื˜ื•ืžื˜ื™ืช_ืœื_ื‘ื˜ื•ื—ื” (ืจืื” ืขื•ื“ ืขืœ APIClientArgs ืงื•ื“ื ืœื›ืŸ ื‘"ื”ื’ื“ืจืช ืคืจืžื˜ืจื™ ื—ื™ื‘ื•ืจ").

client_args = APIClientArgs(unsafe_auto_accept=True)

ื”ืชื—ื‘ืจื•ืช ืœืฉืจืช ื”-API

ะฃ ืœืงื•ื— API ื™ืฉื ืŸ ืขื“ 3 ืฉื™ื˜ื•ืช ืœื”ืชื—ื‘ืจื•ืช ืœืฉืจืช ื”-API, ื•ื›ืœ ืื—ืช ืžื”ืŸ ื–ื•ื›ืจืช ืืช ื”ืขืจืš ืกื™ื“(session-id), ืืฉืจ ืžืฉืžืฉ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื‘ื›ืœ ืงืจื™ืื” ืขื•ืงื‘ืช ืœ-API ื‘ื›ื•ืชืจืช (ื”ืฉื ื‘ื›ื•ืชืจืช ืขื‘ื•ืจ ืคืจืžื˜ืจ ื–ื” ื”ื•ื X-chkp-sid), ื›ืš ืฉืื™ืŸ ืฆื•ืจืš ืœืขื‘ื“ ืขื•ื“ ื™ื•ืชืจ ืืช ื”ืคืจืžื˜ืจ ื”ื–ื”.

ืฉื™ื˜ืช ื”ืชื—ื‘ืจื•ืช

ืืคืฉืจื•ืช ื”ืžืฉืชืžืฉืช ื‘ืฉื ืžืฉืชืžืฉ ื•ืกื™ืกืžื” (ื‘ื“ื•ื’ืžื”, ืฉื ื”ืžืฉืชืžืฉ admin ื•ื”ืกื™ืกืžื” 1q2w3e ืžื•ืขื‘ืจื™ื ื›ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืžื™ืงื•ื):

     login = client.login('admin', '1q2w3e')  

ืœืฉื™ื˜ืช ื”ื”ืชื—ื‘ืจื•ืช ื™ืฉ ื’ื ืคืจืžื˜ืจื™ื ืื•ืคืฆื™ื•ื ืœื™ื™ื ื ื•ืกืคื™ื, ืœื”ืœืŸ ืฉืžื•ืชื™ื”ื ื•ืขืจื›ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื”ื:

continue_last_session=False, domain=None, read_only=False, payload=None

ืฉื™ื˜ื” login_with_api_key

ืืคืฉืจื•ืช ื‘ืืžืฆืขื•ืช ืžืคืชื— API (ื ืชืžืš ื”ื—ืœ ืžื’ืจืกืช ื ื™ื”ื•ืœ R80.40/Management API v1.6, "3TsbPJ8ZKjaJGvFyoFqHFA==" ื–ื”ื• ืขืจืš ืžืคืชื— ื”-API ืขื‘ื•ืจ ืื—ื“ ื”ืžืฉืชืžืฉื™ื ื‘ืฉืจืช ื”ื ื™ื”ื•ืœ ืขื ืฉื™ื˜ืช ืื™ืžื•ืช ืžืคืชื— ื”-API):

     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==') 

ื‘ืฉื™ื˜ื” ื›ื ื™ืกื”_ืขื_ืžืคืชื—_API ืื•ืชื ืคืจืžื˜ืจื™ื ืื•ืคืฆื™ื•ื ืœื™ื™ื ื–ืžื™ื ื™ื ื›ืžื• ื‘ืฉื™ื˜ื” ื”ืชื—ื‘ืจ.

ืฉื™ื˜ืช login_as_root

ืืคืฉืจื•ืช ืœื”ืชื—ื‘ืจื•ืช ืœืžื—ืฉื‘ ืžืงื•ืžื™ ืขื ืฉืจืช API:

     login = client.login_as_root()

ื™ืฉื ื ืจืง ืฉื ื™ ืคืจืžื˜ืจื™ื ืื•ืคืฆื™ื•ื ืœื™ื™ื ื–ืžื™ื ื™ื ืขื‘ื•ืจ ืฉื™ื˜ื” ื–ื•:

domain=None, payload=None

ื•ืœื‘ืกื•ืฃ, ื”-API ืงื•ืจื ืœืขืฆืžื•

ื™ืฉ ืœื ื• ืฉืชื™ ืืคืฉืจื•ื™ื•ืช ืœื‘ืฆืข ืงืจื™ืื•ืช API ื‘ืืžืฆืขื•ืช ืฉื™ื˜ื•ืช api_call ะธ api_queryื‘ื•ืื• ื ื’ืœื” ืžื” ื”ื”ื‘ื“ืœ ื‘ื™ื ื™ื”ื.

api_call

ืฉื™ื˜ื” ื–ื• ื™ืฉื™ืžื” ืขื‘ื•ืจ ื›ืœ ืงืจื™ืื”. ืขืœื™ื ื• ืœื”ืขื‘ื™ืจ ืืช ื”ื—ืœืง ื”ืื—ืจื•ืŸ ืขื‘ื•ืจ ืงืจื™ืืช ื”-API ื•ื”ืžื˜ืขืŸ ื‘ื’ื•ืฃ ื”ื‘ืงืฉื” ื‘ืžื™ื“ืช ื”ืฆื•ืจืš. ืื ื”ืžื˜ืขืŸ ืจื™ืง, ื ื™ืชืŸ ืœื”ืฉืžื™ื˜ ืื•ืชื• ืœื—ืœื•ื˜ื™ืŸ:

api_versions = client.api_call('show-api-versions') 

ื”ืคืœื˜ ืขื‘ื•ืจ ื‘ืงืฉื” ื–ื• ื ืžืฆื ืžืชื—ืช ืœืงื• ื”ื—ื™ืชื•ืš:

In [23]: api_versions                                                           
Out[23]: 
APIResponse({
    "data": {
        "current-version": "1.6",
        "supported-versions": [
            "1",
            "1.1",
            "1.2",
            "1.3",
            "1.4",
            "1.5",
            "1.6"
        ]
    },
    "res_obj": {
        "data": {
            "current-version": "1.6",
            "supported-versions": [
                "1",
                "1.1",
                "1.2",
                "1.3",
                "1.4",
                "1.5",
                "1.6"
            ]
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})
show_host = client.api_call('show-host', {'name' : 'h_8.8.8.8'})

ื”ืคืœื˜ ืขื‘ื•ืจ ื‘ืงืฉื” ื–ื• ื ืžืฆื ืžืชื—ืช ืœืงื• ื”ื—ื™ืชื•ืš:

In [25]: show_host                                                              
Out[25]: 
APIResponse({
    "data": {
        "color": "black",
        "comments": "",
        "domain": {
            "domain-type": "domain",
            "name": "SMC User",
            "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
        },
        "groups": [],
        "icon": "Objects/host",
        "interfaces": [],
        "ipv4-address": "8.8.8.8",
        "meta-info": {
            "creation-time": {
                "iso-8601": "2020-05-01T21:49+0300",
                "posix": 1588358973517
            },
            "creator": "admin",
            "last-modifier": "admin",
            "last-modify-time": {
                "iso-8601": "2020-05-01T21:49+0300",
                "posix": 1588358973517
            },
            "lock": "unlocked",
            "validation-state": "ok"
        },
        "name": "h_8.8.8.8",
        "nat-settings": {
            "auto-rule": false
        },
        "read-only": false,
        "tags": [],
        "type": "host",
        "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
    },
    "res_obj": {
        "data": {
            "color": "black",
            "comments": "",
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "groups": [],
            "icon": "Objects/host",
            "interfaces": [],
            "ipv4-address": "8.8.8.8",
            "meta-info": {
                "creation-time": {
                    "iso-8601": "2020-05-01T21:49+0300",
                    "posix": 1588358973517
                },
                "creator": "admin",
                "last-modifier": "admin",
                "last-modify-time": {
                    "iso-8601": "2020-05-01T21:49+0300",
                    "posix": 1588358973517
                },
                "lock": "unlocked",
                "validation-state": "ok"
            },
            "name": "h_8.8.8.8",
            "nat-settings": {
                "auto-rule": false
            },
            "read-only": false,
            "tags": [],
            "type": "host",
            "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})

api_query

ื”ืจืฉื• ืœื™ ืœื”ืขื™ืจ ืžื™ื“ ืฉืฉื™ื˜ื” ื–ื• ื™ืฉื™ืžื” ืจืง ืขื‘ื•ืจ ืงืจื™ืื•ืช, ืฉื”ืคืœื˜ ืฉืœื”ืŸ ืžื ื™ื— ื”ื™ืกื˜. ืคืœื˜ ื›ื–ื” ืžืชืจื—ืฉ ื›ืืฉืจ ื”ื•ื ืžื›ื™ืœ ืื• ื™ื›ื•ืœ ืœื”ื›ื™ืœ ื›ืžื•ืช ื’ื“ื•ืœื” ืฉืœ ืžื™ื“ืข. ืœื“ื•ื’ืžื”, ื–ื• ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื‘ืงืฉื” ืœืจืฉื™ืžื” ืฉืœ ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืžืกื•ื’ ืžืืจื— ืฉื ื•ืฆืจื• ื‘ืฉืจืช ื”ื ื™ื”ื•ืœ. ืขื‘ื•ืจ ื‘ืงืฉื•ืช ื›ืืœื”, ื”-API ืžื—ื–ื™ืจ ืจืฉื™ืžื” ืฉืœ 50 ืื•ื‘ื™ื™ืงื˜ื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ (ื ื™ืชืŸ ืœื”ื’ื“ื™ืœ ืืช ื”ืžื’ื‘ืœื” ืœ-500 ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืชื’ื•ื‘ื”). ื•ื›ื“ื™ ืœื ืœืžืฉื•ืš ืžื™ื“ืข ืžืกืคืจ ืคืขืžื™ื, ืขืœ ื™ื“ื™ ืฉื™ื ื•ื™ ืคืจืžื˜ืจ ื”ื”ื™ืกื˜ ื‘ื‘ืงืฉืช ื”-API, ืงื™ื™ืžืช ืฉื™ื˜ื” ื‘ืฉื api_query, ืฉืขื•ืฉื” ื–ืืช ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™. ื“ื•ื’ืžืื•ืช ืœืงืจื™ืื•ืช ื‘ื”ืŸ ืฉื™ื˜ื” ื–ื• ื ื“ืจืฉืช: ืžื•ืคืขื™-ื”ืคืขืœื•ืช, ืžืืจื—ื™-ื”ื•ืคืขื•ืช, ืจืฉืชื•ืช-ื”ื•ืคืขื•ืช, ืชื•ื•ื™ื-ื›ืœืœื™ื™ื-ืฉืœ-ืžื•ืคืข, ืงื‘ื•ืฆื•ืช-ื”ื•ืคืขื•ืช, ื˜ื•ื•ื—ื™-ื›ืชื•ื‘ื•ืช-ื”ื•ืคืขื•ืช, ืฉืขืจื™ื-ืคืฉื•ื˜ื™ื-ืฉืœ-ืžื•ืคืขื™ื, ืืฉื›ื•ืœื•ืช-ืคืฉื•ื˜ื™ื-ืฉืœ-ืžื•ืคืขื™ื, ืชืคืงื™ื“ื™-ื’ื™ืฉื”-ื”ื•ืคืขื•ืช, ืœืงื•ื—ื•ืช-ืžื”ื™ืžื ื™ื-ืžื•ืคืขื™ื, ื—ื‘ื™ืœื•ืช-ื”ื•ืคืขื•ืชืœืžืขืฉื”, ื‘ืฉื ืฉืœ ืงืจื™ืื•ืช ื”-API ื”ืœืœื• ืื ื• ืจื•ืื™ื ืžื™ืœื™ื ื‘ืจื‘ื™ื, ื›ืš ืฉืงืจื™ืื•ืช ืืœื• ื™ื”ื™ื• ืงืœื•ืช ื™ื•ืชืจ ืœื˜ื™ืคื•ืœ ื‘ืืžืฆืขื•ืช api_query

show_hosts = client.api_query('show-hosts') 

ื”ืคืœื˜ ืขื‘ื•ืจ ื‘ืงืฉื” ื–ื• ื ืžืฆื ืžืชื—ืช ืœืงื• ื”ื—ื™ืชื•ืš:

In [21]: show_hosts                                                             
Out[21]: 
APIResponse({
    "data": [
        {
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "ipv4-address": "192.168.47.1",
            "name": "h_192.168.47.1",
            "type": "host",
            "uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
        },
        {
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "ipv4-address": "8.8.8.8",
            "name": "h_8.8.8.8",
            "type": "host",
            "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
        }
    ],
    "res_obj": {
        "data": {
            "from": 1,
            "objects": [
                {
                    "domain": {
                        "domain-type": "domain",
                        "name": "SMC User",
                        "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
                    },
                    "ipv4-address": "192.168.47.1",
                    "name": "h_192.168.47.1",
                    "type": "host",
                    "uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
                },
                {
                    "domain": {
                        "domain-type": "domain",
                        "name": "SMC User",
                        "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
                    },
                    "ipv4-address": "8.8.8.8",
                    "name": "h_8.8.8.8",
                    "type": "host",
                    "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
                }
            ],
            "to": 2,
            "total": 2
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})

ืขื™ื‘ื•ื“ ืชื•ืฆืื•ืช ืงืจื™ืื•ืช API

ืœืื—ืจ ืžื›ืŸ, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžืฉืชื ื™ื ื•ื‘ืžืชื•ื“ื•ืช ืฉืœ ื”ืžื—ืœืงื”. ืชื’ื•ื‘ืช APISponse(ื‘ืชื•ืš ื•ืžื—ื•ืฅ ืœืžื ื”ืœ ื”ื”ืงืฉืจ). ื”ืžื—ืœืงื” ืชื’ื•ื‘ืช APISponse ื™ืฉื ืŸ 4 ืฉื™ื˜ื•ืช ืžื•ื’ื“ืจื•ืช ืžืจืืฉ ื•-5 ืžืฉืชื ื™ื, ื ืชืขื›ื‘ ืขืœ ื”ื—ืฉื•ื‘ื•ืช ื‘ื™ื•ืชืจ ื‘ื™ืชืจ ืคื™ืจื•ื˜.

ืคื™ืฉื•ื˜ ื”-Check Point API ืขื Python SDK

ื”ืฆืœื—ื”

ืจืืฉื™ืช, ื™ื”ื™ื” ื ื—ืžื“ ืœื•ื•ื“ื ืฉืงืจื™ืืช ื”-API ื‘ื•ืฆืขื” ื‘ื”ืฆืœื—ื” ื•ื”ื—ื–ื™ืจื” ืชื•ืฆืื”. ื™ืฉื ื” ืฉื™ื˜ื” ืœื›ืš. ื”ืฆืœื—ื”:

In [49]: api_versions.success                                                   
Out[49]: True

ืžื—ื–ื™ืจื” True ืื ืงืจื™ืืช ื”-API ื”ื™ื™ืชื” ืžื•ืฆืœื—ืช (ืงื•ื“ ืชื’ื•ื‘ื” - 200) ื•-False ืื ืœื ื”ืฆืœื™ื—ื” (ื›ืœ ืงื•ื“ ืชื’ื•ื‘ื” ืื—ืจ). ื ื•ื— ืœืฉื™ืžื•ืฉ ืžื™ื“ ืœืื—ืจ ืงืจื™ืืช ื”-API ื›ื“ื™ ืœื”ืฆื™ื’ ืžื™ื“ืข ืฉื•ื ื” ื‘ื”ืชืื ืœืงื•ื“ ื”ืชื’ื•ื‘ื”.

if api_ver.success: 
    print(api_versions.data) 
else: 
    print(api_versions.err_message) 

ืงื•ื“ ืกื˜ื˜ื•ืก

ืžื—ื–ื™ืจื” ืืช ืงื•ื“ ื”ืชื’ื•ื‘ื” ืœืื—ืจ ื‘ื™ืฆื•ืข ืงืจื™ืื” ืœ-API.

In [62]: api_versions.status_code                                               
Out[62]: 400

ืงื•ื“ื™ ืชื’ื•ื‘ื” ืืคืฉืจื™ื™ื: 200,400,401,403,404,409,500,501.

ืกื˜_ืžืฆื‘_ื”ืฆืœื—ื”

ื‘ืžืงืจื” ื–ื”, ื™ื™ืชื›ืŸ ืฉื™ื”ื™ื” ืฆื•ืจืš ืœืฉื ื•ืช ืืช ืขืจืš ืกื˜ื˜ื•ืก ื”ื”ืฆืœื—ื”. ื˜ื›ื ื™ืช, ื ื™ืชืŸ ืœื”ื›ื ื™ืก ืฉื ื›ืœ ื“ื‘ืจ, ืืคื™ืœื• ืžื—ืจื•ื–ืช ืจื’ื™ืœื”. ืื‘ืœ ื“ื•ื’ืžื” ืืžื™ืชื™ืช ืชื”ื™ื” ืื™ืคื•ืก ืคืจืžื˜ืจ ื–ื” ืœ-False ื‘ืชื ืื™ื ื ืœื•ื•ื™ื ืžืกื•ื™ืžื™ื. ืœื”ืœืŸ, ืฉื™ืžื• ืœื‘ ืœื“ื•ื’ืžื” ืฉื‘ื” ื™ืฉ ืžืฉื™ืžื•ืช ื”ืคื•ืขืœื•ืช ื‘ืฉืจืช ื”ื ื™ื”ื•ืœ, ืืš ื ืฉืงื™ืœ ื‘ืงืฉื” ื–ื• ื›ืœื ืžื•ืฆืœื—ืช (ื ื’ื“ื™ืจ ืืช ืžืฉืชื ื” ื”ื”ืฆืœื—ื” ืœ- ืœื ื ื›ื•ืŸ, ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉืงืจื™ืืช ื”-API ื‘ื•ืฆืขื” ื‘ื”ืฆืœื—ื” ื•ื”ื—ื–ื™ืจื” ืืช ื”ืงื•ื“ 200).

for task in task_result.data["tasks"]:
    if task["status"] == "failed" or task["status"] == "partially succeeded":
        task_result.set_success_status(False)
        break

ืชึฐื’ื•ึผื‘ึธื”()

ืฉื™ื˜ืช ื”ืชืฉื•ื‘ื” ืžืืคืฉืจืช ืœืš ืœืฆืคื•ืช ื‘ืžื™ืœื•ืŸ ืขื ืงื•ื“ ื”ืชื’ื•ื‘ื” (status_code) ื•ื’ื•ืฃ ื”ืชื’ื•ื‘ื” (body).

In [94]: api_versions.response()                                                
Out[94]: 
{'status_code': 200,
 'data': {'current-version': '1.6',
  'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}}

ื ืชื•ื ื™ื

ืžืืคืฉืจ ืœืš ืœืจืื•ืช ืจืง ืืช ื’ื•ืฃ ื”ืชื’ื•ื‘ื” ืœืœื ืžื™ื“ืข ืžื™ื•ืชืจ.

In [93]: api_versions.data                                                      
Out[93]: 
{'current-version': '1.6',
 'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}

ื”ื•ื“ืขืช_ืฉื’ื™ืื”

ืžื™ื“ืข ื–ื” ื–ืžื™ืŸ ืจืง ื›ืืฉืจ ืื™ืจืขื” ืฉื’ื™ืื” ื‘ืขืช ืขื™ื‘ื•ื“ ื‘ืงืฉืช ื”-API (ืงื•ื“ ืชื’ื•ื‘ื” ืœื 200). ื“ื•ื’ืžื” ืœืคืœื˜

In [107]: api_versions.error_message                                            
Out[107]: 'code: generic_err_invalid_parameter_namenmessage: Unrecognized parameter [1]n'

ื“ื•ื’ืžืื•ืช ืฉื™ืžื•ืฉื™ื•ืช

ื”ื“ื•ื’ืžืื•ืช ื”ื‘ืื•ืช ืžืฉืชืžืฉื•ืช ื‘ืงืจื™ืื•ืช API ืฉื ื•ืกืคื• ื‘ื’ืจืกื” 1.6 ืฉืœ ื ื™ื”ื•ืœ API.

ื‘ื•ืื• ื ืชื—ื™ืœ ื‘ืœืจืื•ืช ืื™ืš ืฉื™ื—ื•ืช ืขื•ื‘ื“ื•ืช. ื”ื•ืกืฃ ืžืืจื— ะธ ื”ื•ืกืฃ-ื˜ื•ื•ื—-ื›ืชื•ื‘ื•ืชื ื ื™ื— ืฉืขืœื™ื ื• ืœื™ืฆื•ืจ ืืช ื›ืœ ื›ืชื•ื‘ื•ืช ื”-IP ืฉืœ ืชืช-ื”ืจืฉืช 192.168.0.0/24, ื›ืืฉืจ ื”ืื•ืงื˜ื˜ ื”ืื—ืจื•ืŸ ืฉืœื”ืŸ ื”ื•ื 5, ื›ืื•ื‘ื™ื™ืงื˜ื™ื ืžืกื•ื’ ืžืืจื—, ื•ืœื›ืชื•ื‘ ืืช ื›ืœ ืฉืืจ ื›ืชื•ื‘ื•ืช ื”-IP ื›ืื•ื‘ื™ื™ืงื˜ื™ื ืžืกื•ื’ ื˜ื•ื•ื— ื›ืชื•ื‘ื•ืช. ื‘ืžืงืจื” ื–ื”, ืืœ ืชื›ืœื•ืœ ืืช ื›ืชื•ื‘ืช ืชืช-ื”ืจืฉืช ื•ืืช ื›ืชื•ื‘ืช ื”ืฉื™ื“ื•ืจ.

ืื–, ืœื”ืœืŸ ืกืงืจื™ืคื˜ ืฉืคื•ืชืจ ืืช ื”ื‘ืขื™ื” ื”ื–ื• ื•ื™ื•ืฆืจ 50 ืื•ื‘ื™ื™ืงื˜ื™ื ืžืกื•ื’ ืžืืจื— ื•-51 ืื•ื‘ื™ื™ืงื˜ื™ื ืžืกื•ื’ ื˜ื•ื•ื— ื›ืชื•ื‘ื•ืช. ืคืชืจื•ืŸ ื”ื‘ืขื™ื” ื“ื•ืจืฉ 101 ืงืจื™ืื•ืช API (ืœื ื›ื•ืœืœ ืงืจื™ืืช ื”ืคืจืกื•ื ื”ืกื•ืคื™ืช). ื›ืžื• ื›ืŸ, ื‘ืืžืฆืขื•ืช ืžื•ื“ื•ืœ timeit, ืื ื• ืžื—ืฉื‘ื™ื ืืช ื”ื–ืžืŸ ืฉืœื•ืงื— ืœื”ืจื™ืฅ ืืช ื”ืกืงืจื™ืคื˜ ืขื“ ืœืคืจืกื•ื ื”ืฉื™ื ื•ื™ื™ื.

ืกืงืจื™ืคื˜ ื”ืžืฉืชืžืฉ ื‘- add-host ื•- add-address-range

import timeit
from cpapi import APIClient, APIClientArgs

start = timeit.default_timer()

first_ip = 1
last_ip = 4

client_args = APIClientArgs(server="192.168.47.240")

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     for ip in range(5,255,5):
         add_host = client.api_call("add-host", {"name" : f"h_192.168.0.{ip}", "ip-address": f'192.168.0.{ip}'})
     while last_ip < 255:
         add_range = client.api_call("add-address-range", {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"})
         first_ip+=5
         last_ip+=5
     stop = timeit.default_timer() 
     publish = client.api_call("publish")
     
print(f'Time to execute batch request: {stop - start} seconds')

ื‘ืกื‘ื™ื‘ืช ื”ืžืขื‘ื“ื” ืฉืœื™, ืกืงืจื™ืคื˜ ื–ื” ืœื•ืงื— ื‘ื™ืŸ 30 ืœ-50 ืฉื ื™ื•ืช ืœื‘ื™ืฆื•ืข, ืชืœื•ื™ ื‘ืขื•ืžืก ืขืœ ืฉืจืช ื”ื ื™ื”ื•ืœ.

ืขื›ืฉื™ื• ื‘ื•ืื• ื ืจืื” ื›ื™ืฆื“ ืœืคืชื•ืจ ืืช ืื•ืชื” ื‘ืขื™ื” ื‘ืืžืฆืขื•ืช ืงืจื™ืื” ืœ-API. ื”ื•ืกืฃ-ืื•ื‘ื™ื™ืงื˜ื™ื-ืืฆื•ื•ื”, ืชืžื™ื›ื” ืขื‘ื•ืจื” ื ื•ืกืคื” ื‘ื’ืจืกื” 1.6 ืฉืœ ื”-API. ืงืจื™ืื” ื–ื• ืžืืคืฉืจืช ืœืš ืœื™ืฆื•ืจ ืžืกืคืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ื• ื–ืžื ื™ืช ื‘ื‘ืงืฉืช API ืื—ืช. ื™ืชืจ ืขืœ ื›ืŸ, ืืœื” ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืื•ื‘ื™ื™ืงื˜ื™ื ืžืกื•ื’ื™ื ืฉื•ื ื™ื (ืœื“ื•ื’ืžื”, ืžืืจื—ื™ื, ืชืช-ืจืฉืชื•ืช ื•ื˜ื•ื•ื—ื™ ื›ืชื•ื‘ื•ืช). ืœืคื™ื›ืš, ื ื™ืชืŸ ืœืคืชื•ืจ ืืช ื”ืžืฉื™ืžื” ืฉืœื ื• ื‘ืžืกื’ืจืช ืงืจื™ืื” ืื—ืช ืฉืœ API.

ืกืงืจื™ืคื˜ ื”ืžืฉืชืžืฉ ื‘- add-objects-batch

import timeit
from cpapi import APIClient, APIClientArgs

start = timeit.default_timer()

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip = []
objects_list_range = []

for ip in range(5,255,5):
    data = {"name": f'h_192.168.0.{ip}', "ip-address": f'192.168.0.{ip}'}
    objects_list_ip.append(data)
    
first_ip = 1
last_ip = 4


while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"}
    objects_list_range.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip
}, {
    "type" : "address-range",
    "list" : objects_list_range
  }]
}


with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     add_objects_batch = client.api_call("add-objects-batch", data_for_batch)
     stop = timeit.default_timer() 
     publish = client.api_call("publish")
     
print(f'Time to execute batch request: {stop - start} seconds')

ื•ื”ืจืฆื” ืฉืœ ื”ืกืงืจื™ืคื˜ ื”ื–ื” ื‘ืกื‘ื™ื‘ืช ื”ืžืขื‘ื“ื” ืฉืœื™ ืœื•ืงื—ืช ื‘ื™ืŸ 3 ืœ-7 ืฉื ื™ื•ืช, ืชืœื•ื™ ื‘ืขื•ืžืก ืขืœ ืฉืจืช ื”ื ื™ื”ื•ืœ. ื›ืœื•ืžืจ, ื‘ืžืžื•ืฆืข, ืขืœ 101 ืื•ื‘ื™ื™ืงื˜ื™ื, ืงืจื™ืื” ืœ-API ืžืกื•ื’ ืืฆื•ื•ื” ืขื•ื‘ื“ืช ืคื™ 10 ืžื”ืจ ื™ื•ืชืจ. ืขืœ ืžืกืคืจ ื’ื“ื•ืœ ื™ื•ืชืจ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื, ื”ื”ื‘ื“ืœ ื™ื”ื™ื” ืžืจืฉื™ื ืขื•ื“ ื™ื•ืชืจ.

ืขื›ืฉื™ื• ื‘ื•ืื• ื ืจืื” ืื™ืš ืœืขื‘ื•ื“ ืขื ืงื‘ื•ืฆืช ืื•ื‘ื™ื™ืงื˜ื™ืื‘ืขื–ืจืช ืงืจื™ืื” ื–ื• ืœ-API ื ื•ื›ืœ ืœืฉื ื•ืช ื›ืœ ืคืจืžื˜ืจ ื‘ื‘ืช ืื—ืช. ื‘ื•ืื• ื ื’ื“ื™ืจ ืืช ื”ื—ืฆื™ ื”ืจืืฉื•ืŸ ืฉืœ ื”ื›ืชื•ื‘ื•ืช ืžื”ื“ื•ื’ืžื” ื”ืงื•ื“ืžืช (ืขื“ 124 hosts, ื•ื’ื ื˜ื•ื•ื—ื™ื) ืœืฆื‘ืข sienna, ื•ื ืงืฆื” ืืช ื”ื—ืฆื™ ื”ืฉื ื™ ืฉืœ ื”ื›ืชื•ื‘ื•ืช ืœืฆื‘ืข khaki.

ืฉื™ื ื•ื™ ืฆื‘ืข ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืฉื ื•ืฆืจื• ื‘ื“ื•ื’ืžื” ื”ืงื•ื“ืžืช

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip_first = []
objects_list_range_first = []
objects_list_ip_second = []
objects_list_range_second = []

for ip in range(5,125,5):
    data = {"name": f'h_192.168.0.{ip}', "color": "sienna"}
    objects_list_ip_first.append(data)
    
for ip in range(125,255,5):
    data = {"name": f'h_192.168.0.{ip}', "color": "khaki"}
    objects_list_ip_second.append(data)
    
first_ip = 1
last_ip = 4
while last_ip < 125:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "sienna"}
    objects_list_range_first.append(data)
    first_ip+=5
    last_ip+=5
    
while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "khaki"}
    objects_list_range_second.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch_first  = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip_first
}, {
    "type" : "address-range",
    "list" : objects_list_range_first
  }]
}

data_for_batch_second  = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip_second
}, {
    "type" : "address-range",
    "list" : objects_list_range_second
  }]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==') 
     set_objects_batch_first = client.api_call("set-objects-batch", data_for_batch_first)
     set_objects_batch_second = client.api_call("set-objects-batch", data_for_batch_second)
     publish = client.api_call("publish")

ื ื™ืชืŸ ืœืžื—ื•ืง ืžืกืคืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืงืจื™ืื” ืื—ืช ืœ-API ื‘ืืžืฆืขื•ืช ืžื—ื™ืงืช-ืื•ื‘ื™ื™ืงื˜ื™ื-ืืฆื•ื•ื”ื›ืขืช ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžื” ืœืงื•ื“ ืฉืžื•ื—ืง ืืช ื›ืœ ื”ืžืืจื—ื™ื ืฉื ื•ืฆืจื• ื‘ืขื‘ืจ ื‘ืืžืฆืขื•ืช ื”ื•ืกืฃ-ืื•ื‘ื™ื™ืงื˜ื™ื-ืืฆื•ื•ื”.

ืžื—ื™ืงืช ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืืžืฆืขื•ืช delete-objects-batch

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip = []
objects_list_range = []

for ip in range(5,255,5):
    data = {"name": f'h_192.168.0.{ip}'}
    objects_list_ip.append(data)

first_ip = 1
last_ip = 4
while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}"}
    objects_list_range.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip
}, {
    "type" : "address-range",
    "list" : objects_list_range
  }]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     delete_objects_batch = client.api_call("delete-objects-batch", data_for_batch)
     publish = client.api_call("publish")

print(delete_objects_batch.data)

ื›ืœ ื”ืคื•ื ืงืฆื™ื•ืช ื”ืžื•ืคื™ืขื•ืช ื‘ืžื”ื“ื•ืจื•ืช ืชื•ื›ื ื” ื—ื“ืฉื•ืช ืฉืœ Check Point ืžืงื‘ืœื•ืช ื‘ืื•ืคืŸ ืžื™ื™ื“ื™ ืงืจื™ืื•ืช API. ืœืคื™ื›ืš, ื‘-R80.40 ื”ื•ืคื™ืขื• "ืชื›ื•ื ื•ืช" ื›ื’ื•ืŸ "ื—ื–ื•ืจ ืœื’ืจืกื”" ื•-"Smart Task", ื•ืงืจื™ืื•ืช API ืชื•ืืžื•ืช ื”ื•ื›ื ื• ื‘ืื•ืคืŸ ืžื™ื™ื“ื™ ืขื‘ื•ืจืŸ. ื™ืชืจ ืขืœ ื›ืŸ, ื›ืœ ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื‘ืขืช ืžืขื‘ืจ ืžืงื•ื ืกื•ืœื™ื Legacy ืœืžืฆื‘ Unified Policy ืžืงื‘ืœืช ื’ื ืชืžื™ื›ื” ื‘-API. ืœื“ื•ื’ืžื”, ืขื“ื›ื•ืŸ ื”ืžื™ื•ื—ืœ ื‘ื’ืจืกืช ื”ืชื•ื›ื ื” R80.40 ื”ื™ื” ื”ืขื‘ืจืช ืžื“ื™ื ื™ื•ืช ื‘ื“ื™ืงืช HTTPS ืžืžืฆื‘ Legacy ืœืžืฆื‘ Unified Policy, ื•ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื–ื• ืงื™ื‘ืœื” ื‘ืื•ืคืŸ ืžื™ื™ื“ื™ ืงืจื™ืื•ืช API. ื”ื ื” ื“ื•ื’ืžื” ืœืงื•ื“ ืฉืžื•ืกื™ืฃ ื›ืœืœ ืœืžื™ืงื•ื ื”ืขืœื™ื•ืŸ ืฉืœ ืžื“ื™ื ื™ื•ืช ื‘ื“ื™ืงืช HTTPS, ืืฉืจ ืื™ื ื• ื›ื•ืœืœ 3 ืงื˜ื’ื•ืจื™ื•ืช ืžื‘ื“ื™ืงื” (ื‘ืจื™ืื•ืช, ืคื™ื ื ืกื™ื, ืฉื™ืจื•ืชื™ ืžืžืฉืœื”), ื”ืืกื•ืจื•ืช ืžื‘ื“ื™ืงื” ื‘ื”ืชืื ืœื—ืงื™ืงื” ื‘ืžืกืคืจ ืžื“ื™ื ื•ืช.

ื”ื•ืกืฃ ื›ืœืœ ืœืžื“ื™ื ื™ื•ืช ื‘ื“ื™ืงืช HTTPS

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

data = {
  "layer" : "Default Layer",
  "position" : "top",
  "name" : "Legal Requirements",
  "action": "bypass",
  "site-category": ["Health", "Government / Military", "Financial Services"]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     add_https_rule = client.api_call("add-https-rule", data)
     publish = client.api_call("publish")

ื”ืจืฆืช ืกืงืจื™ืคื˜ื™ื ืฉืœ Python ืขืœ ืฉืจืช ื ื™ื”ื•ืœ Check Point

ื”ื›ืœ ืื•ืชื• ื”ื“ื‘ืจ README.md ืžื›ื™ืœ ืžื™ื“ืข ืขืœ ืื•ืคืŸ ื”ืคืขืœืช ืกืงืจื™ืคื˜ื™ื ืฉืœ Python ื™ืฉื™ืจื•ืช ืžืฉืจืช ื”ื‘ืงืจื”. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ ื›ืืฉืจ ืื™ื ืš ืžืฆืœื™ื— ืœื”ืชื—ื‘ืจ ืœืฉืจืช ื”-API ืžืžื—ืฉื‘ ืื—ืจ. ื”ืงืœื˜ืชื™ ืกืจื˜ื•ืŸ ื‘ืŸ ืฉืฉ ื“ืงื•ืช ืฉื‘ื• ืื ื™ ืžืกืชื›ืœ ืขืœ ื”ืชืงื ืช ื”ืžื•ื“ื•ืœ. ืกื™-ืคื™-ืคื™ ื•ืชื›ื•ื ื•ืช ืฉืœ ื”ืจืฆืช ืกืงืจื™ืคื˜ื™ื ืฉืœ Python ื‘ืฉืจืช ื”ื ื™ื”ื•ืœ. ื›ื“ื•ื’ืžื”, ืžื•ืคืขืœ ืกืงืจื™ืคื˜ ืฉืžืืคืฉืจ ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ื”ื’ื“ืจืช ืฉืขืจ ื—ื“ืฉ ืขื‘ื•ืจ ืžืฉื™ืžื” ื›ื’ื•ืŸ ื‘ื™ืงื•ืจืช ืจืฉืช. ื‘ื“ื™ืงืช ืื‘ื˜ื—ื”ืื—ืช ื”ืชื›ื•ื ื•ืช ืฉื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืชืžื•ื“ื“ ืื™ืชืŸ: ื‘ืคื™ื™ืชื•ืŸ 2.7, ื”ืคื•ื ืงืฆื™ื” ืขื“ื™ื™ืŸ ืœื ื”ื•ืคื™ืขื”. ืงืœื˜, ื›ืš ืฉื”ืคื•ื ืงืฆื™ื” ืžืฉืžืฉืช ืœืขื™ื‘ื•ื“ ื”ืžื™ื“ืข ืฉื”ื•ื–ืŸ ืขืœ ื™ื“ื™ ื”ืžืฉืชืžืฉ ืงืœื˜_ื’ื•ืœืžื™ืื—ืจืช, ื”ืงื•ื“ ื–ื”ื” ืœื–ื” ืฉืœ ื”ืคืขืœื” ืžืžื›ื•ื ื•ืช ืื—ืจื•ืช, ืจืง ื ื•ื— ื™ื•ืชืจ ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” login_as_root, ื›ื“ื™ ืœื ืœืฆื™ื™ืŸ ืฉื•ื‘ ืืช ืฉื ื”ืžืฉืชืžืฉ, ื”ืกื™ืกืžื” ื•ื›ืชื•ื‘ืช ื”-IP ืฉืœ ืฉืจืช ื”ื‘ืงืจื” ืฉืœืš.

ื”ืคืขืœ ื•ื™ื“ืื•

ืกืงืจื™ืคื˜ ืœื”ืชืงื ื” ืžื”ื™ืจื” ืฉืœ ื‘ื“ื™ืงืช ืื‘ื˜ื—ื”

from __future__ import print_function
import getpass
import sys, os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from cpapi import APIClient, APIClientArgs

def main():
    with APIClient() as client:
       # if client.check_fingerprint() is False:
       #     print("Could not get the server's fingerprint - Check connectivity with the server.")
       #     exit(1)
        login_res = client.login_as_root()

        if login_res.success is False:
            print("Login failed:n{}".format(login_res.error_message))
            exit(1)

        gw_name = raw_input("Enter the gateway name:")
        gw_ip = raw_input("Enter the gateway IP address:")
        if sys.stdin.isatty():
            sic = getpass.getpass("Enter one-time password for the gateway(SIC): ")
        else:
            print("Attention! Your password will be shown on the screen!")
            sic = raw_input("Enter one-time password for the gateway(SIC): ")
        version = raw_input("Enter the gateway version(like RXX.YY):")
        add_gw = client.api_call("add-simple-gateway", {'name' : gw_name, 'ipv4-address' : gw_ip, 'one-time-password' : sic, 'version': version.capitalize(), 'application-control' : 'true', 'url-filtering' : 'true', 'ips' : 'true', 'anti-bot' : 'true', 'anti-virus' : 'true', 'threat-emulation' : 'true'})
        if add_gw.success and add_gw.data['sic-state'] != "communicating":
            print("Secure connection with the gateway hasn't established!")
            exit(1)
        elif add_gw.success:
            print("The gateway was added successfully.")
            gw_uid = add_gw.data['uid']
            gw_name = add_gw.data['name']
        else:
            print("Failed to add the gateway - {}".format(add_gw.error_message))
            exit(1)

        change_policy = client.api_call("set-access-layer", {"name" : "Network", "applications-and-url-filtering": "true", "content-awareness": "true"})
        if change_policy.success:
            print("The policy has been changed successfully")
        else:
            print("Failed to change the policy- {}".format(change_policy.error_message))
        change_rule = client.api_call("set-access-rule", {"name" : "Cleanup rule", "layer" : "Network", "action": "Accept", "track": {"type": "Detailed Log", "accounting": "true"}})
        if change_rule.success:
            print("The cleanup rule has been changed successfully")
        else:
            print("Failed to change the cleanup rule- {}".format(change_rule.error_message))

        # publish the result
        publish_res = client.api_call("publish", {})
        if publish_res.success:
            print("The changes were published successfully.")
        else:
                print("Failed to publish the changes - {}".format(install_tp_policy.error_message))

        install_access_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'true',  "threat-prevention" : 'false', "targets" : gw_uid})
        if install_access_policy.success:
            print("The access policy has been installed")
        else:
                print("Failed to install access policy - {}".format(install_tp_policy.error_message))

        install_tp_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'false',  "threat-prevention" : 'true', "targets" : gw_uid})
        if install_tp_policy.success:
            print("The threat prevention policy has been installed")
        else:
            print("Failed to install threat prevention policy - {}".format(install_tp_policy.error_message))
        
        # add passwords and passphrases to dictionary
        with open('additional_pass.conf') as f:
            line_num = 0
            for line in f:
                line_num += 1
                add_password_dictionary = client.api_call("run-script", {"script-name" : "Add passwords and passphrases", "script" : "printf "{}" >> $FWDIR/conf/additional_pass.conf".format(line), "targets" : gw_name})
                if add_password_dictionary.success:
                    print("The password dictionary line {} was added successfully".format(line_num))
                else:
                    print("Failed to add the dictionary - {}".format(add_password_dictionary.error_message))

main()

ื“ื•ื’ืžื” ืœืงื•ื‘ืฅ ืขื ืžื™ืœื•ืŸ ืกื™ืกืžืื•ืช additional_pass.conf
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","ะฟะฐั€ะพะปัŒ","ะŸะฐั€ะพะปัŒ","ะšะปัŽั‡","ะบะปัŽั‡","ัˆะธั„ั€","ะจะธั„ั€"]
}

ืžืกืงื ื”

ืžืืžืจ ื–ื” ืžื›ืกื” ืจืง ืืช ืืคืฉืจื•ื™ื•ืช ื”ืขื‘ื•ื“ื” ื”ื‘ืกื™ืกื™ื•ืช ืคื™ืชื•ืŸ SDK ื•ืžื•ื“ื•ืœ ืกื™-ืคื™-ืคื™(ื›ืคื™ ืฉื›ื ืจืื” ื ื™ื—ืฉืชื, ืืœื• ืœืžืขืฉื” ืžื™ืœื™ื ื ืจื“ืคื•ืช), ื•ืœืื—ืจ ืฉืœืžื“ืชื ืืช ื”ืงื•ื“ ื‘ืžื•ื“ื•ืœ ื–ื”, ืชื’ืœื• ืขื•ื“ ื™ื•ืชืจ ืืคืฉืจื•ื™ื•ืช ื‘ืขื‘ื•ื“ื” ืื™ืชื•. ื™ื™ืชื›ืŸ ืฉืชื”ื™ื” ืœื›ื ืจืฆื•ืŸ ืœื”ืฉืœื™ื ืื•ืชื• ืขื ืžื—ืœืงื•ืช, ืคื•ื ืงืฆื™ื•ืช, ืžืชื•ื“ื•ืช ื•ืžืฉืชื ื™ื ืžืฉืœื›ื. ืชืžื™ื“ ืชื•ื›ืœื• ืœืฉืชืฃ ืืช ื”ืคื™ืชื•ื—ื™ื ืฉืœื›ื ื•ืœืฆืคื•ืช ื‘ืกืงืจื™ืคื˜ื™ื ืื—ืจื™ื ืขื‘ื•ืจ Check Point ื‘ืกืขื™ืฃ ืงื•ื“-ื”ืื‘ ื‘ืงื”ื™ืœื” ืฆ'ืง-ืžื™ื™ื˜ืก, ืืฉืจ ืžืื—ื“ืช ื™ื—ื“ ืžืคืชื—ื™ ืžื•ืฆืจื™ื ื•ืžืฉืชืžืฉื™ื.

ืงื™ื“ื•ื“ ืžื”ื ื” ื•ืชื•ื“ื” ืฉืงืจืืชื ืขื“ ื”ืกื•ืฃ!

ืžืงื•ืจ: www.habr.com

ืงื ื” ืื™ืจื•ื— ืืžื™ืŸ ืœืืชืจื™ื ืขื ื”ื’ื ืช DDoS, ืฉืจืชื™ VPS VDS ๐Ÿ”ฅ ืงื ื” ืื—ืกื•ืŸ ืืชืจื™ื ืืžื™ืŸ ืขื ื”ื’ื ืช DDoS, ืฉืจืชื™ VPS VDS | ProHoster