xbase-util 0.7.3__tar.gz → 0.7.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. {xbase_util-0.7.3 → xbase_util-0.7.5}/PKG-INFO +1 -1
  2. {xbase_util-0.7.3 → xbase_util-0.7.5}/setup.py +1 -1
  3. xbase_util-0.7.5/test/test.py +34 -0
  4. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/packet_util.py +12 -51
  5. xbase_util-0.7.5/xbase_util/pcap_util.py +833 -0
  6. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/xbase_constant.py +8 -0
  7. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util.egg-info/PKG-INFO +1 -1
  8. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util.egg-info/SOURCES.txt +1 -1
  9. xbase_util-0.7.3/xbase_util/pcap_util.py +0 -246
  10. xbase_util-0.7.3/xbase_util/segment.py +0 -168
  11. {xbase_util-0.7.3 → xbase_util-0.7.5}/README.md +0 -0
  12. {xbase_util-0.7.3 → xbase_util-0.7.5}/setup.cfg +0 -0
  13. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/__init__.py +0 -0
  14. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/add_column_util.py +0 -0
  15. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/dangerous_util.py +0 -0
  16. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/__init__.py +0 -0
  17. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/bean/ConfigBean.py +0 -0
  18. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/bean/CurrentConfigBean.py +0 -0
  19. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/bean/FlowBean.py +0 -0
  20. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/bean/TaskTemplateBean.py +0 -0
  21. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/bean/__init__.py +0 -0
  22. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/dao/ConfigDao.py +0 -0
  23. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/dao/CurrentConfigDao.py +0 -0
  24. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/dao/FlowDao.py +0 -0
  25. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/dao/TaskTemplateDao.py +0 -0
  26. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/dao/__init__.py +0 -0
  27. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/db/initsqlite3.py +0 -0
  28. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/es_db_util.py +0 -0
  29. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/esreq.py +0 -0
  30. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/geo_util.py +0 -0
  31. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/handle_features_util.py +0 -0
  32. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util/xbase_util.py +0 -0
  33. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util.egg-info/dependency_links.txt +0 -0
  34. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util.egg-info/not-zip-safe +0 -0
  35. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util.egg-info/top_level.txt +0 -0
  36. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util_assets/GeoLite2-City.mmdb +0 -0
  37. {xbase_util-0.7.3 → xbase_util-0.7.5}/xbase_util_assets/arkimeparse.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xbase_util
3
- Version: 0.7.3
3
+ Version: 0.7.5
4
4
  Summary: 网络安全基础工具
5
5
  Home-page: https://gitee.com/jimonik/xbase_util.git
6
6
  Author: xyt
@@ -3,7 +3,7 @@ from distutils.core import setup
3
3
  from setuptools import find_packages
4
4
 
5
5
  setup(name="xbase_util",
6
- version="0.7.3",
6
+ version="0.7.5",
7
7
  description="网络安全基础工具",
8
8
  long_description="包含提取,预测,训练的基础工具",
9
9
  author="xyt",
@@ -0,0 +1,34 @@
1
+ import copy
2
+ import gzip
3
+ import pickle
4
+ import re
5
+ import traceback
6
+
7
+ from xbase_util.packet_util import filter_visible_chars
8
+ from xbase_util.pcap_util import reassemble_tcp, reassemble_session
9
+
10
+ if __name__ == '__main__':
11
+ # req = EsReq("http://127.0.0.1:9200")
12
+ # exp=build_es_expression(size="1",
13
+ # start_time=None,
14
+ # end_time=None,
15
+ # arkime_expression='id == 250106-lKoC7T_SwbNAe4xDQQx7KTOd')
16
+ # session=req.search(body=exp,index="arkime_sessions3-*").json()['hits']['hits'][0]
17
+ # packetPos=session['_source']['packetPos']
18
+ # stream,packet_objs=process_session_id_disk_simple(id=session['_id'], node=session['_source']['node'],
19
+ # packet_pos=packetPos, esdb=EsDb(req, multiprocessing.Manager()),
20
+ # pcap_path_prefix="origin")
21
+ #
22
+ # with open('stream.pkl', 'wb') as f:
23
+ # pickle.dump(stream, f)
24
+ # with open('packet_objs.pkl', 'wb') as f:
25
+ # pickle.dump(packet_objs, f)
26
+
27
+ with open('stream.pkl', 'rb') as f:
28
+ stream = pickle.load(f)
29
+ with open('packet_objs.pkl', 'rb') as f:
30
+ packet_objs = pickle.load(f)
31
+ skey = f"10.28.7.16:54398"
32
+ reassemble_tcp_res = reassemble_tcp(packet_objs, skey)
33
+ reassemble_session_result = reassemble_session(reassemble_tcp_res, skey)
34
+ print(reassemble_session_result)
@@ -1,11 +1,8 @@
1
1
  import copy
2
2
  import re
3
3
 
4
- from scapy.layers.inet import TCP
5
- from scapy.packet import Raw
6
-
7
4
  from xbase_util.xbase_constant import plain_content_type_columns, packetKeyname, src_dst_header, statisticHeader, \
8
- features_key, plain_body_columns
5
+ features_key, plain_body_columns, http_version_pattern, http_req_method_pattern, http_req_path_pattern, res_status_code_pattern
9
6
  from xbase_util.xbase_util import firstOrZero
10
7
 
11
8
 
@@ -59,47 +56,11 @@ def get_all_columns(
59
56
  return result_columns
60
57
 
61
58
 
62
- req_pattern = re.compile(r"(GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH) \/[^\s]* HTTP\/\d\.\d[\s\S]*?\r\n\r\n",
63
- re.DOTALL)
64
- res_pattern = re.compile(r"HTTP/\d\.\d \d{3}.*", re.DOTALL)
65
- req_body_pattern = re.compile(
66
- r"(GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH) \/[^\s]* HTTP\/\d\.\d[\s\S]*?(?=HTTP/\d\.\d)", re.DOTALL)
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
-
73
-
74
- # def get_all_packets_by_reg(packets):
75
- # http_Req_Raw = {}
76
- # http_methods = ("POST /", "PUT /", "OPTIONS /", "DELETE /", "GET /")
77
- # for packet in packets:
78
- # if TCP in packet and Raw in packet:
79
- # data = packet[Raw].load
80
- # ack = packet[TCP].ack
81
- # next_ack = packet[TCP].seq + len(data)
82
- # if ack not in http_Req_Raw:
83
- # http_Req_Raw[ack] = {"time": [float(packet.time)], "data": data, "next_ack": next_ack}
84
- # else:
85
- # http_Req_Raw[ack]["time"].append(float(packet.time))
86
- # http_Req_Raw[ack]["data"] += data
87
- # http_Req_Raw[ack]["next_ack"] = next_ack
88
- # packet_list = [
89
- # {
90
- # 'req_data': item['data'],
91
- # 'res_data': http_Req_Raw[item['next_ack']]['data'],
92
- # 'req_text': filter_visible_chars(item['data']),
93
- # 'res_text': filter_visible_chars(http_Req_Raw[item['next_ack']]['data']),
94
- # 'req_time': item['time'],
95
- # 'res_time': http_Req_Raw[item['next_ack']]['time']
96
- # }
97
- # for ack, item in http_Req_Raw.items()
98
- # if item['next_ack'] in http_Req_Raw # 检查 next_ack 是否存在
99
- # and any(method in filter_visible_chars(item['data']) for method in http_methods)
100
- # ]
101
- # return packet_list
102
-
59
+ # req_pattern = re.compile(r"(GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH) \/[^\s]* HTTP\/\d\.\d[\s\S]*?\r\n\r\n",
60
+ # re.DOTALL)
61
+ # res_pattern = re.compile(r"HTTP/\d\.\d \d{3}.*", re.DOTALL)
62
+ # req_body_pattern = re.compile(
63
+ # r"(GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH) \/[^\s]* HTTP\/\d\.\d[\s\S]*?(?=HTTP/\d\.\d)", re.DOTALL)
103
64
 
104
65
  def get_header_value(header_set, value):
105
66
  result = [item for item in header_set if value in item]
@@ -123,10 +84,10 @@ def get_detail_by_package(publicField, req_header, req_body, res_header, res_bod
123
84
  res_field["initRTT"] = firstOrZero(res_field.get("initRTT", 0))
124
85
  res_field["length"] = firstOrZero(res_field.get("length", 0))
125
86
 
126
- http_version_res = http_version.findall(req_header)
87
+ http_version_res = http_version_pattern.findall(req_header)
127
88
  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)
89
+ http_method = http_req_method_pattern.findall(req_header)
90
+ http_path = http_req_path_pattern.findall(req_header)
130
91
  res_field['http.clientVersion'] = http_version_res[0] if len(http_version_res) > 0 else ""
131
92
  res_field['http.method'] = http_method[0] if len(http_method) > 0 else ""
132
93
  res_field['http.path'] = http_path[0] if len(http_path) > 0 else ""
@@ -139,11 +100,11 @@ def get_detail_by_package(publicField, req_header, req_body, res_header, res_bod
139
100
  res_field['plain_body_src'] = ""
140
101
  res_field['plain_body_dst'] = ""
141
102
  if content_type_is_plain(req_header):
142
- res_field['plain_body_src'] = filter_visible_chars(f'{req_body}')
103
+ res_field['plain_body_src'] = req_body
143
104
  if content_type_is_plain(res_header):
144
- res_field['plain_body_dst'] = filter_visible_chars(f'{res_body}')
105
+ res_field['plain_body_dst'] = res_body
145
106
 
146
- http_server_version_res = http_version.findall(res_header)
107
+ http_server_version_res = http_version_pattern.findall(res_header)
147
108
  res_field['http.serverVersion'] = http_server_version_res[0] if len(http_server_version_res) > 0 else ""
148
109
 
149
110
  status_code = res_status_code_pattern.findall(res_header)