pypcapkit 1.1.0.post2__pp39-none-any.whl → 1.1.1__pp39-none-any.whl

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.
pcapkit/__init__.py CHANGED
@@ -123,4 +123,4 @@ __all__ = [
123
123
  ]
124
124
 
125
125
  #: version number
126
- __version__ = '1.1.0.post2'
126
+ __version__ = '1.1.1'
@@ -93,28 +93,28 @@ class AppType(StrEnum):
93
93
  return '%s [%d - %s]' % (self.svc, self.port, self.proto.name)
94
94
 
95
95
  def __int__(self) -> 'int':
96
- return self.opt_value
96
+ return self.port
97
97
 
98
98
  def __lt__(self, other: 'AppType') -> 'bool':
99
- return self.opt_value < other
99
+ return self.port < other
100
100
 
101
101
  def __gt__(self, other: 'AppType') -> 'bool':
102
- return self.opt_value > other
102
+ return self.port > other
103
103
 
104
104
  def __le__(self, other: 'AppType') -> 'bool':
105
- return self.opt_value <= other
105
+ return self.port <= other
106
106
 
107
107
  def __ge__(self, other: 'AppType') -> 'bool':
108
- return self.opt_value >= other
108
+ return self.port >= other
109
109
 
110
110
  def __eq__(self, other: 'Any') -> 'bool':
111
- return self.opt_value == other
111
+ return self.port == other
112
112
 
113
113
  def __ne__(self, other: 'Any') -> 'bool':
114
- return self.opt_value != other
114
+ return self.port != other
115
115
 
116
116
  def __hash__(self) -> 'int':
117
- return hash(self.opt_value)
117
+ return hash(self.port)
118
118
 
119
119
  #: - [TCP] Reserved
120
120
  #: - [UDP] Reserved
@@ -28688,8 +28688,9 @@ class AppType(StrEnum):
28688
28688
  #: [TCP] Topology Discovery
28689
28689
  kiwin: 'AppType' = -1, 'kiwin', TransportProtocol.get('tcp')
28690
28690
 
28691
- #: [UDP] Discovery in KNX IoT Point API
28692
- knx: 'AppType' = -1, 'knx', TransportProtocol.get('udp')
28691
+ #: - [TCP] KNX Discovery Protocol
28692
+ #: - [UDP] Discovery in KNX IoT Point API
28693
+ knx: 'AppType' = -1, 'knx', TransportProtocol.get('tcp') | TransportProtocol.get('udp')
28693
28694
 
28694
28695
  #: [N/A] Kabira Transaction Platform
28695
28696
  ktp: 'AppType' = -1, 'ktp', TransportProtocol.get('undefined')
@@ -318,7 +318,7 @@ class Info(Mapping[str, VT], Generic[VT], metaclass=InfoMeta):
318
318
  else:
319
319
  temp.append(f'{out_key}={value!r}')
320
320
  args = ', '.join(temp)
321
- return f'{type(self).__name__}({args})'
321
+ return f'<{type(self).__name__} {args}>'
322
322
 
323
323
  def __len__(self) -> 'int':
324
324
  return len(self.__dict__)
pcapkit/dumpkit/common.py CHANGED
@@ -21,6 +21,7 @@ import aenum
21
21
 
22
22
  from pcapkit.corekit.infoclass import Info
23
23
  from pcapkit.corekit.multidict import MultiDict, OrderedMultiDict
24
+ from pcapkit.protocols.schema.schema import Schema
24
25
  from pcapkit.utilities.logging import logger
25
26
 
26
27
  __all__ = ['make_dumper']
@@ -60,7 +61,7 @@ def make_dumper(output: 'Type[Dumper]') -> 'Type[Dumper]':
60
61
  return str(o)
61
62
  if isinstance(o, datetime.timedelta):
62
63
  return o.total_seconds()
63
- if isinstance(o, Info):
64
+ if isinstance(o, (Info, Schema)):
64
65
  return o.to_dict()
65
66
  if isinstance(o, (ipaddress.IPv4Address, ipaddress.IPv6Address)):
66
67
  return str(o)
@@ -24,9 +24,12 @@ from pcapkit.dumpkit.common import make_dumper
24
24
  from pcapkit.foundation.engines.pcap import PCAP as PCAP_Engine
25
25
  from pcapkit.foundation.engines.pcapng import PCAPNG as PCAPNG_Engine
26
26
  from pcapkit.foundation.reassembly import ReassemblyManager
27
+ from pcapkit.foundation.reassembly.data import ReassemblyData
27
28
  from pcapkit.foundation.traceflow import TraceFlowManager
29
+ from pcapkit.foundation.traceflow.data import TraceFlowData
28
30
  from pcapkit.utilities.exceptions import (CallableError, FileNotFound, FormatError, IterableError,
29
31
  UnsupportedCall, stacklevel)
32
+ from pcapkit.utilities.logging import logger
30
33
  from pcapkit.utilities.warnings import EngineWarning, FormatWarning, warn
31
34
 
32
35
  if TYPE_CHECKING:
@@ -40,8 +43,6 @@ if TYPE_CHECKING:
40
43
  from typing_extensions import Literal
41
44
 
42
45
  from pcapkit.foundation.engines.engine import Engine
43
- from pcapkit.foundation.reassembly.data import ReassemblyData
44
- from pcapkit.foundation.traceflow.data import TraceFlowData
45
46
  from pcapkit.protocols.misc.pcap.frame import Frame
46
47
  from pcapkit.protocols.misc.pcapng import PCAPNG
47
48
  from pcapkit.protocols.protocol import Protocol
@@ -208,7 +209,7 @@ class Extractor(Generic[P]):
208
209
 
209
210
  Raises:
210
211
  UnsupportedCall: If :attr:`self._flag_d <pcapkit.foundation.extraction.Extractor._flag_d>`
211
- is :data:`True`, as storing frame data is disabled.
212
+ is :data:`False`, as storing frame data is disabled.
212
213
 
213
214
  """
214
215
  if self._flag_d:
@@ -219,25 +220,41 @@ class Extractor(Generic[P]):
219
220
  def reassembly(self) -> 'ReassemblyData':
220
221
  """Frame record for reassembly.
221
222
 
222
- * ``ipv4`` -- tuple of TCP payload fragment (:term:`reasm.ipv4.datagram`)
223
- * ``ipv6`` -- tuple of TCP payload fragment (:term:`reasm.ipv6.datagram`)
223
+ * ``ipv4`` -- tuple of IPv4 payload fragment (:term:`reasm.ipv4.datagram`)
224
+ * ``ipv6`` -- tuple of IPv6 payload fragment (:term:`reasm.ipv6.datagram`)
224
225
  * ``tcp`` -- tuple of TCP payload fragment (:term:`reasm.tcp.datagram`)
225
226
 
227
+ Raises:
228
+ UnsupportedCall: If :attr:`self._flag_r <pcapkit.foundation.extraction.Extractor._flag_r>`
229
+ is :data:`False`, as reassembly is disabled.
230
+
226
231
  """
227
- data = ReassemblyData(
228
- ipv4=tuple(self._reasm.ipv4.datagram) if self._ipv4 else None,
229
- ipv6=tuple(self._reasm.ipv6.datagram) if self._ipv6 else None,
230
- tcp=tuple(self._reasm.tcp.datagram) if self._tcp else None,
231
- )
232
- return data
232
+ if self._flag_r:
233
+ data = ReassemblyData(
234
+ ipv4=tuple(self._reasm.ipv4.datagram) if self._ipv4 else None,
235
+ ipv6=tuple(self._reasm.ipv6.datagram) if self._ipv6 else None,
236
+ tcp=tuple(self._reasm.tcp.datagram) if self._tcp else None,
237
+ )
238
+ return data
239
+ raise UnsupportedCall("'Extractor(reassembly=False)' object has no attribute 'reassembly'")
233
240
 
234
241
  @property
235
242
  def trace(self) -> 'TraceFlowData':
236
- """Index table for traced flow."""
237
- data = TraceFlowData(
238
- tcp=tuple(self._trace.tcp.index) if self._tcp else None,
239
- )
240
- return data
243
+ """Index table for traced flow.
244
+
245
+ * ``tcp`` -- tuple of TCP flows (:term:`trace.tcp.index`)
246
+
247
+ Raises:
248
+ UnsupportedCall: If :attr:`self._flag_t <pcapkit.foundation.extraction.Extractor._flag_t>`
249
+ is :data:`False`, as flow tracing is disabled.
250
+
251
+ """
252
+ if self._flag_t:
253
+ data = TraceFlowData(
254
+ tcp=tuple(self._trace.tcp.index) if self._tcp else None,
255
+ )
256
+ return data
257
+ raise UnsupportedCall("'Extractor(trace=False)' object has no attribute 'trace'")
241
258
 
242
259
  @property
243
260
  def engine(self) -> 'Engine':
@@ -536,10 +553,11 @@ class Extractor(Generic[P]):
536
553
  trace_byteorder: output file byte order
537
554
  trace_nanosecond: output nanosecond-resolution file flag
538
555
 
539
- ip: if record data for IPv4 & IPv6 reassembly
540
- ipv4: if perform IPv4 reassembly
541
- ipv6: if perform IPv6 reassembly
556
+ ip: if record data for IPv4 & IPv6 reassembly (must be used with ``reassembly=True``)
557
+ ipv4: if perform IPv4 reassembly (must be used with ``reassembly=True``)
558
+ ipv6: if perform IPv6 reassembly (must be used with ``reassembly=True``)
542
559
  tcp: if perform TCP reassembly and/or flow tracing
560
+ (must be used with ``reassembly=True`` or ``trace=True``)
543
561
 
544
562
  Warns:
545
563
  FormatWarning: Warns under following circumstances:
@@ -599,6 +617,13 @@ class Extractor(Generic[P]):
599
617
  from pcapkit.foundation.reassembly.ipv6 import IPv6 as IPv6_Reassembly
600
618
  from pcapkit.foundation.reassembly.tcp import TCP as TCP_Reassembly
601
619
 
620
+ if self._ipv4:
621
+ logger.info('IPv4 reassembly enabled')
622
+ if self._ipv6:
623
+ logger.info('IPv6 reassembly enabled')
624
+ if self._tcp:
625
+ logger.info('TCP reassembly enabled')
626
+
602
627
  self._reasm = ReassemblyManager(
603
628
  ipv4=IPv4_Reassembly(strict=strict) if self._ipv4 else None,
604
629
  ipv6=IPv6_Reassembly(strict=strict) if self._ipv6 else None,
@@ -613,6 +638,9 @@ class Extractor(Generic[P]):
613
638
  "using 'trace_format=None' instead", FormatWarning, stacklevel=stacklevel())
614
639
  trace_format = None
615
640
 
641
+ if self._tcp:
642
+ logger.info('TCP flow tracing enabled')
643
+
616
644
  self._trace = TraceFlowManager(
617
645
  tcp=TCP_TraceFlow(fout=trace_fout, format=trace_format, byteorder=trace_byteorder,
618
646
  nanosecond=trace_nanosecond) if self._tcp else None,
@@ -111,7 +111,10 @@ class TCP(TraceFlow[BufferID, Buffer, Index, Packet[IPAddress]], Generic[IPAddre
111
111
 
112
112
  # initialise buffer with BUFID
113
113
  if BUFID not in self._buffer:
114
- label = f'{packet.src}_{packet.srcport}-{packet.dst}_{packet.dstport}-{packet.timestamp}'
114
+ if packet.src.version == 4:
115
+ label = f'{packet.src}_{packet.srcport}-{packet.dst}_{packet.dstport}-{packet.timestamp}'
116
+ else:
117
+ label = f'{packet.src}_{packet.srcport}-{packet.dst}_{packet.dstport}-{packet.timestamp}'.replace(':', '.')
115
118
  self._buffer[BUFID] = Buffer(
116
119
  fpout=self._foutio(fname=f'{self._fproot}/{label}{self._fdpext or ""}', protocol=packet.protocol,
117
120
  byteorder=self._endian, nanosecond=self._nnsecd),
@@ -571,17 +571,8 @@ class Protocol(Generic[PT, ST], metaclass=abc.ABCMeta):
571
571
  if (cached := self.__cached__.get('__repr__')) is not None:
572
572
  return cached
573
573
 
574
- name = type(self).__name__
575
- temp = [] # type: list[str]
576
- for (key, value) in self._info.items():
577
- if isinstance(value, Info):
578
- temp.append(f'{key}=...')
579
- else:
580
- temp.append(f'{key}={value!r}')
581
- args = ', '.join(temp)
582
-
583
574
  # cache and return
584
- repr_ = f'<{name} alias={self.alias!r} {self.info_name}=({args})>'
575
+ repr_ = f'<{self.alias} {self.info_name}={self._info!r}>'
585
576
 
586
577
  self.__cached__['__repr__'] = repr_
587
578
  return repr_
@@ -790,9 +790,9 @@ class EnumSchema(Schema, Generic[ET], metaclass=EnumMeta):
790
790
  if code is not None:
791
791
  if isinstance(code, collections.abc.Iterable):
792
792
  for _code in code:
793
- cls.__enum__[_code] = (cls)
793
+ cls.__enum__[_code] = (cls) # type: ignore[index]
794
794
  else:
795
- cls.__enum__[code] = (cls)
795
+ cls.__enum__[code] = (cls) # type: ignore[index]
796
796
  super().__init_subclass__()
797
797
 
798
798
  @classmethod
@@ -804,4 +804,4 @@ class EnumSchema(Schema, Generic[ET], metaclass=EnumMeta):
804
804
  schema: Enumetaion schema.
805
805
 
806
806
  """
807
- cls.__enum__[code] = schema
807
+ cls.__enum__[code] = schema # type: ignore[index]
pcapkit/toolkit/pcap.py CHANGED
@@ -151,9 +151,9 @@ def tcp_reassembly(frame: 'Frame') -> 'TCP_Packet | None':
151
151
  data = TCP_Packet(
152
152
  bufid=(
153
153
  ip_info.src, # source IP address
154
- tcp_info.srcport, # source port
154
+ tcp_info.srcport.port, # source port
155
155
  ip_info.dst, # destination IP address
156
- tcp_info.dstport, # destination port
156
+ tcp_info.dstport.port, # destination port
157
157
  ),
158
158
  num=frame.info.number, # original packet range number
159
159
  ack=tcp_info.ack, # acknowledgement
@@ -204,8 +204,8 @@ def tcp_traceflow(frame: 'Frame', *, data_link: 'LinkType') -> 'TF_TCP_Packet |
204
204
  fin=tcp_info.flags.fin, # TCP finish (FIN) flag
205
205
  src=ip_info.src, # source IP
206
206
  dst=ip_info.dst, # destination IP
207
- srcport=tcp_info.srcport, # TCP source port
208
- dstport=tcp_info.dstport, # TCP destination port
207
+ srcport=tcp_info.srcport.port, # TCP source port
208
+ dstport=tcp_info.dstport.port, # TCP destination port
209
209
  timestamp=float(frame.info.time_epoch), # frame timestamp
210
210
  )
211
211
  return data
pcapkit/toolkit/pcapng.py CHANGED
@@ -158,9 +158,9 @@ def tcp_reassembly(frame: 'PCAPNG') -> 'TCP_Packet | None':
158
158
  data = TCP_Packet(
159
159
  bufid=(
160
160
  ip_info.src, # source IP address
161
- tcp_info.srcport, # source port
161
+ tcp_info.srcport.port, # source port
162
162
  ip_info.dst, # destination IP address
163
- tcp_info.dstport, # destination port
163
+ tcp_info.dstport.port, # destination port
164
164
  ),
165
165
  num=frame_info.number, # original packet range number
166
166
  ack=tcp_info.ack, # acknowledgement
@@ -213,8 +213,8 @@ def tcp_traceflow(frame: 'PCAPNG', *, nanosecond: 'bool' = False) -> 'TF_TCP_Pac
213
213
  fin=tcp_info.flags.fin, # TCP finish (FIN) flag
214
214
  src=ip_info.src, # source IP
215
215
  dst=ip_info.dst, # destination IP
216
- srcport=tcp_info.srcport, # TCP source port
217
- dstport=tcp_info.dstport, # TCP destination port
216
+ srcport=tcp_info.srcport.port, # TCP source port
217
+ dstport=tcp_info.dstport.port, # TCP destination port
218
218
  timestamp=float(frame_info.timestamp_epoch), # frame timestamp
219
219
  )
220
220
  return data
@@ -190,7 +190,7 @@ if sys.version_info < (3, 11):
190
190
  else:
191
191
  from enum import show_flag_values # type: ignore[attr-defined]
192
192
 
193
- if sys.version_info < (3, 9):
193
+ if sys.version_info < (3, 10):
194
194
  from typing_extensions import TypeAlias
195
195
  else:
196
196
  from typing import TypeAlias
@@ -120,28 +120,28 @@ class {NAME}(StrEnum):
120
120
  return '%s [%d - %s]' % (self.svc, self.port, self.proto.name)
121
121
 
122
122
  def __int__(self) -> 'int':
123
- return self.opt_value
123
+ return self.port
124
124
 
125
125
  def __lt__(self, other: '{NAME}') -> 'bool':
126
- return self.opt_value < other
126
+ return self.port < other
127
127
 
128
128
  def __gt__(self, other: '{NAME}') -> 'bool':
129
- return self.opt_value > other
129
+ return self.port > other
130
130
 
131
131
  def __le__(self, other: '{NAME}') -> 'bool':
132
- return self.opt_value <= other
132
+ return self.port <= other
133
133
 
134
134
  def __ge__(self, other: '{NAME}') -> 'bool':
135
- return self.opt_value >= other
135
+ return self.port >= other
136
136
 
137
137
  def __eq__(self, other: 'Any') -> 'bool':
138
- return self.opt_value == other
138
+ return self.port == other
139
139
 
140
140
  def __ne__(self, other: 'Any') -> 'bool':
141
- return self.opt_value != other
141
+ return self.port != other
142
142
 
143
143
  def __hash__(self) -> 'int':
144
- return hash(self.opt_value)
144
+ return hash(self.port)
145
145
 
146
146
  {ENUM}
147
147
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pypcapkit
3
- Version: 1.1.0.post2
3
+ Version: 1.1.1
4
4
  Summary: PyPCAPKit: comprehensive network packet analysis library
5
5
  Author-email: Jarry Shaw <jarryshaw@icloud.com>
6
6
  Maintainer: Jarry Shaw
@@ -39,15 +39,15 @@ Classifier: Typing :: Typed
39
39
  Requires-Python: <4,>=3.6
40
40
  Description-Content-Type: text/x-rst
41
41
  License-File: LICENSE
42
- Requires-Dist: dictdumper (~=0.8.0)
42
+ Requires-Dist: dictdumper ~=0.8.0
43
43
  Requires-Dist: chardet
44
44
  Requires-Dist: aenum
45
- Requires-Dist: tbtrim (>=0.2.1)
45
+ Requires-Dist: tbtrim >=0.2.1
46
+ Requires-Dist: typing-extensions ; python_version < "3.11"
46
47
  Requires-Dist: bpc-f2format ; python_version < "3.6"
47
48
  Requires-Dist: bpc-poseur ; python_version < "3.8"
48
49
  Requires-Dist: bpc-walrus ; python_version < "3.8"
49
- Requires-Dist: typing-extensions ; python_version < "3.8"
50
- Requires-Dist: pathlib2 (>=2.3.2) ; python_version == "3.4"
50
+ Requires-Dist: pathlib2 >=2.3.2 ; python_version == "3.4"
51
51
  Provides-Extra: dpkt
52
52
  Requires-Dist: dpkt ; extra == 'dpkt'
53
53
  Provides-Extra: pyshark
@@ -64,7 +64,7 @@ Requires-Dist: beautifulsoup4[html5lib] ; extra == 'all'
64
64
  Provides-Extra: cli
65
65
  Requires-Dist: emoji ; extra == 'cli'
66
66
  Provides-Extra: docs
67
- Requires-Dist: Sphinx (>=6.1.3) ; extra == 'docs'
67
+ Requires-Dist: Sphinx >=6.1.3 ; extra == 'docs'
68
68
  Requires-Dist: furo ; extra == 'docs'
69
69
  Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
70
70
  Requires-Dist: sphinx-opengraph ; extra == 'docs'
@@ -1,4 +1,4 @@
1
- pcapkit/__init__.py,sha256=HI1K-3e6Q78Z41C_pQckZInD-LegOLPuqZHY36ok4Hg,4097
1
+ pcapkit/__init__.py,sha256=4aoXOHBzsFC4QoQU4O78nX8QNLqFpwioKigK4mRsG7g,4091
2
2
  pcapkit/__main__.py,sha256=K_XEsZHJqDUdRfext2dN7jlnno5ub3bqjklwmWrZ8KQ,5581
3
3
  pcapkit/all.py,sha256=vQvbo8IeDW9nzW7dkCnakhgljO8t1lH5OgW0F-iTDwI,6598
4
4
  pcapkit/const/__init__.py,sha256=XpEr66hXmBpBofS5aHiTZXTG8VZlxU7xy0BNXBKCi1Q,3266
@@ -116,7 +116,7 @@ pcapkit/const/pcapng/record_type.py,sha256=4rZytbhhF6u5SPvQ8ew3jx4OhN_rwDQG3I4Jl
116
116
  pcapkit/const/pcapng/secrets_type.py,sha256=n_662aowLtqA25ilbdG6BWb2rYmrdBJt79_SISzfJkw,1578
117
117
  pcapkit/const/pcapng/verdict_type.py,sha256=_jEkN0g6CX-DGshAj-lUiZjiwdK7Fqou2pnzgZ-WyIk,1476
118
118
  pcapkit/const/reg/__init__.py,sha256=xKABPHwDQ0diN2sFA7hkw42FNsb6tx294XemEjTs2g8,1469
119
- pcapkit/const/reg/apptype.py,sha256=elDXZBxwpqTdiXeE0SWNlu46ytC6dMAxHObOgnvkaq8,1426814
119
+ pcapkit/const/reg/apptype.py,sha256=9e9DIaRsHrY6h4b-DQkhrxW_Dqs2SSR6nQpGxyBDnv4,1426845
120
120
  pcapkit/const/reg/ethertype.py,sha256=MlESESKA5yOSppkNXLkiqTEXUEJI7uTq_8_RSduDK5Q,25954
121
121
  pcapkit/const/reg/linktype.py,sha256=gYGIKpI21d4dpfO5ZAU8efqz1eBLVUiQnSLA1anKits,37247
122
122
  pcapkit/const/reg/transtype.py,sha256=7ZQOWFNGP8toBNRko0NuNih-sh3oo5RgIWBIKFb9bRQ,12872
@@ -128,7 +128,7 @@ pcapkit/const/tcp/option.py,sha256=wbKmXwUTan7ICLkIqVBiM6esQNsuRY5keTE9_e2_7HQ,5
128
128
  pcapkit/const/vlan/__init__.py,sha256=e58kBqVyx-aNe10uWkfI1grb1gI5t-VxyYnmP4qT2bM,690
129
129
  pcapkit/const/vlan/priority_level.py,sha256=lditGE8zcRNmCnPW7lTM45R5Q9RQ-CqBRkqGGDSByJw,1936
130
130
  pcapkit/corekit/__init__.py,sha256=9dBR8nKuymYe14vO9Gtt45AOznrAK9strSmO9CK6QoI,1508
131
- pcapkit/corekit/infoclass.py,sha256=uSJmUm96ECOGuZZvv9OKM0WL80yTeI2haItLjLzwRZA,14422
131
+ pcapkit/corekit/infoclass.py,sha256=5PCrqBYfDy8y1pilHl7aCkPdiLQlQhIW9e5dgQKRE9E,14423
132
132
  pcapkit/corekit/multidict.py,sha256=VuB9-DFZYpl_Z0z07YAhykoj9_ccHCp1RDG3uCceC1s,22015
133
133
  pcapkit/corekit/protochain.py,sha256=bTEK327E_iQp8e7s5en7zbVDCGIKFHxoTmA6V-3-j9g,7687
134
134
  pcapkit/corekit/version.py,sha256=jI8VDmBTmwdj8tx-JJ4YB7p1xL62-mQ8W-C0NzvsF-Y,470
@@ -140,11 +140,11 @@ pcapkit/corekit/fields/misc.py,sha256=kyn2Wk3YxV1csC_16pMEd-WY6aTF5NvNdyJEomJw1a
140
140
  pcapkit/corekit/fields/numbers.py,sha256=3kgnePxwPNgL38ujcd2SkTMkke4wfk4rPbt_GCHSF50,11775
141
141
  pcapkit/corekit/fields/strings.py,sha256=MunIs1K9wlBxzYSDvowwTHX2AadZqYsYTqGN5xrfVdc,8814
142
142
  pcapkit/dumpkit/__init__.py,sha256=Q8eZXOAxPqMojnGfE3ypqxRQOv8wuQfinAabe2W3P6E,370
143
- pcapkit/dumpkit/common.py,sha256=j_651_aLmgvHnzIfY0qkml4vygAJ9Z3vHyrvTVz1Hjw,4462
143
+ pcapkit/dumpkit/common.py,sha256=CPq775MrotgmaTjGQ4_9v9vsAbySOeNvF6LsUlZFpR0,4523
144
144
  pcapkit/dumpkit/null.py,sha256=wL94KoKWtozmXPHbH63K9aH71XOKgFLLf5WechyEBCc,2243
145
145
  pcapkit/dumpkit/pcap.py,sha256=hPNvwFBumhQI0sq2CyxXQj20Lg-cI8re-CdTYL6NK4g,4165
146
146
  pcapkit/foundation/__init__.py,sha256=wwTcVaNs1CPsZiYXucOl4TDw8VJ_OKdgxfQ22dSfG44,1488
147
- pcapkit/foundation/extraction.py,sha256=P7aozM--4iliNvRQ61BTGb4JZRBrxf37OZau_u0l-PA,27578
147
+ pcapkit/foundation/extraction.py,sha256=Lbc8ReQDt-wkIFZO2YBF9P40JDe8lz2GHv7cJGPZc-s,28861
148
148
  pcapkit/foundation/engines/__init__.py,sha256=7Qskb6OE8xzGO50Yrk2BrcU5ZAnP5TX8n5tee_FVnaQ,858
149
149
  pcapkit/foundation/engines/dpkt.py,sha256=GgG72MkDjs5NPQf61KbHIvOiliFrxFtyGFVuRUBNz5o,7575
150
150
  pcapkit/foundation/engines/engine.py,sha256=pQEZtIDSFwE5RexkgkEtCs9AOGyh8Tdw3W8RhBF2H4Y,2496
@@ -165,7 +165,7 @@ pcapkit/foundation/registry/__init__.py,sha256=VLAzpJ4dEYGEcxFXdPnrsLtW8l-eeoCsx
165
165
  pcapkit/foundation/registry/foundation.py,sha256=Rgowvnz_qqpiRKPuEyW6A12wbTeIxwPkjOir_NVv5Jo,4822
166
166
  pcapkit/foundation/registry/protocols.py,sha256=InVwwTE5xHH5j4sU4P9o1XF72Ion5d38mdc9RWlyu4Y,35228
167
167
  pcapkit/foundation/traceflow/__init__.py,sha256=Sk6mrQ51EGTcfV5s6FdIoRVM002t1LlN2rLIe-kfLy4,999
168
- pcapkit/foundation/traceflow/tcp.py,sha256=_xpszi1PIF3aocQMnyXs1OuYO02fTgOWeVn25GE3nAM,5520
168
+ pcapkit/foundation/traceflow/tcp.py,sha256=v7mHp5HJNzaLmOT5mm09ierPzJ9qHJdsmsxQFWNbXGI,5706
169
169
  pcapkit/foundation/traceflow/traceflow.py,sha256=ZfHkfMdhvTFsHvxWzcUJD-fTX-hO-HA2PJLrmIn6Mgs,8280
170
170
  pcapkit/foundation/traceflow/data/__init__.py,sha256=1qHFuYkGvimhmNuLFHI-FXa2gsSKguzWPqCOxeN_UUw,919
171
171
  pcapkit/foundation/traceflow/data/tcp.py,sha256=3pWg03OmMJzWjovH48F49LcAcWbCt2cjo7N4B47XncY,3059
@@ -173,7 +173,7 @@ pcapkit/interface/__init__.py,sha256=UnQ1wjAWjP4iTA8HGRNonYDegDzCps4f7oWt7GK4kUE
173
173
  pcapkit/interface/core.py,sha256=qI8zz5TNgpz-7qs7qPvNyezS9Tuq9YG-T8lsYJFNqHM,7203
174
174
  pcapkit/interface/misc.py,sha256=CRirlQQe4XQJzwakJv8c2xZeOJlqlfsMFlrvyQxsio8,4802
175
175
  pcapkit/protocols/__init__.py,sha256=MzPJGg_hkGmPMxe8B2AznOU6p2HHRV4GrS6Odb9u7uQ,1745
176
- pcapkit/protocols/protocol.py,sha256=LALd7ZCVyd36UOwoKmmUy522Zcf4lwstW0fKmFSPeGw,43888
176
+ pcapkit/protocols/protocol.py,sha256=lXQCkPDOKDtbqKlq-iAZHoWIjH5ppuyz-wZB0FRKNtE,43579
177
177
  pcapkit/protocols/application/__init__.py,sha256=nInVbuUoyQiLGATLiCyxkyEfWyXVJMYVOr7ddrh7LDg,1044
178
178
  pcapkit/protocols/application/application.py,sha256=TDyWuSLhRL8-MuUXcwn5dM55Tm7CjspApfHYOmnZZew,4302
179
179
  pcapkit/protocols/application/ftp.py,sha256=FdNVpBKKYzNV5Cj8Gqm5VqK2O0x9S7SupsL-JgGmdpw,6532
@@ -276,7 +276,7 @@ pcapkit/protocols/misc/pcap/__init__.py,sha256=-uxoPg3k-8NteBUUxLdgysbpwHbV_uyHy
276
276
  pcapkit/protocols/misc/pcap/frame.py,sha256=pUScBj8DRQq0AIKR6Eq5i7qUTgnpsmFmuKO9VF59f3I,17448
277
277
  pcapkit/protocols/misc/pcap/header.py,sha256=4gDu-24VcPNG_16tYeKb0T0myERbWwlh4AJST2wEiBo,12665
278
278
  pcapkit/protocols/schema/__init__.py,sha256=h5GqPMdMYNM7089UA8wLP8E17wEAIZCGoSoySFss6Dg,7306
279
- pcapkit/protocols/schema/schema.py,sha256=r43I5YVNmJvjv077m1Hpg1i1S24xN6A6H2qtFSvMi2M,29251
279
+ pcapkit/protocols/schema/schema.py,sha256=FnBT7sJHNMXZcw6tdy47xnCQedP92O99EBv_4JbEeSI,29320
280
280
  pcapkit/protocols/schema/application/__init__.py,sha256=5Cug38rdq8thUWMol0ICGIPP7FW3nBeBnFWPbnU0sbA,1997
281
281
  pcapkit/protocols/schema/application/ftp.py,sha256=uZm2D5Za3GJCjATk76dJOwNsO8GuFDMNVtqy2qzSmiI,520
282
282
  pcapkit/protocols/schema/application/httpv1.py,sha256=hJ9mvWfhbXUSpWvgLGAfSu0_MhXqxkJnxuv3PbUYDaE,523
@@ -317,12 +317,12 @@ pcapkit/protocols/transport/NotImplemented/rsvp.py,sha256=47DEQpj8HBSa-_TImW-5JC
317
317
  pcapkit/protocols/transport/NotImplemented/sctp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
318
318
  pcapkit/toolkit/__init__.py,sha256=pidjgoJjQxW8z--lY9eR6k_ANc2kF6U0Rgv99S3QeEs,2623
319
319
  pcapkit/toolkit/dpkt.py,sha256=c4B8NT60_jQMk9Fh-VdJG_4NzxE-RofiNna2a6vXDts,12433
320
- pcapkit/toolkit/pcap.py,sha256=tBl51CNYD22ijV6ZYAJSBG42bEkQDQh338D_8XDaKJI,9132
321
- pcapkit/toolkit/pcapng.py,sha256=xOnw3NZpspG8tTiREjTR2lLxnDKoK9FwvAPrTclx5tc,10420
320
+ pcapkit/toolkit/pcap.py,sha256=GVWg_LX4Pu_qldLmBGUIwl4C_1tKCpNr0mkSfI98qdg,9132
321
+ pcapkit/toolkit/pcapng.py,sha256=16ibqo6lsN3QAwTWsFf76P8mE-FlkqJhTgTzjzltrQ8,10420
322
322
  pcapkit/toolkit/pyshark.py,sha256=UwvzNkwplVBQZFggXvOsOTkJeUdZsE5tIe6DTMp7irA,3388
323
323
  pcapkit/toolkit/scapy.py,sha256=8zEyWbbXHWyIcJ5qWKIzED6CUgBbDZrYMzTJJr8gqgI,11435
324
324
  pcapkit/utilities/__init__.py,sha256=nd_SO3k9zXgi-Vesa1bhBiAgu55x2BeRMclLsdz9RWg,692
325
- pcapkit/utilities/compat.py,sha256=3t4J3Xey_M0j7WPc7e9hPXC-ImSgIWY_8287pFLRFVY,6532
325
+ pcapkit/utilities/compat.py,sha256=fq16iG0leV4cyglNn2GeXdIIwUVzwMXGtdPigrejrgo,6533
326
326
  pcapkit/utilities/decorators.py,sha256=7UTb4DjXWjMeEfxX2z7jvkbkBUhZngDraFp1LSVn1As,6506
327
327
  pcapkit/utilities/exceptions.py,sha256=Ht2eX8IWMizp04OQaOwkg85vE7ZxybVt3u2CPb2qsnQ,10541
328
328
  pcapkit/utilities/logging.py,sha256=W0QbD16F_lLbvKzruZ9g7kho-gFRFCUIhdE_ub4xzh4,1918
@@ -444,7 +444,7 @@ pcapkit/vendor/pcapng/record_type.py,sha256=cqiRPWETwl-MItPhGqJrLd9dDh3ivM3Ed3I6
444
444
  pcapkit/vendor/pcapng/secrets_type.py,sha256=hTEstMPuri04ac_q26Nt9bM1VRSyvdbanPYJrU5H3DQ,2165
445
445
  pcapkit/vendor/pcapng/verdict_type.py,sha256=rVGrJOIS0ikiSu0X23lfjANTiy2IeII31GCXkGtSPRg,1977
446
446
  pcapkit/vendor/reg/__init__.py,sha256=OryPFPYmNYAIkm_rvUAIcNn69ymfDJiFNL2DFbZXkto,1411
447
- pcapkit/vendor/reg/apptype.py,sha256=_Sd1NH2UjdND4_BEH3kuXTxqdHRPJnedf0-EPiZTvIo,10350
447
+ pcapkit/vendor/reg/apptype.py,sha256=z-OQJcGKq4gnfigpEe4V_9bPWQtJLpSmgA3yaPtVoKU,10310
448
448
  pcapkit/vendor/reg/ethertype.py,sha256=FI64Kk3_048CporpQOAwGi-Po9net5HwZnO0mJBSQTo,3752
449
449
  pcapkit/vendor/reg/linktype.py,sha256=i4A7Zmk9So2AaBP1KlsE_7rv5g8QWDaWJ4giRyXtT6E,3284
450
450
  pcapkit/vendor/reg/transtype.py,sha256=7UqVA4evH6luliMpDRhzKcYoIKm8FiogqzI8ovoQyqc,3365
@@ -455,9 +455,9 @@ pcapkit/vendor/tcp/mp_tcp_option.py,sha256=fLtttA2-p3qXRcP-1kI3gA-08F0bhCCgVQTLi
455
455
  pcapkit/vendor/tcp/option.py,sha256=8-0kq6GTKFCjHjxnDU3T-IUvjp5XA7MiCr2BN_aDonI,2958
456
456
  pcapkit/vendor/vlan/__init__.py,sha256=qvLktJ0yuoZokas6-_ZGwMJOzbujSCM8pZHQ9jjTegU,674
457
457
  pcapkit/vendor/vlan/priority_level.py,sha256=xVu6M-Ys4pft5I-qPCCxM-KfnMAUnZppD2qPO9gPkVE,2961
458
- pypcapkit-1.1.0.post2.dist-info/LICENSE,sha256=KkKND5E2e1Z6CQvSLPc1lRBy4xPRed41AG6q1txotWk,1516
459
- pypcapkit-1.1.0.post2.dist-info/METADATA,sha256=fP74tetp_5BxCSxqQPr1FOo8FMxQUCcVpr1205X3z08,7678
460
- pypcapkit-1.1.0.post2.dist-info/WHEEL,sha256=AtBG6SXL3KF_v0NxLf0ehyVOh0cold-JbJYXNGorC6Q,92
461
- pypcapkit-1.1.0.post2.dist-info/entry_points.txt,sha256=8tVaZ-N0S2t19ELoTEGq_OlC8-dSmd7dvNn-kMV3afY,100
462
- pypcapkit-1.1.0.post2.dist-info/top_level.txt,sha256=KEssKRhG9ln3EOfGH-yi98HgI-MM9hOHy09QQP-fvk8,8
463
- pypcapkit-1.1.0.post2.dist-info/RECORD,,
458
+ pypcapkit-1.1.1.dist-info/LICENSE,sha256=KkKND5E2e1Z6CQvSLPc1lRBy4xPRed41AG6q1txotWk,1516
459
+ pypcapkit-1.1.1.dist-info/METADATA,sha256=Np_WIVd0XLdvTn06u3lUepTVp1fwK511g8DixPrbL2c,7665
460
+ pypcapkit-1.1.1.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
461
+ pypcapkit-1.1.1.dist-info/entry_points.txt,sha256=8tVaZ-N0S2t19ELoTEGq_OlC8-dSmd7dvNn-kMV3afY,100
462
+ pypcapkit-1.1.1.dist-info/top_level.txt,sha256=KEssKRhG9ln3EOfGH-yi98HgI-MM9hOHy09QQP-fvk8,8
463
+ pypcapkit-1.1.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.0)
2
+ Generator: bdist_wheel (0.41.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5