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

Sign up to get free protection for your applications and to get access to all the features.
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)