From f7a1096a4afe870afd3293d62ca109ed6cd82a55 Mon Sep 17 00:00:00 2001 From: m1k53r Date: Thu, 1 Jul 2021 16:11:32 +0200 Subject: [PATCH 01/11] Added hex diff support --- src/utils/utils.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/utils/utils.py b/src/utils/utils.py index 2358d78..acfbe3f 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -3,6 +3,7 @@ import pyshark from scapy.utils import wrpcap from scapy_helper import get_hex +from scapy_helper import diff def hex_str_operation(h_string, with_new_line: bool = False): @@ -64,3 +65,13 @@ def better_scapy_summary(scapy_summary) -> list: } list_.append(temp_frame) return list_ + + +def hex_diff(first_hex: str, second_hex: str) -> list: + sep_bytes = lambda hex_str: " ".join([ + "".join([hex_str[e - 1], hex_str[e]]) + for e in range(len(hex_str)) + if e % 2 + ]) + + return diff(sep_bytes(first_hex), sep_bytes(second_hex)) From d6ac5a087b2bb1d22c39b2a7e6cfe08025f31a52 Mon Sep 17 00:00:00 2001 From: m1k53r Date: Fri, 2 Jul 2021 14:03:38 +0200 Subject: [PATCH 02/11] Added enter at the end of the file for better readability --- src/utils/utils.py | 9 ++++----- tests/test_packet_data.py | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/utils/utils.py b/src/utils/utils.py index acfbe3f..a294e9e 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -68,10 +68,9 @@ def better_scapy_summary(scapy_summary) -> list: def hex_diff(first_hex: str, second_hex: str) -> list: - sep_bytes = lambda hex_str: " ".join([ - "".join([hex_str[e - 1], hex_str[e]]) - for e in range(len(hex_str)) - if e % 2 - ]) + sep_bytes = lambda hex_str: " ".join( + ["".join([hex_str[e - 1], hex_str[e]]) for e in range(len(hex_str)) if e % 2] + ) return diff(sep_bytes(first_hex), sep_bytes(second_hex)) + diff --git a/tests/test_packet_data.py b/tests/test_packet_data.py index 7879421..7e68605 100644 --- a/tests/test_packet_data.py +++ b/tests/test_packet_data.py @@ -3,8 +3,27 @@ from src.packet_data import PacketData from tests.utils.example_packets import EXAMPLE_ETHER +from ptf.testutils import * + class TestPacketData(TestCase): def test_packet_data(self): pd = PacketData(raw=EXAMPLE_ETHER) assert pd + + def test(self): + pkt = simple_tcp_packet( + eth_dst="00:11:11:11:11:11", + eth_src="00:22:22:22:22:22", + dl_vlan_enable=True, + vlan_vid=10, + ip_dst="10.0.0.1", + ip_id=102, + ip_ttl=64, + ) + print("test") + + +if __name__ == "__main__": + packet = TestPacketData() + packet.test() From ec9724163f4da703768691329c3cf3fc424cb7f8 Mon Sep 17 00:00:00 2001 From: m1k53r Date: Fri, 2 Jul 2021 14:04:52 +0200 Subject: [PATCH 03/11] Removed code added by accident --- tests/test_packet_data.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/tests/test_packet_data.py b/tests/test_packet_data.py index 7e68605..5633034 100644 --- a/tests/test_packet_data.py +++ b/tests/test_packet_data.py @@ -3,27 +3,9 @@ from src.packet_data import PacketData from tests.utils.example_packets import EXAMPLE_ETHER -from ptf.testutils import * - class TestPacketData(TestCase): def test_packet_data(self): pd = PacketData(raw=EXAMPLE_ETHER) assert pd - def test(self): - pkt = simple_tcp_packet( - eth_dst="00:11:11:11:11:11", - eth_src="00:22:22:22:22:22", - dl_vlan_enable=True, - vlan_vid=10, - ip_dst="10.0.0.1", - ip_id=102, - ip_ttl=64, - ) - print("test") - - -if __name__ == "__main__": - packet = TestPacketData() - packet.test() From 25209a9b78af6ebb701928e4ed1d042b90a349c3 Mon Sep 17 00:00:00 2001 From: m1k53r Date: Fri, 2 Jul 2021 14:05:59 +0200 Subject: [PATCH 04/11] Reformated the code with Black module --- src/utils/utils.py | 1 - tests/test_packet_data.py | 1 - 2 files changed, 2 deletions(-) diff --git a/src/utils/utils.py b/src/utils/utils.py index a294e9e..a2a7b98 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -73,4 +73,3 @@ def hex_diff(first_hex: str, second_hex: str) -> list: ) return diff(sep_bytes(first_hex), sep_bytes(second_hex)) - diff --git a/tests/test_packet_data.py b/tests/test_packet_data.py index 5633034..7879421 100644 --- a/tests/test_packet_data.py +++ b/tests/test_packet_data.py @@ -8,4 +8,3 @@ class TestPacketData(TestCase): def test_packet_data(self): pd = PacketData(raw=EXAMPLE_ETHER) assert pd - From 39bead381ee4a796321d8ad10170704ccc795564 Mon Sep 17 00:00:00 2001 From: m1k53r Date: Sat, 3 Jul 2021 20:31:23 +0200 Subject: [PATCH 05/11] Renamed dir --- src/__init__.py | 0 src/packet_data.py | 52 --------------------------- src/packet_data_server.py | 45 ----------------------- src/utils/__init__.py | 0 src/utils/scapy_reader.py | 33 ----------------- src/utils/utils.py | 75 --------------------------------------- 6 files changed, 205 deletions(-) delete mode 100644 src/__init__.py delete mode 100644 src/packet_data.py delete mode 100644 src/packet_data_server.py delete mode 100644 src/utils/__init__.py delete mode 100644 src/utils/scapy_reader.py delete mode 100644 src/utils/utils.py diff --git a/src/__init__.py b/src/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/packet_data.py b/src/packet_data.py deleted file mode 100644 index 2703b5a..0000000 --- a/src/packet_data.py +++ /dev/null @@ -1,52 +0,0 @@ -from dataclasses import dataclass - - -@dataclass -class PacketData: - raw: str - - def __post_init__(self): - self.raw_array = self.raw.split("\n") - self.length = self.raw_array[0].replace(")", "").split()[2] - self.array = self.raw_array[1:] - - self.header = self.compose_header() - self.body = self.compose_body() - self.body2 = self.compose_body_list() - - def compose_header(self): - return [ - a.replace("Layer", "").replace(":", "").replace(" ", "") - for a in self.array - if a.startswith("Layer") - ] - - def compose_body(self): - temp_body_dict = {} - actual_layer: str = "" - for x in self.array: - if x.startswith("Layer"): - actual_layer = x.replace(":", "").split()[1] - temp_body_dict[actual_layer] = [] - continue - temp_body_dict[actual_layer].append(x) - return temp_body_dict - - def compose_body_list(self): - temp_body_dict = [] - line = [] - for arr in self.array: - arr = arr.strip() - if arr == "" and line: - temp_body_dict.append(line) - break - - if arr.startswith("Layer"): - if line: - temp_body_dict.append(line) - line = [] - actual_layer = arr.replace(":", "").split()[1] - line.append(actual_layer) - continue - line.append(arr) - return temp_body_dict diff --git a/src/packet_data_server.py b/src/packet_data_server.py deleted file mode 100644 index bfcec97..0000000 --- a/src/packet_data_server.py +++ /dev/null @@ -1,45 +0,0 @@ -from dataclasses import dataclass - -from scapy_helper import get_hex - -from src.packet_data import PacketData -from src.utils.scapy_reader import scapy_reader - - -@dataclass -class PacketDataScapy: - raw: str - packet_data: PacketData - - def __post_init__(self): - self.header = [x.replace("\r", "") for x in self.packet_data.header] - self.headers_scapy = scapy_reader(self.raw) - - self.headers_full = [repr(x) for x in self.headers_scapy] - self.headers_single = [f"{x.split(' |')[0]}>" for x in self.headers_full] - - self.structure = self.__make_structure() - - def __make_structure(self): - temp_structure = [] - - for e, h in enumerate(self.headers_scapy): - _dict = { - "name": h.name, - "bytes": str(h), - "hex": get_hex(h), - "length": len(h), - "length_unit": "B", - "repr": f"{repr(h).split(' |')[0]}>", - "repr_full": repr(h), - } - - # RAW elements on the end are added to the last package as data! - try: - _dict["tshark_name"] = self.packet_data.body2[e][0] - _dict["tshark_raw_summary"] = self.packet_data.body2[e][1:] - except IndexError: - break - - temp_structure.append(_dict) - return temp_structure diff --git a/src/utils/__init__.py b/src/utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/utils/scapy_reader.py b/src/utils/scapy_reader.py deleted file mode 100644 index 5f9e3ce..0000000 --- a/src/utils/scapy_reader.py +++ /dev/null @@ -1,33 +0,0 @@ -import binascii -import logging -import os -from time import time -from typing import List - -from scapy.all import wrpcap, rdpcap -from scapy.packet import Packet - - -def scapy_reader(hex_str: str) -> List[Packet]: - hex_str = binascii.unhexlify(hex_str) - if not isinstance(hex_str, bytes): - raise Exception("ERR:: hex_str must be in bytes!") - - temp_filename = f"pcap_{time()}" - wrpcap(temp_filename, hex_str) - pcap_object = rdpcap(temp_filename) - - # try to clean after all - try: - os.remove(temp_filename) - except Exception: - logging.error(f"Cannot remove {temp_filename}") - - converted_packets = [] - current = pcap_object[0] - while current: - converted_packets.append(current) - if current.payload is not None: - current = current.payload - - return converted_packets diff --git a/src/utils/utils.py b/src/utils/utils.py deleted file mode 100644 index a2a7b98..0000000 --- a/src/utils/utils.py +++ /dev/null @@ -1,75 +0,0 @@ -from time import time - -import pyshark -from scapy.utils import wrpcap -from scapy_helper import get_hex -from scapy_helper import diff - - -def hex_str_operation(h_string, with_new_line: bool = False): - z = "" - tmp = [] - for e, x in enumerate(h_string.replace(" ", "")): - z += x - if e % 2: - tmp.append(z) - z = "" - if with_new_line: - temp_list = [] - for e, v in enumerate(tmp, 1): - if not e % 16: - temp_list.append(f"{v}\n") - continue - temp_list.append(f"{v} ") - return "".join(temp_list) - return " ".join(tmp) - - -def decode_hex(hex_str: str, use_json=False): - frame_bytes: bytes = bytes.fromhex(hex_str) - packet = None - - # noinspection PyBroadException - try: - _custom_params = [ - "-o", - "tcp.check_checksum:TRUE", - "-o", - "ip.check_checksum:TRUE", - "-o", - "stt.check_checksum:TRUE", - "-o", - "udp.check_checksum:TRUE", - "-o", - "wlan.check_checksum:TRUE", - ] - # only interested with the first packet - packet = pyshark.InMemCapture(custom_parameters=_custom_params) - packet = packet.parse_packet(frame_bytes) - packet.close() - - except Exception: - pass - return packet - - -def better_scapy_summary(scapy_summary) -> list: - list_ = [] - for frame in scapy_summary: - temp_frame = { - "name": frame.name, - "bytes": frame.raw_packet_cache, - "hex": get_hex(frame.raw_packet_cache), - "length": len(frame.raw_packet_cache), - "repr": f"{repr(frame).split(' |')[0]}>", - } - list_.append(temp_frame) - return list_ - - -def hex_diff(first_hex: str, second_hex: str) -> list: - sep_bytes = lambda hex_str: " ".join( - ["".join([hex_str[e - 1], hex_str[e]]) for e in range(len(hex_str)) if e % 2] - ) - - return diff(sep_bytes(first_hex), sep_bytes(second_hex)) From 84ee31aa62f71e47ec5f8963fe270bc4d5d1047d Mon Sep 17 00:00:00 2001 From: m1k53r Date: Sat, 3 Jul 2021 20:31:48 +0200 Subject: [PATCH 06/11] Renamed dir --- packet_helper_core/__init__.py | 0 packet_helper_core/packet_data.py | 52 ++++++++++++++++ packet_helper_core/packet_data_server.py | 45 ++++++++++++++ packet_helper_core/utils/__init__.py | 0 packet_helper_core/utils/scapy_reader.py | 33 +++++++++++ packet_helper_core/utils/utils.py | 75 ++++++++++++++++++++++++ 6 files changed, 205 insertions(+) create mode 100644 packet_helper_core/__init__.py create mode 100644 packet_helper_core/packet_data.py create mode 100644 packet_helper_core/packet_data_server.py create mode 100644 packet_helper_core/utils/__init__.py create mode 100644 packet_helper_core/utils/scapy_reader.py create mode 100644 packet_helper_core/utils/utils.py diff --git a/packet_helper_core/__init__.py b/packet_helper_core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/packet_helper_core/packet_data.py b/packet_helper_core/packet_data.py new file mode 100644 index 0000000..2703b5a --- /dev/null +++ b/packet_helper_core/packet_data.py @@ -0,0 +1,52 @@ +from dataclasses import dataclass + + +@dataclass +class PacketData: + raw: str + + def __post_init__(self): + self.raw_array = self.raw.split("\n") + self.length = self.raw_array[0].replace(")", "").split()[2] + self.array = self.raw_array[1:] + + self.header = self.compose_header() + self.body = self.compose_body() + self.body2 = self.compose_body_list() + + def compose_header(self): + return [ + a.replace("Layer", "").replace(":", "").replace(" ", "") + for a in self.array + if a.startswith("Layer") + ] + + def compose_body(self): + temp_body_dict = {} + actual_layer: str = "" + for x in self.array: + if x.startswith("Layer"): + actual_layer = x.replace(":", "").split()[1] + temp_body_dict[actual_layer] = [] + continue + temp_body_dict[actual_layer].append(x) + return temp_body_dict + + def compose_body_list(self): + temp_body_dict = [] + line = [] + for arr in self.array: + arr = arr.strip() + if arr == "" and line: + temp_body_dict.append(line) + break + + if arr.startswith("Layer"): + if line: + temp_body_dict.append(line) + line = [] + actual_layer = arr.replace(":", "").split()[1] + line.append(actual_layer) + continue + line.append(arr) + return temp_body_dict diff --git a/packet_helper_core/packet_data_server.py b/packet_helper_core/packet_data_server.py new file mode 100644 index 0000000..bfcec97 --- /dev/null +++ b/packet_helper_core/packet_data_server.py @@ -0,0 +1,45 @@ +from dataclasses import dataclass + +from scapy_helper import get_hex + +from src.packet_data import PacketData +from src.utils.scapy_reader import scapy_reader + + +@dataclass +class PacketDataScapy: + raw: str + packet_data: PacketData + + def __post_init__(self): + self.header = [x.replace("\r", "") for x in self.packet_data.header] + self.headers_scapy = scapy_reader(self.raw) + + self.headers_full = [repr(x) for x in self.headers_scapy] + self.headers_single = [f"{x.split(' |')[0]}>" for x in self.headers_full] + + self.structure = self.__make_structure() + + def __make_structure(self): + temp_structure = [] + + for e, h in enumerate(self.headers_scapy): + _dict = { + "name": h.name, + "bytes": str(h), + "hex": get_hex(h), + "length": len(h), + "length_unit": "B", + "repr": f"{repr(h).split(' |')[0]}>", + "repr_full": repr(h), + } + + # RAW elements on the end are added to the last package as data! + try: + _dict["tshark_name"] = self.packet_data.body2[e][0] + _dict["tshark_raw_summary"] = self.packet_data.body2[e][1:] + except IndexError: + break + + temp_structure.append(_dict) + return temp_structure diff --git a/packet_helper_core/utils/__init__.py b/packet_helper_core/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/packet_helper_core/utils/scapy_reader.py b/packet_helper_core/utils/scapy_reader.py new file mode 100644 index 0000000..5f9e3ce --- /dev/null +++ b/packet_helper_core/utils/scapy_reader.py @@ -0,0 +1,33 @@ +import binascii +import logging +import os +from time import time +from typing import List + +from scapy.all import wrpcap, rdpcap +from scapy.packet import Packet + + +def scapy_reader(hex_str: str) -> List[Packet]: + hex_str = binascii.unhexlify(hex_str) + if not isinstance(hex_str, bytes): + raise Exception("ERR:: hex_str must be in bytes!") + + temp_filename = f"pcap_{time()}" + wrpcap(temp_filename, hex_str) + pcap_object = rdpcap(temp_filename) + + # try to clean after all + try: + os.remove(temp_filename) + except Exception: + logging.error(f"Cannot remove {temp_filename}") + + converted_packets = [] + current = pcap_object[0] + while current: + converted_packets.append(current) + if current.payload is not None: + current = current.payload + + return converted_packets diff --git a/packet_helper_core/utils/utils.py b/packet_helper_core/utils/utils.py new file mode 100644 index 0000000..a2a7b98 --- /dev/null +++ b/packet_helper_core/utils/utils.py @@ -0,0 +1,75 @@ +from time import time + +import pyshark +from scapy.utils import wrpcap +from scapy_helper import get_hex +from scapy_helper import diff + + +def hex_str_operation(h_string, with_new_line: bool = False): + z = "" + tmp = [] + for e, x in enumerate(h_string.replace(" ", "")): + z += x + if e % 2: + tmp.append(z) + z = "" + if with_new_line: + temp_list = [] + for e, v in enumerate(tmp, 1): + if not e % 16: + temp_list.append(f"{v}\n") + continue + temp_list.append(f"{v} ") + return "".join(temp_list) + return " ".join(tmp) + + +def decode_hex(hex_str: str, use_json=False): + frame_bytes: bytes = bytes.fromhex(hex_str) + packet = None + + # noinspection PyBroadException + try: + _custom_params = [ + "-o", + "tcp.check_checksum:TRUE", + "-o", + "ip.check_checksum:TRUE", + "-o", + "stt.check_checksum:TRUE", + "-o", + "udp.check_checksum:TRUE", + "-o", + "wlan.check_checksum:TRUE", + ] + # only interested with the first packet + packet = pyshark.InMemCapture(custom_parameters=_custom_params) + packet = packet.parse_packet(frame_bytes) + packet.close() + + except Exception: + pass + return packet + + +def better_scapy_summary(scapy_summary) -> list: + list_ = [] + for frame in scapy_summary: + temp_frame = { + "name": frame.name, + "bytes": frame.raw_packet_cache, + "hex": get_hex(frame.raw_packet_cache), + "length": len(frame.raw_packet_cache), + "repr": f"{repr(frame).split(' |')[0]}>", + } + list_.append(temp_frame) + return list_ + + +def hex_diff(first_hex: str, second_hex: str) -> list: + sep_bytes = lambda hex_str: " ".join( + ["".join([hex_str[e - 1], hex_str[e]]) for e in range(len(hex_str)) if e % 2] + ) + + return diff(sep_bytes(first_hex), sep_bytes(second_hex)) From d1758b8ff3d24c2611c112bc6d1f87a850ee1d9a Mon Sep 17 00:00:00 2001 From: m1k53r Date: Sat, 3 Jul 2021 20:38:56 +0200 Subject: [PATCH 07/11] Reformated the code with Black module --- packet_helper_core/utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packet_helper_core/utils/utils.py b/packet_helper_core/utils/utils.py index 9877d93..862269a 100644 --- a/packet_helper_core/utils/utils.py +++ b/packet_helper_core/utils/utils.py @@ -2,6 +2,7 @@ from scapy_helper import get_hex from scapy_helper import diff + def hex_str_operation(h_string, with_new_line: bool = False): z = "" tmp = [] From 46d666efa0a90d509075890c29be2917b54261ae Mon Sep 17 00:00:00 2001 From: m1k53r Date: Sat, 3 Jul 2021 20:43:06 +0200 Subject: [PATCH 08/11] Removed file so it matches the main branch --- packet_helper_core/packet_data_server.py | 45 ------------------------ 1 file changed, 45 deletions(-) delete mode 100644 packet_helper_core/packet_data_server.py diff --git a/packet_helper_core/packet_data_server.py b/packet_helper_core/packet_data_server.py deleted file mode 100644 index bfcec97..0000000 --- a/packet_helper_core/packet_data_server.py +++ /dev/null @@ -1,45 +0,0 @@ -from dataclasses import dataclass - -from scapy_helper import get_hex - -from src.packet_data import PacketData -from src.utils.scapy_reader import scapy_reader - - -@dataclass -class PacketDataScapy: - raw: str - packet_data: PacketData - - def __post_init__(self): - self.header = [x.replace("\r", "") for x in self.packet_data.header] - self.headers_scapy = scapy_reader(self.raw) - - self.headers_full = [repr(x) for x in self.headers_scapy] - self.headers_single = [f"{x.split(' |')[0]}>" for x in self.headers_full] - - self.structure = self.__make_structure() - - def __make_structure(self): - temp_structure = [] - - for e, h in enumerate(self.headers_scapy): - _dict = { - "name": h.name, - "bytes": str(h), - "hex": get_hex(h), - "length": len(h), - "length_unit": "B", - "repr": f"{repr(h).split(' |')[0]}>", - "repr_full": repr(h), - } - - # RAW elements on the end are added to the last package as data! - try: - _dict["tshark_name"] = self.packet_data.body2[e][0] - _dict["tshark_raw_summary"] = self.packet_data.body2[e][1:] - except IndexError: - break - - temp_structure.append(_dict) - return temp_structure From df11db2227bcd3979f1dcf4af56e526a22192859 Mon Sep 17 00:00:00 2001 From: m1k53r Date: Sun, 4 Jul 2021 18:39:25 +0200 Subject: [PATCH 09/11] Create compare class --- packet_helper_core/utils/utils.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packet_helper_core/utils/utils.py b/packet_helper_core/utils/utils.py index 862269a..0957ba7 100644 --- a/packet_helper_core/utils/utils.py +++ b/packet_helper_core/utils/utils.py @@ -1,6 +1,6 @@ import pyshark from scapy_helper import get_hex -from scapy_helper import diff +from scapy_helper import diff as scapy_diff def hex_str_operation(h_string, with_new_line: bool = False): @@ -64,9 +64,16 @@ def better_scapy_summary(scapy_summary) -> list: return list_ -def hex_diff(first_hex: str, second_hex: str) -> list: - sep_bytes = lambda hex_str: " ".join( - ["".join([hex_str[e - 1], hex_str[e]]) for e in range(len(hex_str)) if e % 2] - ) +class Compare: + def __init__(self, first_hex: str, second_hex: str): + self.first_hex = first_hex + self.second_hex = second_hex - return diff(sep_bytes(first_hex), sep_bytes(second_hex)) + @staticmethod + def sep_bytes(hex_str: str) -> str: + return " ".join( + ["".join([hex_str[e - 1], hex_str[e]]) for e in range(len(hex_str)) if e % 2] + ) + + def hex_diff(self) -> list: + return scapy_diff(self.sep_bytes(self.first_hex), self.sep_bytes(self.second_hex)) From cd7034afcac58dc4e5a41a68576d2a4759522f97 Mon Sep 17 00:00:00 2001 From: m1k53r Date: Sun, 4 Jul 2021 18:41:15 +0200 Subject: [PATCH 10/11] Reformat the code with Black module --- packet_helper_core/utils/utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packet_helper_core/utils/utils.py b/packet_helper_core/utils/utils.py index 0957ba7..77b56b0 100644 --- a/packet_helper_core/utils/utils.py +++ b/packet_helper_core/utils/utils.py @@ -72,8 +72,14 @@ def __init__(self, first_hex: str, second_hex: str): @staticmethod def sep_bytes(hex_str: str) -> str: return " ".join( - ["".join([hex_str[e - 1], hex_str[e]]) for e in range(len(hex_str)) if e % 2] + [ + "".join([hex_str[e - 1], hex_str[e]]) + for e in range(len(hex_str)) + if e % 2 + ] ) def hex_diff(self) -> list: - return scapy_diff(self.sep_bytes(self.first_hex), self.sep_bytes(self.second_hex)) + return scapy_diff( + self.sep_bytes(self.first_hex), self.sep_bytes(self.second_hex) + ) From 383dbf1ff4aebbe35c894d270d5b91cebbf2eb32 Mon Sep 17 00:00:00 2001 From: m1k53r Date: Mon, 5 Jul 2021 13:28:33 +0200 Subject: [PATCH 11/11] Convert __init__ to dataclass --- packet_helper_core/utils/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packet_helper_core/utils/utils.py b/packet_helper_core/utils/utils.py index 77b56b0..5696d53 100644 --- a/packet_helper_core/utils/utils.py +++ b/packet_helper_core/utils/utils.py @@ -1,6 +1,7 @@ import pyshark from scapy_helper import get_hex from scapy_helper import diff as scapy_diff +from dataclasses import dataclass def hex_str_operation(h_string, with_new_line: bool = False): @@ -64,10 +65,10 @@ def better_scapy_summary(scapy_summary) -> list: return list_ +@dataclass class Compare: - def __init__(self, first_hex: str, second_hex: str): - self.first_hex = first_hex - self.second_hex = second_hex + first_hex: str + second_hex: str @staticmethod def sep_bytes(hex_str: str) -> str: