xbase-util 0.8.8__tar.gz → 0.9.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. {xbase_util-0.8.8 → xbase_util-0.9.0}/PKG-INFO +1 -1
  2. {xbase_util-0.8.8 → xbase_util-0.9.0}/setup.py +1 -1
  3. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/common_util.py +4 -2
  4. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/pcap_util.py +34 -36
  5. xbase_util-0.9.0/xbase_util/test.py +9 -0
  6. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util.egg-info/PKG-INFO +1 -1
  7. xbase_util-0.8.8/xbase_util/test.py +0 -15
  8. {xbase_util-0.8.8 → xbase_util-0.9.0}/README.md +0 -0
  9. {xbase_util-0.8.8 → xbase_util-0.9.0}/setup.cfg +0 -0
  10. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/__init__.py +0 -0
  11. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/add_column_util.py +0 -0
  12. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/dangerous_util.py +0 -0
  13. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/__init__.py +0 -0
  14. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/bean/ConfigBean.py +0 -0
  15. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/bean/CurrentConfigBean.py +0 -0
  16. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/bean/FlowBean.py +0 -0
  17. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/bean/TaskTemplateBean.py +0 -0
  18. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/bean/__init__.py +0 -0
  19. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/dao/ConfigDao.py +0 -0
  20. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/dao/CurrentConfigDao.py +0 -0
  21. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/dao/FlowDao.py +0 -0
  22. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/dao/TaskTemplateDao.py +0 -0
  23. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/dao/__init__.py +0 -0
  24. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/db/initsqlite3.py +0 -0
  25. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/es_db_util.py +0 -0
  26. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/esreq.py +0 -0
  27. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/geo_util.py +0 -0
  28. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/handle_features_util.py +0 -0
  29. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/packet_util.py +0 -0
  30. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util/xbase_constant.py +0 -0
  31. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util.egg-info/SOURCES.txt +0 -0
  32. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util.egg-info/dependency_links.txt +0 -0
  33. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util.egg-info/not-zip-safe +0 -0
  34. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util.egg-info/top_level.txt +0 -0
  35. {xbase_util-0.8.8 → xbase_util-0.9.0}/xbase_util_assets/GeoLite2-City.mmdb +0 -0
  36. {xbase_util-0.8.8 → xbase_util-0.9.0}/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.8.8
3
+ Version: 0.9.0
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.8.8",
6
+ version="0.9.0",
7
7
  description="网络安全基础工具",
8
8
  long_description="包含提取,预测,训练的基础工具",
9
9
  author="xyt",
@@ -3,6 +3,7 @@ import json
3
3
  import logging
4
4
  import os
5
5
  import re
6
+ import traceback
6
7
  from collections import Counter
7
8
  from datetime import datetime
8
9
  from logging.handlers import TimedRotatingFileHandler
@@ -44,12 +45,13 @@ def parse_chunked_body(data: bytes, need_un_gzip=False,session_id="none") -> byt
44
45
  try:
45
46
  return gzip.decompress(body)
46
47
  except gzip.BadGzipFile:
47
- print("解压错误")
48
+ print(f"解压错误:{session_id}")
48
49
  return body
49
50
  else:
50
51
  return body
51
52
  except Exception as e:
52
- print(f"parse_chunked_body失败,session:{session_id}")
53
+ traceback.print_exc()
54
+ print(f"其他错误:session:{session_id}")
53
55
  return b''
54
56
 
55
57
 
@@ -291,52 +291,50 @@ def parse_body(data,session_id='none'):
291
291
  try:
292
292
  body = gzip.decompress(body)
293
293
  except:
294
- print("解压失败")
294
+ print(f"解压失败:{session_id}")
295
295
  pass
296
296
  result_body_str = filter_visible_chars(body)
297
297
  return filter_visible_chars(header), result_body_str
298
298
 
299
299
 
300
- def reassemble_session_pcap(reassemble_tcp_res, skey,session_id='none'):
301
- my_map = {
302
- 'key': '',
303
- 'req_header': '',
304
- 'req_body': '',
305
- 'req_time': 0,
306
- 'req_size': 0,
307
- 'res_header': '',
308
- 'res_body': '',
309
- 'res_time': 0,
310
- 'res_size': 0,
311
- }
300
+ def reassemble_session_pcap(reassemble_tcp_res, skey, session_id='none'):
301
+ my_map = None # 初始化为 None
312
302
  packet_list = []
313
- for index, packet in enumerate(reassemble_tcp_res):
303
+ for packet in reassemble_tcp_res:
314
304
  header, body = parse_body(packet['data'], session_id=session_id)
315
- if index == len(reassemble_tcp_res) - 1:
316
- packet_list.append(copy.deepcopy(my_map))
305
+ # 如果当前数据包是请求
317
306
  if packet['key'] == skey:
318
- if index != 0:
307
+ # 如果 my_map 已经存在(即已经有一个未完成的请求-响应对),先将其添加到 packet_list
308
+ if my_map is not None:
319
309
  packet_list.append(copy.deepcopy(my_map))
320
- my_map = {
321
- 'key': packet['key'],
322
- 'req_header': '',
323
- 'req_body': b'',
324
- 'req_time': 0,
325
- 'req_size': 0,
326
- 'res_header': '',
327
- 'res_body': b'',
328
- 'res_time': 0,
329
- 'res_size': 0,
330
- }
331
- my_map["req_header"] = header
332
- my_map["req_body"] = body
333
- my_map["req_time"] = packet['ts']
334
- my_map["req_size"] = len(packet['data'])
310
+
311
+ # 初始化一个新的 my_map,并填充请求数据
312
+ my_map = {
313
+ 'key': packet['key'],
314
+ 'req_header': header,
315
+ 'req_body': body,
316
+ 'req_time': packet['ts'],
317
+ 'req_size': len(packet['data']),
318
+ 'res_header': '',
319
+ 'res_body': b'',
320
+ 'res_time': 0,
321
+ 'res_size': 0,
322
+ }
323
+ # 如果当前数据包是响应
335
324
  else:
336
- my_map["res_header"] = header
337
- my_map["res_body"] = body
338
- my_map["res_time"] = packet['ts']
339
- my_map["res_size"] = len(packet['data'])
325
+ # 如果 my_map 存在(即已经有一个请求),则填充响应数据
326
+ if my_map is not None:
327
+ my_map['res_header'] = header
328
+ my_map['res_body'] = body
329
+ my_map['res_time'] = packet['ts']
330
+ my_map['res_size'] = len(packet['data'])
331
+
332
+ # 将完整的请求-响应对添加到 packet_list
333
+ packet_list.append(copy.deepcopy(my_map))
334
+ my_map = None # 重置 my_map
335
+ # 如果最后一个 my_map 未完成(只有请求没有响应),也将其添加到 packet_list
336
+ if my_map is not None:
337
+ packet_list.append(copy.deepcopy(my_map))
340
338
  return packet_list
341
339
 
342
340
 
@@ -0,0 +1,9 @@
1
+ from scapy.utils import rdpcap
2
+
3
+ from xbase_util.pcap_util import reassemble_tcp_pcap, reassemble_session_pcap
4
+
5
+ if __name__ == '__main__':
6
+ packets_scapy = reassemble_tcp_pcap(rdpcap("test.pcap"))
7
+ skey = '10.28.7.13:52631'
8
+ all_packets = reassemble_session_pcap(packets_scapy, skey=skey,session_id='enn')
9
+ print(all_packets)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xbase-util
3
- Version: 0.8.8
3
+ Version: 0.9.0
4
4
  Summary: 网络安全基础工具
5
5
  Home-page: https://gitee.com/jimonik/xbase_util.git
6
6
  Author: xyt
@@ -1,15 +0,0 @@
1
- from scapy.packet import Raw
2
- from scapy.utils import rdpcap
3
-
4
- from xbase_util.pcap_util import reassemble_tcp_pcap, reassemble_session_pcap
5
-
6
- if __name__ == '__main__':
7
- packets_scapy = reassemble_tcp_pcap(rdpcap("gzip2.pcap"))
8
- skey = '10.28.7.16:54398'
9
- streams = b""
10
- for pkt in packets_scapy:
11
- if Raw in pkt:
12
- streams += pkt[Raw].load
13
- text_data = streams.decode('ascii', errors='ignore')
14
- all_packets = reassemble_session_pcap(packets_scapy, skey=skey,session_id='enn')
15
-
File without changes
File without changes