def download_file(sessionID): '''GET''' # url = "http://127.0.0.1:8000/ITMCP/v1/download/files/(?P<filename>([^/]+))" url = "http://127.0.0.1:8000/ITMCP/v1/download/files/" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } r = requests.get(url, headers=headers) print "------------------------------------------------------" print "api:", url print print "case 1: download/files/" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print r = requests.get(url + filename, headers=headers) print "api:", url print print "case 2: download/files/filaname" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print "download_file done!"
def eas_anomaly(sessionID): '''GET''' # url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID + "/anomalies/(?P<anomalyID>([^/]+))" url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_BJ + "/anomalies" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } r = requests.get(url, headers=headers) print "------------------------------------------------------" print "api:", url print print "case 1: anomalies" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print anomalyID = "a1075029-e5b9-4e9c-a009-1381b70f1637" r = requests.get(url + "/" + anomalyID, headers=headers) print "api:", url print print "case 2: anomalies/anomalyID" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print "eas_anomaly done!"
def x_scores(sessionID): ''' GET default: all scores, 1 specify pk, return the corresponding pk-score, 5 ''' # no specific # url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID + "/scores/(?P<pk>(arsScores)|(mrsScores)|(ersScores)|(weights)|(riskLevel))" # url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID + "/scores" url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_BJ + "/scores" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } r = requests.get(url, headers=headers) print "------------------------------------------------------" print "api:", url print print "case 1: x_scores" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) # if dat["status"] == 0 and dat["sessionTimeout"] == 3600: if dat["status"] == 0: print True else: print False print
def anomaliesSummary(sessionID): '''POST''' time_now = time.mktime(datetime.datetime.now().timetuple()) url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_BJ + "/anomaliesSummary/eas" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } data = { "filter": [{ "type": 3, "value": ["*"] }], "startTimestamp": 1607097600, "endTimestamp": 1607702400, "page": 1, "pageSize": 20 } r = requests.post(url, headers=headers, json=data) print "------------------------------------------------------" print "api:", url print print "case 1: anomaliesSummary/eas" print "\t", "POST:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print
def post_checkin(self): time_now = time.mktime(datetime.datetime.now().timetuple()) url = session_url password = hashlib.sha256(username).hexdigest() hash_str = hashlib.sha256(username + str(int(time_now)) + password).hexdigest() passwordHash = base64.b64encode(hash_str)[:12] body = { "username": username, "timestamp": int(time_now), "passwordHash": passwordHash, "deviceType": 1, "connectionType": 0 } res = requests.post(url, json=body) print "-" * 50 print "POST ", "API: ", "check-in", res.status_code, url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50 return data["sessionID"]
def eas_report(sessionID): '''POST''' url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_BJ + "/report/eas" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } data = { "filter": [{ "type": 3, "value": ["*"] }], "startTimestamp": 1607616000, "endTimestamp": 1608220800, "top": 5 } r = requests.post(url, headers=headers, json=data) print "------------------------------------------------------" print "api:", url print print "case 1: report/eas" print "\t", "POST:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print ID = "cc9e52e6-39b4-4b03-819b-0dcbeac5c5af" r = requests.post(url + "/" + ID, headers=headers, json=data) print "api:", url print print "case 2: report/eas/ID" print "\t", "POST:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print "eas_report done!"
def keppalive(self): res = requests.get(self.url, headers=headers) print "-" * 50 print "GET ", "API: ", "login-out", res.status_code print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def delete_register(self): res = requests.delete(self.url, headers=headers) print "-" * 50 print "DELETE ", "API: ", "register", res.status_code, self.url print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def get_easParameters(self): res = requests.get(self.url, headers=headers) print "-" * 50 print "GET ", "API: ", "eas-parameters", res.status_code, self.url print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def print_info(type, verbose, res, url, body): print "+" + "-" * 100 + "+" print "%s " % type, "API: ", "%s" % verbose, res.status_code, url if type == "POST": print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "+" + "-" * 100 + "+"
def get_configurations(self): url = device_url + "/configurations" res = requests.get(url, headers=headers) print "-" * 50 print "GET ", "API: ", "configurations", res.status_code, url print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def get_ersVersion(self): self.url = self.url + "/version" res = requests.get(self.url, headers=headers) print "-" * 50 print "GET ", "API: ", "ers-models", res.status_code, self.url print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def eas_parameters(sessionID): '''GET/POST''' # url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID + "/eas/parameters/(?P<paramID>([^/]+))" url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_CD + "/eas/parameters" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } data = { "parameters": { "66a84d56-c747-998a-709e-b2b159a4cd86_86eb7d08-3cf5-4455-9f05-12fed955e142": { "name": { "en": "TEST-PARAMETER", "zh": "测试" }, "values": ["172.22.118.1", "1.1.1.1"], "key": "TEST", "type": "user-set", "inputType": 1, "description": { "en": "Define remote service applications. You can add multiple applications, use a comma to separate multiple items.", "zh": "测试" } } } } # r1 = requests.get(url, headers=headers) r2 = requests.post(url, headers=headers, json=data) # print "------------------------------------------------------" # print "api:", url # print # print "case 1: eas/parameters" # print "\t", "GET:", r1.status_code # print "\t", r1.content # dat = json_loads_byteified(r1.content) # if dat["status"] == 0: # print True # else: # print False print "api:", url print "case 2: eas/parameters" print "\t", "POST:", r2.status_code print "\t", r2.content dat = json_loads_byteified(r2.content) if dat["status"] == 0: print True else: print False print
def post_file(self): body = {"filename": filename} res = requests.post(self.url, headers=headers, json=body) print "-" * 50 print "POST ", "API: ", "upload-file", res.status_code, self.url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def post_mrs_tasks(self): body = {"chosenGroups": [], "action": 5} res = requests.post(self.url, headers=headers, json=body) print "-" * 50 print "POST ", "API: ", "mrs-tasks", res.status_code, self.url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def login_out(sessionID): # url = "http://172.22.118.99:8080/ITMCP/v1/sessions/" + sessionID url = "http://127.0.0.1:8000/ITMCP/v1/sessions/" + sessionID headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ":" + sessionID) } r = requests.get(url, headers=headers) print "------------------------------------------------------" print "api:", url print print "case 1: keeplive-normal" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0 and dat["sessionTimeout"] == 3600: print True else: print False print # url = "http://172.22.118.99:8080/ITMCP/v1/sessions/" + sessionID url = "http://127.0.0.1:8000/ITMCP/v1/sessions/" + sessionID headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ":" + sessionID) } r = requests.delete(url, headers=headers) print "case 2: checkout" print "\t", "DELETE:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0 and dat["username"] == username and dat[ "sessionID"] == sessionID: print True else: print False print "keeplive done!"
def post_ersModels(self): """upload ers model,add""" body = {"filename": "filename.zip"} res = requests.post(self.url, headers=headers, json=body) print "-" * 50 print "POST ", "API: ", "ers-models", res.status_code, self.url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def delete_ersModels(self): """delete ers model""" body = {"modelID_list": []} res = requests.delete(self.url, headers=headers, json=body) print "-" * 50 print "DELETE ", "API: ", "ers-models", res.status_code, self.url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def get_blacklist(self): """return blacklist info""" # e.g. ars/blacklists self.url = self.url + "ars/blacklists" res = requests.get(self.url, headers=headers) print "-" * 50 print "GET ", "API: ", "conf-xrs", res.status_code, self.url print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def get_easParameters(self, headers, paramID=None): print "+" + "-" * 100 + "+" if not paramID: res = requests.get(self.url, headers=headers) print "GET ", "API: ", "eas-parameters", res.status_code, self.url else: self.url = self.url + '/' + paramID res = requests.get(self.url, headers=headers) print "GET ", "API: ", "eas-parameters", res.status_code, self.url print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "+" + "-" * 100 + "+"
def get_easAnomaly(self, anomalyID=None): url = device_url + "/anomalies" print "-" * 50 if not anomalyID: res = requests.get(url, headers=headers) print "GET ", "API: ", "eas-anomaly", res.status_code, url else: res = requests.get(url + "/" + anomalyID, headers=headers) print "GET ", "API: ", "eas-anomaly", res.status_code, url print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def post_register(self): body = { "deviceID": deviceID_CD, "deviceName": "test-ucss", "logSources": [] } res = requests.post(self.url, headers=headers, json=body) print "-" * 50 print "POST ", "API: ", "register", res.status_code, self.url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def post_confMrs(self): body = { "chosenDLPPolicies": [], "interval": 7200, "blacklist": [{ "type": 1, "value": [] }, { "type": 2, "value": [] }, { "type": 3, "value": [] }, { "type": 4, "value": [] }, { "type": 5, "value": [] }], "topN": 0, "version": 0, "uploadToLab": True, "retrospectiveDays": 7 } self.url = self.url + "mrs" res = requests.post(self.url, headers=headers, json=body) print "-" * 50 print "POST ", "API: ", "conf-xrs", res.status_code, self.url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def configurations(sessionID): # url = "http://172.22.118.99:8080/ITMCP/v1/devices/" + deviceID + "/configurations" url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_CD + "/configurations" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } r = requests.get(url, headers=headers) print "------------------------------------------------------" print "api:", url print print "case 1: normal" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print "configurations done!"
def mrs_tasks(sessionID): # url = "http://172.22.118.99:8080/ITMCP/v1/devices/" + deviceID + "/tasks/mrs/mrs-task-id" url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_CD + "/tasks/mrs/04a38d73-d3eb-4e39-9278-284ab8e700c3" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } data = {"chosenGroups": ["all"], "action": 5} r = requests.post(url, headers=headers, json=data) print "api:", url print print "case 1: mrs_tasks" print "\t", "POST:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) # if dat["status"] == 0 and dat["sessionTimeout"] == 3600: if dat["status"] == 0: print True else: print False print "mrs_tasks done!"
def data_info(sessionID): '''GET''' # url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID + "/data/info" url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_BJ + "/data/info" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } r = requests.get(url, headers=headers) print "------------------------------------------------------" print "api:", url print print "case 1: data_info" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print "data_info done!"
def tasks_status(sessionID): '''GET''' # url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID + "/tasks/mrs" url = "http://127.0.0.1:8000/ITMCP/v1/devices/" + deviceID_BJ + "/tasks/mrs" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID) } r = requests.get(url, headers=headers) print "-" * 50 print "api:", url print print "case 1: tasks_status" print "\t", "GET:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) # if dat["status"] == 0 and dat["sessionTimeout"] == 3600: if dat["status"] == 0: print True else: print False print "task_status done!"
def post_confArs(self): body = { "subsystems": [], "interval": 7200, "chosenGroups": [], "blacklist": [{ "type": 1, "value": [] }, { "type": 2, "value": [] }, { "type": 3, "value": [] }, { "type": 4, "value": [] }, { "type": 5, "value": [] }], "topN": 0, "version": 0 } self.url = self.url + "ars" res = requests.post(self.url, headers=headers, json=body) print "-" * 50 print "POST ", "API: ", "conf-xrs", res.status_code, self.url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50
def upload_file(sessionID): '''POST''' # url = "http://127.0.0.1:8000/ITMCP/v1/upload/files/(?P<filename>([^/]+))" url = "http://127.0.0.1:8000/ITMCP/v1/upload/files/" headers = { 'Authorization': 'basic ' + base64.b64encode(clientIP + ':' + sessionID), 'content-type': 'application/json' } data = {"filename": filename} r = requests.post(url, headers=headers, json=data) print "------------------------------------------------------" print "api:", url print print "case 1: upload" print "\t", "POST:", r.status_code print "\t", r.content dat = json_loads_byteified(r.content) if dat["status"] == 0: print True else: print False print "upload_file done!"
def post_itmConfigs(self): body = { "ars": { "subsystems": [], "interval": 7200, "chosenGroups": [], "blacklist": [{ "type": 1, "value": [] }, { "type": 2, "value": [] }, { "type": 3, "value": [] }, { "type": 4, "value": [] }, { "type": 5, "value": [] }], "topN": 0, "version": 0 }, "mrs": { "chosenDLPPolicies": [], "interval": 7200, "blacklist": [{ "type": 1, "value": [] }, { "type": 2, "value": [] }, { "type": 3, "value": [] }, { "type": 4, "value": [] }, { "type": 5, "value": [] }], "topN": 0, "version": 0, "uploadToLab": True, "retrospectiveDays": 7 }, "ers": { "interval": 7200, "ChosenModels": [], "modelParameterMap": [], "blacklist": [{ "type": 1, "value": [] }, { "type": 2, "value": [] }, { "type": 3, "value": [] }, { "type": 4, "value": [] }, { "type": 5, "value": [] }], "topN": 0, "version": 1 } } res = requests.post(self.url, headers=headers, json=body) print "-" * 50 print "POST ", "API: ", "itm-configs", res.status_code, self.url print "[BODY] ", body print "[DATA] ", res.content data = json_loads_byteified(res.content) if data["status"] == 0: print True else: print False print "-" * 50