xbase-util 0.6.7__tar.gz → 0.6.9__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {xbase_util-0.6.7 → xbase_util-0.6.9}/PKG-INFO +1 -1
- {xbase_util-0.6.7 → xbase_util-0.6.9}/setup.py +1 -1
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/packet_util.py +22 -21
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/xbase_util.py +3 -3
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util.egg-info/PKG-INFO +1 -1
- {xbase_util-0.6.7 → xbase_util-0.6.9}/README.md +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/setup.cfg +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/__init__.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/add_column_util.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/dangerous_util.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/__init__.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/bean/ConfigBean.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/bean/CurrentConfigBean.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/bean/FlowBean.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/bean/TaskTemplateBean.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/bean/__init__.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/dao/ConfigDao.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/dao/CurrentConfigDao.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/dao/FlowDao.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/dao/TaskTemplateDao.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/dao/__init__.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/db/initsqlite3.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/es_db_util.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/esreq.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/geo_util.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/handle_features_util.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/pcap_util.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/segment.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util/xbase_constant.py +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util.egg-info/SOURCES.txt +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util.egg-info/dependency_links.txt +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util.egg-info/not-zip-safe +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util.egg-info/top_level.txt +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util_assets/GeoLite2-City.mmdb +0 -0
- {xbase_util-0.6.7 → xbase_util-0.6.9}/xbase_util_assets/arkimeparse.js +0 -0
@@ -17,7 +17,7 @@ def content_type_is_plain(packet):
|
|
17
17
|
"""
|
18
18
|
if ":" not in packet:
|
19
19
|
return False
|
20
|
-
for item in packet.replace("-", "_").replace(" ", "").lower().
|
20
|
+
for item in packet.replace("-", "_").replace(" ", "").lower().splitlines():
|
21
21
|
if "content_type" in item:
|
22
22
|
if ":" not in item:
|
23
23
|
continue
|
@@ -65,6 +65,11 @@ res_pattern = re.compile(r"HTTP/\d\.\d \d{3}.*", re.DOTALL)
|
|
65
65
|
req_body_pattern = re.compile(
|
66
66
|
r"(GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH) \/[^\s]* HTTP\/\d\.\d[\s\S]*?(?=HTTP/\d\.\d)", re.DOTALL)
|
67
67
|
|
68
|
+
http_version = re.compile(r"HTTP\/(\d\.\d)")
|
69
|
+
http_req_method = re.compile(r"(GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH) \/[^\s]* HTTP\/\d\.\d")
|
70
|
+
http_req_path = re.compile(r"(?:GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH)\s+(\/[^\s]*)\s+HTTP\/\d\.\d")
|
71
|
+
res_status_code_pattern = re.compile(r"HTTP\/\d\.\d\s+(\d{3})\s+.*")
|
72
|
+
|
68
73
|
|
69
74
|
def get_all_packets_by_reg(packets):
|
70
75
|
http_Req_Raw = {}
|
@@ -117,17 +122,15 @@ def get_detail_by_package(publicField, req_header, req_body, res_header, res_bod
|
|
117
122
|
res_field = copy.deepcopy(publicField)
|
118
123
|
res_field["initRTT"] = firstOrZero(res_field.get("initRTT", 0))
|
119
124
|
res_field["length"] = firstOrZero(res_field.get("length", 0))
|
120
|
-
|
121
|
-
|
122
|
-
if len(
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
else
|
128
|
-
|
129
|
-
res_field['http.path'] = ''
|
130
|
-
res_field['http.method'] = ''
|
125
|
+
|
126
|
+
http_version_res = http_version.findall(req_header)
|
127
|
+
res_field['http.clientVersion'] = http_version_res[0] if len(http_version_res) > 0 else ""
|
128
|
+
http_method = http_req_method.findall(req_header)
|
129
|
+
http_path = http_req_path.findall(req_header)
|
130
|
+
res_field['http.clientVersion'] = http_version_res[0] if len(http_version_res) > 0 else ""
|
131
|
+
res_field['http.method'] = http_method[0] if len(http_method) > 0 else ""
|
132
|
+
res_field['http.path'] = http_path[0] if len(http_path) > 0 else ""
|
133
|
+
request_lines = req_header.splitlines()
|
131
134
|
res_field['http.request-referer'] = get_header_value(header_set=request_lines, value="Referer")
|
132
135
|
res_field['http.request-content-type'] = get_header_value(header_set=request_lines,
|
133
136
|
value="Content-Type")
|
@@ -139,15 +142,13 @@ def get_detail_by_package(publicField, req_header, req_body, res_header, res_bod
|
|
139
142
|
res_field['plain_body_src'] = req_body
|
140
143
|
if content_type_is_plain(res_header):
|
141
144
|
res_field['plain_body_dst'] = res_body
|
142
|
-
|
143
|
-
|
144
|
-
if len(
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
res_field['http.statuscode'] = ""
|
150
|
-
res_field['http.serverVersion'] = ""
|
145
|
+
|
146
|
+
http_server_version_res = http_version.findall(res_header)
|
147
|
+
res_field['http.serverVersion'] = http_server_version_res[0] if len(http_server_version_res) > 0 else ""
|
148
|
+
|
149
|
+
status_code = res_status_code_pattern.findall(res_header)
|
150
|
+
res_field['http.statuscode'] = status_code[0] if len(status_code) > 0 else ""
|
151
|
+
response_lines = res_header.splitlines()
|
151
152
|
res_field['http.response-server'] = get_header_value(header_set=response_lines, value="Server")
|
152
153
|
res_field['http.response-content-type'] = get_header_value(header_set=response_lines,
|
153
154
|
value="Content-Type")
|
@@ -36,7 +36,7 @@ def parse_expression(expression):
|
|
36
36
|
|
37
37
|
def get_cookie_end_with_semicolon_count(text_data):
|
38
38
|
count = 0
|
39
|
-
for text in text_data.replace("-", "_").lower().
|
39
|
+
for text in text_data.replace("-", "_").lower().splitlines():
|
40
40
|
item_text = text.replace("\n", "").replace("\t", "").replace(" ", "")
|
41
41
|
if "cookie:" in item_text and f"{item_text}".endswith(";"):
|
42
42
|
count = count + 1
|
@@ -47,7 +47,7 @@ def get_cookie_end_with_semicolon_count(text_data):
|
|
47
47
|
|
48
48
|
def get_ua_duplicate_count(text_data):
|
49
49
|
ua_list = []
|
50
|
-
for text in text_data.replace("-", "_").lower().
|
50
|
+
for text in text_data.replace("-", "_").lower().splitlines():
|
51
51
|
item_text = text.replace("\n", "").replace("\t", "").replace(" ", "")
|
52
52
|
if "user_agent:" in item_text and f"{item_text}".endswith(";"):
|
53
53
|
ua_list.append(item_text.replace("user_agent:", ""))
|
@@ -66,7 +66,7 @@ def get_res_status_code_list(text_data):
|
|
66
66
|
num_4 = 0
|
67
67
|
num_5 = 0
|
68
68
|
|
69
|
-
res.extend([item for item in text_data.
|
69
|
+
res.extend([item for item in text_data.splitlines() if item.startswith("HTTP/")])
|
70
70
|
for item in res:
|
71
71
|
m = re.search(r"\b(\d{3})\b", item)
|
72
72
|
if m:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|