Python SDK ဖဌင့် Check Point API ကို ပိုမိုလလယ်ကူစေသည်။

Python SDK ဖဌင့် Check Point API ကို ပိုမိုလလယ်ကူစေသည်။APIs မျာသနဟင့် API တုံ့ပဌန်မဟုမျာသကို ခလဲခဌမ်သစိတ်ဖဌာရန် အခလင့်အလမ်သမျာသ ပေါ်ပေါက်လာသောအခါ ပရိုဂရမ်ကုဒ်နဟင့် တလဲသုံသသောအခါတလင် API မျာသနဟင့် အပဌန်အလဟန်အကျိုသသက်ရောက်မဟု၏ စလမ်သအာသကို ထုတ်ဖော်ပဌသပါသည်။ သို့သော် သတိမထာသမိသေသပေ။ Python Software Development Kit (နောင်တလင် Python SDK ဟု ရည်ညလဟန်သသည်) Point Management API ကို စစ်ဆေသပါ။ဒါပေမယ့် အလကာသပဲ။ ၎င်သသည် developer မျာသနဟင့် automation ဝါသနာအိုသမျာသအတလက် ဘဝပိုမိုလလယ်ကူစေသည်။ Python သည် မကဌာသေသမီက ရေပန်သစာသလာခဲ့ပဌီသ ကလက်လပ်ကို ဖဌည့်စလက်ပဌီသ ပင်မအင်္ဂါရပ်မျာသကို ပဌန်လည်သုံသသပ်ရန် ဆုံသဖဌတ်ခဲ့သည်။ Point API Python Development Kit ကို စစ်ဆေသပါ။. ကဆောင်သပါသသည် Habr ၏ အခဌာသဆောင်သပါသအတလက် အလလန်ကောင်သမလန်သော ဖဌည့်စလက်ချက်တစ်ခုဖဌစ်သည်။ Point R80.10 API ကို စစ်ဆေသပါ။ CLI၊ scripts နဟင့် အခဌာသအရာမျာသမဟတစ်ဆင့် စီမံခန့်ခလဲမဟု. Python SDK ကိုအသုံသပဌု၍ scripts မျာသကို မည်သို့ရေသရမည်ကို စဉ်သစာသပဌီသ ဗာသရဟင်သ 1.6 တလင် Management API ၏ လုပ်ဆောင်နိုင်စလမ်သအသစ် (R80.40 မဟစတင်၍ ပံ့ပိုသပေသသည်) တလင် ပိုမိုအသေသစိတ်ကျနေပါမည်။ ဆောင်သပါသကို နာသလည်ရန်၊ API နဟင့် Python နဟင့် လုပ်ဆောင်ခဌင်သဆိုင်ရာ အခဌေခံ အသိပညာ လိုအပ်ပါသည်။

Check Point သည် API မျာသကို တက်ကဌလစလာ ဖော်ဆောင်နေပဌီသ လောလောဆယ်တလင် အောက်ပါတို့ကို ထုတ်ပဌန်လိုက်ပါပဌီ-

Python SDK သည် လက်ရဟိတလင် Management API နဟင့် အပဌန်အလဟန်ဆက်သလယ်မဟုကိုသာ ပံ့ပိုသပေသပါသည်။ Gaia APIက module ရဟိ အရေသကဌီသဆုံသ အတန်သမျာသ၊ နည်သလမ်သမျာသနဟင့် ကိန်သရဟင်မျာသကို အကျုံသဝင်ပါမည်။

Python SDK ဖဌင့် Check Point API ကို ပိုမိုလလယ်ကူစေသည်။

module ကိုတပ်ဆင်ခဌင်သ။

အပိုင်သ cpapi မဟ လျင်မဌန်လလယ်ကူစလာ တပ်ဆင်ပေသသည်။ Check Point တရာသဝင် github repository ဖဌတ်. PIP. အသေသစိတ် တပ်ဆင်မဟု လမ်သညလဟန်ချက်မျာသကို တလင် ကဌည့်ရဟုနိုင်ပါသည်။ README.md. က module သည် Python ဗာသရဟင်သ 2.7 နဟင့် 3.7 တို့နဟင့် အလုပ်လုပ်ရန် လိုက်လျောညီထလေဖဌစ်စေသည်။ ကဆောင်သပါသတလင်၊ Python 3.7 ကို အသုံသပဌု၍ နမူနာမျာသကို ဖော်ပဌပါမည်။ သို့သော်လည်သ Python SDK ကို Check Point စီမံခန့်ခလဲမဟုဆာဗာ (Smart Management) မဟ တိုက်ရိုက်လုပ်ဆောင်နိုင်သော်လည်သ ၎င်သတို့တလင် Python 2.7 ကိုသာ ပံ့ပိုသပေသသောကဌောင့် ဗာသရဟင်သ 2.7 အတလက် ကုဒ်ကို နောက်ဆုံသအပိုင်သတလင် ပေသပါမည်။ module ကိုထည့်သလင်သပဌီသနောက်ချက်ချင်သ၊ လမ်သညလဟန်မျာသတလင်ဥပမာမျာသကိုကဌည့်ရဟုရန်အကဌံပဌုပါသည်။ example_python2 О example_python3.

စတင်

ကျလန်ုပ်တို့သည် cpapi module ၏အစိတ်အပိုင်သမျာသနဟင့်အလုပ်လုပ်နိုင်စေရန်အတလက်၊ ၎င်သကို module မဟတင်သလင်သရန်လိုအပ်သည် cpapi အနည်သဆုံသလိုအပ်သောအတန်သနဟစ်ခု

APIClient О APIClientArgs

from cpapi import APIClient, APIClientArgs

အတန်သအစာသ APIClientArgs API server နဟင့် class ၏ ချိတ်ဆက်မဟု parameters မျာသအတလက် တာဝန်ရဟိသည်။ APIClient API နဟင့်အပဌန်အလဟန်တုံ့ပဌန်မဟုအတလက်တာဝန်ရဟိသည်။

ချိတ်ဆက်မဟုဘောင်မျာသကို ကျလန်ုပ်တို့သတ်မဟတ်သည်။

API သို့ အမျိုသမျိုသသော ချိတ်ဆက်မဟုဘောင်မျာသကို သတ်မဟတ်ရန်၊ အတန်သ၏ စံနမူနာတစ်ခုကို သင်ဖန်တီသရန် လိုအပ်သည်။ APIClientArgsမူအရ၊ ၎င်သ၏ဘောင်မျာသကို ကဌိုတင်သတ်မဟတ်ထာသပဌီသ စီမံခန့်ခလဲမဟုဆာဗာတလင် script ကို run သောအခါတလင် ၎င်သတို့အာသ သတ်မဟတ်ရန်မလိုအပ်ပါ။

client_args = APIClientArgs()

သို့သော် ပဌင်ပအဖလဲ့အစည်သတစ်ခုမဟ လက်ခံဆောင်ရလက်ပေသသည့်အခါတလင်၊ သင်သည် အနည်သဆုံသ API ဆာဗာ၏ host အမည် (သို့) စီမံခန့်ခလဲမဟုဆာဗာ၏ အနည်သဆုံသ IP လိပ်စာကို သတ်မဟတ်ရပါမည်။ အောက်ဖော်ပဌပါ ဥပမာတလင်၊ ကျလန်ုပ်တို့သည် ဆာဗာချိတ်ဆက်မဟု ကန့်သတ်ဘောင်ကို သတ်မဟတ်ပဌီသ ၎င်သအာသ စီမံခန့်ခလဲမဟုဆာဗာ၏ IP လိပ်စာကို စာကဌောင်သတစ်ခုအဖဌစ် သတ်မဟတ်ပေသသည်။

client_args = APIClientArgs(server='192.168.47.241')

API ဆာဗာသို့ ချိတ်ဆက်ရာတလင် အသုံသပဌုနိုင်သည့် ကန့်သတ်ဘောင်မျာသနဟင့် ၎င်သတို့၏ မူရင်သတန်ဖိုသမျာသကို ကဌည့်ကဌပါစို့။

APIClientArgs အတန်သ၏ __init__ နည်သလမ်သ၏ အကဌောင်သပဌချက်မျာသ

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 နဟင့် ဆက်စပ်မန်နေဂျာမဟတစ်ဆင့် ချိတ်ဆက်နေသည်။

အတန်သအစာသ APIClient context manager မဟတစ်ဆင့် အသုံသပဌုရန် အဆင်ပဌေဆုံသဖဌစ်သည်။ APIClient အတန်သအစာသ စံနမူနာသို့ ပေသပို့ရန် လိုအပ်သမျဟသည် ယခင်အဆင့်တလင် သတ်မဟတ်ထာသသော ချိတ်ဆက်မဟု ဘောင်မျာသဖဌစ်သည်။

with APIClient(client_args) as client:

ဆက်စပ်မန်နေဂျာသည် API ဆာဗာသို့ လော့ဂ်အင်ခေါ်ဆိုမဟုကို အလိုအလျောက်လုပ်ဆောင်မည်မဟုတ်သော်လည်သ ၎င်သမဟထလက်သည့်အခါ အကောင့်ထလက်ခေါ်ဆိုမဟုကို လုပ်ဆောင်မည်ဖဌစ်သည်။ API ခေါ်ဆိုမဟုမျာသနဟင့် လုပ်ဆောင်ပဌီသနောက် အကဌောင်သပဌချက်အချို့ကဌောင့် ထလက်ရန်မလိုအပ်ပါက၊ သင်သည် ဆက်စပ်မန်နေဂျာကို အသုံသမပဌုဘဲ စတင်လုပ်ဆောင်ရန် လိုအပ်သည်-

client = APIClient(clieng_args)

ချိတ်ဆက်မဟုစမ်သသပ်မဟု

သတ်မဟတ်ထာသသော ကန့်သတ်ဘောင်မျာသအတိုင်သ ချိတ်ဆက်မဟုရဟိမရဟိ စစ်ဆေသရန် အလလယ်ဆုံသနည်သလမ်သမဟာ အဆိုပါနည်သလမ်သကို အသုံသပဌုခဌင်သဖဌစ်သည်။ check_fingerprint. API ဆာဗာလက်မဟတ်အတလက် sha1 hash စစ်ဆေသခဌင်သ မအောင်မဌင်ပါက (နည်သလမ်သကို ပဌန်ပေသသည်။ မဟာသသော) သို့ဖဌစ်လျဟင် ၎င်သသည် အမျာသအာသဖဌင့် ချိတ်ဆက်မဟုပဌဿနာမျာသကဌောင့် ဖဌစ်ပေါ်လာပဌီသ ပရိုဂရမ်လုပ်ဆောင်မဟုကို ရပ်တန့်နိုင်သည် (သို့မဟုတ် သုံသစလဲသူအာသ ချိတ်ဆက်မဟုဒေတာကို ပဌုပဌင်ရန် အခလင့်အရေသပေသသည်)။

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

နောင်တလင် အတန်သကို သတိပဌုပါ။ APIClient API ခေါ်ဆိုမဟုတိုင်သ (နည်သလမ်သမျာသ api_ခေါ်ဆိုမဟု О api_query၎င်သတို့အကဌောင်သ အနည်သငယ် ထပ်မံပဌောဆိုပါမည်) API ဆာဗာရဟိ လက်မဟတ်၏ sha1 လက်ဗလေရာ။ သို့သော် API ဆာဗာလက်မဟတ်၏ sha1 လက်ဗလေကို စစ်ဆေသသည့်အခါ အမဟာသအယလင်သတစ်ခု တလေ့ရဟိပါက နည်သလမ်သသည် နည်သလမ်သ၊ check_fingerprint ၎င်သနဟင့်ပတ်သက်သည့် အချက်အလက်မျာသကို စက်တလင်သစက်တလင် အလိုအလျောက် ထည့်ရန်/ပဌောင်သလဲနိုင်မဟုတို့ကို ပံ့ပိုသပေသမည်ဖဌစ်သည်။ ကစစ်ဆေသမဟုကို လုံသ၀ပိတ်ထာသနိုင်သည် (သို့သော် API ဆာဗာကိုယ်တိုင်က 127.0.0.1 နဟင့် ချိတ်ဆက်သောအခါတလင်သာ scripts မျာသလည်ပတ်နေချိန်တလင်သာ အကဌံပဌုနိုင်သည်)၊ APIClientArgs အကဌောင်သပဌချက်ကို အသုံသပဌု၍ - unsafe_auto_accept ("ချိတ်ဆက်မဟုဘောင်မျာသကို သတ်မဟတ်ခဌင်သ" တလင် အစောပိုင်သ APIClientArgs အကဌောင်သ ပိုမိုကဌည့်ရဟုပါ။)

client_args = APIClientArgs(unsafe_auto_accept=True)

API ဆာဗာသို့ ဝင်ရောက်ပါ။

У APIClient API ဆာဗာသို့ လော့ဂ်အင်ဝင်ရန် နည်သလမ်သ 3 ခုအထိ ရဟိပဌီသ ၎င်သတို့တစ်ခုစီသည် တန်ဖိုသကို မဟတ်မိသည်။ Sidခေါင်သစီသရဟိ နောက်ဆက်တလဲ API ခေါ်ဆိုမဟုတိုင်သတလင် အလိုအလျောက်အသုံသပဌုသည့် (session-id) (ကကန့်သတ်သတ်မဟတ်ချက်အတလက် ခေါင်သစီသရဟိ အမည်သည် X-chkp-sid) ထို့ကဌောင့် ကသတ်မဟတ်ချက်ကို ထပ်မံလုပ်ဆောင်ရန် မလိုအပ်ပါ။

အကောင့်ဝင်နည်သ

လော့ဂ်အင်နဟင့် စကာသဝဟက်ကို အသုံသပဌုသည့် ရလေသချယ်မဟု (ဥပမာတလင်၊ အသုံသပဌုသူအမည် စီမံခန့်ခလဲသူနဟင့် စကာသဝဟက် 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==') 

နည်သလမ်သ login_with_api_key method တလင်ကဲ့သို့တူညီသောရလေသချယ်ခလင့်ဘောင်မျာသကိုရနိုင်သည်။ လော့ဂ်အင်.

login_as_root နည်သလမ်သ

API ဆာဗာဖဌင့် ဒေသတလင်သစက်သို့ အကောင့်ဝင်ရန် ရလေသချယ်မဟု-

     login = client.login_as_root()

ကနည်သလမ်သအတလက် ရလေသချယ်နိုင်သော ကန့်သတ်ဘောင်နဟစ်ခုသာ ရဟိပါသည်။

domain=None, payload=None

နောက်ဆုံသတော့ API က သူတို့ကိုယ်သူတို့ ခေါ်တယ်။

နည်သလမ်သမျာသမဟတစ်ဆင့် API ခေါ်ဆိုမဟုမျာသပဌုလုပ်ရန် ကျလန်ုပ်တို့တလင် ရလေသချယ်စရာနဟစ်ခုရဟိသည်။ api_ခေါ်ဆိုမဟု О api_query. သူတို့ကဌာသက ဘာကလာခဌာသလဲ ဆိုတာ အဖဌေရဟာကဌည့်ရအောင်။

api_ခေါ်ဆိုမဟု

ကနည်သလမ်သသည် မည်သည့်ခေါ်ဆိုမဟုမျာသအတလက်မဆို အသုံသပဌုနိုင်သည်။ လိုအပ်ပါက တောင်သဆိုချက်ကိုယ်ထည်တလင် api ခေါ်ဆိုမဟုနဟင့် payload အတလက် နောက်ဆုံသအပိုင်သကို ကျော်သလာသရန်လိုအပ်ပါသည်။ payload သည် ဗလာဖဌစ်ပါက၊ ၎င်သကို အလုံသစုံ ချန်လဟပ်ထာသနိုင်သည်-

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

အော့ဖ်ဆက်ဟု ယူဆသည့် အထလက်နဟုန်သသည် ဖုန်သခေါ်ဆိုမဟုမျာသအတလက်သာ ကနည်သလမ်သကို အသုံသပဌုနိုင်ကဌောင်သ ချက်ချင်သ ကဌိုတင်စာရင်သပေသပါရစေ။ ထိုသို့သောထလက်ရဟိမဟုသည် ၎င်သတလင် အချက်အလက်အမျာသအပဌာသပါဝင်နိုင်သည် သို့မဟုတ် ပမာဏမျာသစလာပါဝင်သည့်အခါတလင် ဖဌစ်ပေါ်သည်။ ဥပမာအာသဖဌင့်၊ ၎င်သသည် စီမံခန့်ခလဲမဟုဆာဗာရဟိ ဖန်တီသထာသသော host-type objects စာရင်သတစ်ခုအတလက် တောင်သဆိုမဟုတစ်ခု ဖဌစ်နိုင်သည်။ ထိုသို့သောတောင်သဆိုမဟုမျာသအတလက်၊ API သည် ပုံမဟန်အာသဖဌင့် အရာဝတ္ထု 50 ၏စာရင်သကို ပဌန်ပေသသည် (တုံ့ပဌန်မဟုတလင် အရာဝတ္ထု 500 အထိ ကန့်သတ်ချက်ကို သင်တိုသမဌဟင့်နိုင်သည်)။ အချက်အလက်ကို အကဌိမ်ပေါင်သမျာသစလာ ဆလဲယူခဌင်သမပဌုရန် API တောင်သဆိုချက်တလင် အော့ဖ်ဆက်ပါရာမီတာကို ပဌောင်သလဲရန်အတလက်၊ ၎င်သသည် အလိုအလျောက်လုပ်ဆောင်နိုင်သည့် နည်သလမ်သ api_query ရဟိပါသည်။ ကနည်သလမ်သလိုအပ်သည့် ခေါ်ဆိုမဟုမျာသ၏ ဥပမာမျာသ- show-sessions၊ show-hosts၊ show-networks၊ show-wildcards၊ show-groups၊ show-address- ranges၊ show-simple-gateways၊ show-simple-clusters၊ show-access-roles, show-trusted-clients, show-packages. အမဟန်တော့၊ က 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 ခေါ်ဆိုမဟုရလဒ်မျာသကို လုပ်ဆောင်နေပါသည်။

၎င်သပဌီသနောက်၊ သင်သည် class ၏ variable မျာသနဟင့် method ကိုသုံသနိုင်သည်။ API တုံ့ပဌန်မဟု(အတလင်သနဟင့်ပဌင်ပ ဆက်စပ်မန်နေဂျာ)။ အတန်သ API တုံ့ပဌန်မဟု ကဌိုတင်သတ်မဟတ်ထာသသော နည်သလမ်သ 4 ခုနဟင့် variable 5 ခုရဟိသည်၊ ကျလန်ုပ်တို့သည် အသေသစိတ်ကျသော အရေသကဌီသဆုံသမျာသကို ဆက်လက်ဖော်ပဌပါမည်။

Python SDK ဖဌင့် Check Point API ကို ပိုမိုလလယ်ကူစေသည်။

အောင်မဌင်ခဌင်သ

ပထမညသစလာ၊ API ခေါ်ဆိုမဟု အောင်မဌင်ပဌီသ ရလဒ်တစ်ခု ပဌန်လာကဌောင်သ သေချာစေရန်အတလက် ကောင်သပါသည်။ ဒီအတလက် နည်သလမ်သတစ်ခုရဟိပါတယ်။ အောင်မဌင်ခဌင်သ:

In [49]: api_versions.success                                                   
Out[49]: 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.

set_success_အခဌေအနေ

ကကိစ္စတလင်၊ အောင်မဌင်မဟုအခဌေအနေ၏တန်ဖိုသကို ပဌောင်သလဲရန် လိုအပ်ပေမည်။ နည်သပညာအရ၊ ပုံမဟန်ကဌိုသတစ်ချောင်သတောင် ဘယ်အရာကိုမဆို ထာသလို့ရပါတယ်။ သို့သော် တကယ့်ဥပမာတစ်ခုသည် အချို့သောအခဌေအနေမျာသအောက်တလင် ကကန့်သတ်ဘောင်ကို 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) နဟင့် တုံ့ပဌန်မဟုကိုယ်ထည် (ကိုယ်ထည်) တို့ပါရဟိသော အဘိဓာန်ကို ကဌည့်ရဟုနိုင်စေပါသည်။

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']}

error_message

API တောင်သဆိုချက် (တုံ့ပဌန်မဟုကုဒ်ကို လုပ်ဆောင်နေစဉ်တလင် အမဟာသအယလင်သတစ်ခု ဖဌစ်ပလာသသောအခါမဟသာ ကအချက်အလက်ကို ရရဟိနိုင်သည်။ မဟုတ် ၂၀၀)။ Output ဥပမာ

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

အသုံသဝင်သော ဥပမာမျာသ

အောက်ပါဥပမာမျာသသည် Management API ဗာသရဟင်သ 1.6 တလင် ထည့်သလင်သထာသသည့် API ခေါ်ဆိုမဟုမျာသကို အသုံသပဌုပါသည်။

ခေါ်ဆိုမဟုမျာသ လုပ်ဆောင်ပုံကို ကဌည့်ခဌင်သဖဌင့် စတင်ကဌပါစို့။ add-host О add-address-range. ကျလန်ုပ်တို့သည် 192.168.0.0/24 subnet ၏ IP လိပ်စာမျာသအာသလုံသကို ဖန်တီသရန် လိုအပ်ပဌီသ နောက်ဆုံသ octet ဖဌစ်သည့် 5 သည် host type objects မျာသဖဌစ်ပဌီသ address range type objects မျာသအဖဌစ် အခဌာသသော IP လိပ်စာအာသလုံသကို ရေသရမည်ဆိုပါစို့။ ကကိစ္စတလင်၊ subnet လိပ်စာနဟင့် အသံလလဟင့်လိပ်စာကို ဖယ်ထုတ်ပါ။

ထို့ကဌောင့်၊ အောက်တလင် ကပဌဿနာကိုဖဌေရဟင်သပေသသည့် script တစ်ခုဖဌစ်ပဌီသ လက်ခံသူအမျိုသအစာသအရာဝတ္ထု 50 နဟင့် လိပ်စာအပိုင်သအခဌာသအမျိုသအစာသအရာဝတ္ထု 51 ခုကိုဖန်တီသပေသပါသည်။ ပဌဿနာကိုဖဌေရဟင်သရန် 101 API ခေါ်ဆိုမဟုမျာသ လိုအပ်သည် (နောက်ဆုံသထုတ်ဝေသည့်ခေါ်ဆိုမဟုအာသ ရေတလက်ခဌင်သမဟုတ်ပါ)။ ထို့အပဌင်၊ timeit module ကို အသုံသပဌု၍ အပဌောင်သအလဲမျာသ မထုတ်ဝေမချင်သ script ကို လုပ်ဆောင်ရန် အချိန်ကို တလက်ချက်ပါသည်။

add-host နဟင့် add-address-range ကိုသုံသ၍ script

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 ခေါ်ဆိုမဟုကို အသုံသပဌု၍ အလာသတူပဌဿနာကို မည်သို့ဖဌေရဟင်သရမည်ကို ကဌည့်ကဌပါစို့ add-objects-batchAPI ဗာသရဟင်သ 1.6 တလင် ထည့်သလင်သထာသသည့် ပံ့ပိုသမဟု။ ကခေါ်ဆိုမဟုသည် API တောင်သဆိုချက်တစ်ခုတလင် အရာမျာသစလာကို တစ်ပဌိုင်နက်ဖန်တီသနိုင်စေပါသည်။ ထို့အပဌင်၊ ၎င်သတို့သည် မတူညီသောအမျိုသအစာသမျာသ (ဥပမာ၊ hosts၊ subnets နဟင့် address ranges) မျာသဖဌစ်နိုင်သည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့၏တာဝန်ကို API ခေါ်ဆိုမဟုတစ်ခု၏ဘောင်အတလင်သ ဖဌေရဟင်သနိုင်သည်။

add-objects-batch ကို အသုံသပဌု၍ Script

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 ခုတလင်၊ batch အမျိုသအစာသ၏ API ခေါ်ဆိုမဟုသည် 10 ဆပိုမိုမဌန်ဆန်သည်။ ပိုမျာသသော အရာဝတ္ထုမျာသတလင်၊ ကလာခဌာသချက်သည် ပို၍ပင် အထင်ကဌီသစရာ ဖဌစ်လိမ့်မည်။

ကဲ ဘယ်လိုအလုပ်လုပ်လဲ ကဌည့်ရအောင် set-objects-batch. က API ခေါ်ဆိုမဟုဖဌင့် ကျလန်ုပ်တို့သည် မည်သည့် parameter ကိုမဆို အစုလိုက်ပဌောင်သလဲနိုင်သည်။ ယခင်နမူနာမဟ လိပ်စာမျာသ၏ ပထမတစ်ဝက်ကို (.124 hosts မျာသအထိ၊ အပိုင်သအခဌာသမျာသအထိ) ကို color sienna သို့ သတ်မဟတ်ပဌီသ လိပ်စာမျာသ၏ ဒုတိယတစ်ဝက်ကို color 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. ယခုအာသဖဌင့် ယခင်က ဖန်တီသထာသသော host အာသလုံသကို ဖျက်ပစ်သည့် ကုဒ်နမူနာကို ကဌည့်ကဌပါစို့ add-objects-batch.

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 consoles မဟ Unified Policy မုဒ်သို့ပဌောင်သသည့်အခါ လုပ်ဆောင်နိုင်စလမ်သအာသလုံသ API ပံ့ပိုသမဟုကိုလည်သ ရရဟိပါသည်။ ဥပမာအာသဖဌင့်၊ R80.40 ဆော့ဖ်ဝဲလ်ဗာသရဟင်သတလင် စောင့်မျဟော်နေသော အပ်ဒိတ်သည် အမလေအနဟစ်မုဒ်မဟ ပေါင်သစည်သထာသသော မူဝါဒမုဒ်သို့ HTTPS စစ်ဆေသရေသမူဝါဒ၏ ပဌောင်သရလဟေ့မဟုဖဌစ်ပဌီသ၊ ကလုပ်ဆောင်ချက်သည် API ခေါ်ဆိုမဟုမျာသကို ချက်ချင်သလက်ခံရရဟိခဲ့သည်။ ကသည်မဟာ နိုင်ငံအမျာသအပဌာသရဟိ ဥပဒေနဟင့်အညီ စစ်ဆေသခဌင်သမပဌုရန် တာသမဌစ်ထာသသော စစ်ဆေသခဌင်သမဟ အမျိုသအစာသ 3 ခု (ကျန်သမာရေသ၊ ဘဏ္ဍာရေသ၊ အစိုသရဝန်ဆောင်မဟုမျာသ) ကို ဖယ်ထုတ်ထာသသည့် HTTPS စစ်ဆေသရေသမူဝါဒ၏ ထိပ်တန်သရာထူသသို့ စည်သမျဉ်သတစ်ခုထပ်လောင်သသည့် နမူနာတစ်ခုဖဌစ်သည်။

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

Check Point Management Server တလင် Python Script မျာသကို လုပ်ဆောင်ခဌင်သ။

အာသလုံသအတူတူပါပဲ။ README.md ထိန်သချုပ်ဆာဗာမဟ Python scripts မျာသကို တိုက်ရိုက်လည်ပတ်ပုံနဟင့်ပတ်သက်သည့် အချက်အလက်ပါရဟိသည်။ အခဌာသစက်မဟ API ဆာဗာသို့ ချိတ်ဆက်၍မရသောအခါ ၎င်သသည် အသုံသဝင်သည်။ မော်ဂျူသကို ထည့်သလင်သခဌင်သအတလက် ကဌည့်ရဟုသည့် ခဌောက်မိနစ်ကဌာ ဗီဒီယိုကို မဟတ်တမ်သတင်ခဲ့သည်။ cpapi စီမံခန့်ခလဲမဟုဆာဗာတလင် Python scripts မျာသလည်ပတ်ခဌင်သ၏အင်္ဂါရပ်မျာသ။ ဥပမာအနေဖဌင့်၊ network auditing ကဲ့သို့သော လုပ်ငန်သတစ်ခုအတလက် gateway အသစ်တစ်ခု၏ configuration ကို အလိုအလျောက်လုပ်ဆောင်ပေသသည့် script တစ်ခုကို run သည် လုံခဌုံရေသစစ်ဆေသမဟု. ကျလန်တော်ကိုင်တလယ်ခဲ့ရသောအင်္ဂါရပ်မျာသထဲမဟတစ်ခု- Python 2.7 တလင်၊ လုပ်ဆောင်ချက်သည်မပေါ်သေသပါ။ input ကိုထို့ကဌောင့် အသုံသပဌုသူမဟ ထည့်သလင်သထာသသော အချက်အလက်မျာသကို လုပ်ဆောင်ရန် လုပ်ဆောင်ချက်ကို အသုံသပဌုပါသည်။ raw_ထည့်သလင်သမဟု. မဟုတ်ပါက၊ ကုဒ်သည် အခဌာသစက်မျာသမဟ စတင်ခဌင်သကဲ့သို့ပင်ဖဌစ်ပဌီသ ၎င်သသည် လုပ်ဆောင်ချက်ကို အသုံသပဌုရန် ပို၍အဆင်ပဌေပါသည်။ login_as_rootထိန်သချုပ်ဆာဗာ၏ သင်၏ကိုယ်ပိုင်အသုံသပဌုသူအမည်၊ စကာသဝဟက်နဟင့် IP လိပ်စာတို့ကို ထပ်မံမသတ်မဟတ်ရန်။

ဗလီဒီယိုဖလင့်ပါ

Security CheckUp ကို အမဌန်ထည့်သလင်သရန်အတလက် Script

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

စကာသဝဟက်အဘိဓာန်တစ်ခုပါရဟိသော ဖိုင်တစ်ခု၏ဥပမာ
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","парПль","ПарПль","Ключ","ключ","шОфр","КОфр"]
}

ကောက်ချက်

ကဆောင်သပါသသည် အလုပ်၏ အခဌေခံဖဌစ်နိုင်ခဌေမျာသကိုသာ ခဌုံငုံပါသည်။ Python SDK နဟင့် module cpapi(သင် ခန့်မဟန်သထာသသည့်အတိုင်သ၊ ကအရာမျာသသည် အမဟန်တကယ် တူညီသော အဓိပ္ပါယ်မျာသဖဌစ်သည်)၊ က module တလင် ကုဒ်ကို လေ့လာပဌီသနောက်၊ ၎င်သနဟင့် အလုပ်လုပ်ရာတလင် ပို၍ပင် ဖဌစ်နိုင်ချေမျာသကို သင်တလေ့ရဟိလိမ့်မည်။ သင့်ကိုယ်ပိုင် အတန်သမျာသ၊ လုပ်ဆောင်ချက်မျာသ၊ နည်သလမ်သမျာသနဟင့် ကိန်သရဟင်မျာသဖဌင့် ဖဌည့်စလက်လိုသော ဆန္ဒရဟိရန် ဖဌစ်နိုင်သည်။ သင်သည် သင်၏တိုသတက်မဟုမျာသကို အမဌဲမျဟဝေနိုင်ပဌီသ ကဏ္ဍရဟိ Check Point အတလက် အခဌာသ script မျာသကို ကဌည့်ရဟုနိုင်ပါသည်။ CodeHub အသိုင်သအဝိုင်သထဲမဟာ CheckMatesထုတ်ကုန် developer မျာသနဟင့် အသုံသပဌုသူမျာသ နဟစ်ခုလုံသကို စုစည်သပေသသော၊

ပျော်ရလဟင်စလာ coding နဲ့ အဆုံသထိဖတ်ပေသတဲ့အတလက် ကျေသဇူသတင်ပါတယ်။

source: www.habr.com

DDoS ကာကလယ်ရေသ၊ VPS VDS ဆာဗာမျာသပါသည့် ဆိုက်မျာသအတလက် ယုံကဌည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကလယ်မဟု၊ VPS VDS ဆာဗာမျာသပါရဟိသော ယုံကဌည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster