pypcapkit 1.3.1.post6__cp38-none-any.whl → 1.3.1.post8__cp38-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 +1 -1
- pcapkit/const/reg/apptype.py +13 -4
- pcapkit/corekit/infoclass.py +2 -0
- pcapkit/dumpkit/pcap.py +13 -5
- pcapkit/protocols/data/application/ftp.py +2 -2
- pcapkit/protocols/data/application/httpv1.py +2 -1
- pcapkit/protocols/data/application/httpv2.py +2 -1
- pcapkit/protocols/data/internet/ah.py +2 -2
- pcapkit/protocols/data/internet/hip.py +2 -1
- pcapkit/protocols/data/internet/hopopt.py +2 -1
- pcapkit/protocols/data/internet/ipv4.py +2 -1
- pcapkit/protocols/data/internet/ipv6.py +2 -2
- pcapkit/protocols/data/internet/ipv6_frag.py +2 -2
- pcapkit/protocols/data/internet/ipv6_opts.py +2 -1
- pcapkit/protocols/data/internet/ipv6_route.py +2 -2
- pcapkit/protocols/data/internet/ipx.py +2 -1
- pcapkit/protocols/data/internet/mh.py +2 -1
- pcapkit/protocols/data/link/arp.py +2 -1
- pcapkit/protocols/data/link/ethernet.py +2 -1
- pcapkit/protocols/data/link/l2tp.py +4 -2
- pcapkit/protocols/data/link/ospf.py +4 -2
- pcapkit/protocols/data/link/vlan.py +2 -1
- pcapkit/protocols/data/misc/null.py +2 -2
- pcapkit/protocols/data/misc/pcap/frame.py +4 -2
- pcapkit/protocols/data/misc/pcap/header.py +2 -1
- pcapkit/protocols/data/misc/pcapng.py +16 -8
- pcapkit/protocols/data/misc/raw.py +3 -5
- pcapkit/protocols/data/protocol.py +8 -0
- pcapkit/protocols/data/transport/tcp.py +6 -3
- pcapkit/protocols/data/transport/udp.py +2 -2
- pcapkit/protocols/internet/internet.py +1 -1
- pcapkit/protocols/link/link.py +1 -1
- pcapkit/protocols/misc/pcap/frame.py +1 -1
- pcapkit/protocols/misc/pcapng.py +5 -2
- pcapkit/protocols/misc/raw.py +0 -1
- pcapkit/protocols/protocol.py +4 -1
- pcapkit/protocols/schema/__init__.py +0 -1
- pcapkit/protocols/schema/schema.py +1 -1
- pcapkit/protocols/transport/tcp.py +1 -1
- pcapkit/protocols/transport/udp.py +1 -1
- pcapkit/toolkit/pcapng.py +1 -1
- {pypcapkit-1.3.1.post6.dist-info → pypcapkit-1.3.1.post8.dist-info}/METADATA +1 -1
- {pypcapkit-1.3.1.post6.dist-info → pypcapkit-1.3.1.post8.dist-info}/RECORD +47 -47
- {pypcapkit-1.3.1.post6.dist-info → pypcapkit-1.3.1.post8.dist-info}/WHEEL +1 -1
- {pypcapkit-1.3.1.post6.dist-info → pypcapkit-1.3.1.post8.dist-info}/LICENSE +0 -0
- {pypcapkit-1.3.1.post6.dist-info → pypcapkit-1.3.1.post8.dist-info}/entry_points.txt +0 -0
- {pypcapkit-1.3.1.post6.dist-info → pypcapkit-1.3.1.post8.dist-info}/top_level.txt +0 -0
pcapkit/__init__.py
CHANGED
pcapkit/const/reg/apptype.py
CHANGED
@@ -11979,9 +11979,9 @@ class AppType(StrEnum):
|
|
11979
11979
|
#: - [UDP] Indura Collector
|
11980
11980
|
indura: 'AppType' = 3156, 'indura', TransportProtocol.get('tcp') | TransportProtocol.get('udp')
|
11981
11981
|
|
11982
|
-
#: - [TCP]
|
11983
|
-
#: - [UDP]
|
11984
|
-
|
11982
|
+
#: - [TCP] LSA Communicator
|
11983
|
+
#: - [UDP] LSA Communicator
|
11984
|
+
lsa_comm: 'AppType' = 3157, 'lsa-comm', TransportProtocol.get('tcp') | TransportProtocol.get('udp')
|
11985
11985
|
|
11986
11986
|
#: - [TCP] SmashTV Protocol
|
11987
11987
|
#: - [UDP] SmashTV Protocol
|
@@ -26086,6 +26086,12 @@ class AppType(StrEnum):
|
|
26086
26086
|
#: - [UDP] icl-twobase10
|
26087
26087
|
icl_twobase10: 'AppType' = 25009, 'icl-twobase10', TransportProtocol.get('tcp') | TransportProtocol.get('udp')
|
26088
26088
|
|
26089
|
+
#: [TCP] IBM Db2 Client Interface - Encrypted
|
26090
|
+
db2c_tls: 'AppType' = 25100, 'db2c-tls', TransportProtocol.get('tcp')
|
26091
|
+
|
26092
|
+
#: [UDP] Reserved
|
26093
|
+
reserved_25100: 'AppType' = 25100, 'reserved', TransportProtocol.get('udp')
|
26094
|
+
|
26089
26095
|
#: [SCTP] RNSAP User Adaptation for Iurh
|
26090
26096
|
rna: 'AppType' = 25471, 'rna', TransportProtocol.get('sctp')
|
26091
26097
|
|
@@ -32237,7 +32243,10 @@ class AppType(StrEnum):
|
|
32237
32243
|
if 24923 <= value <= 24999:
|
32238
32244
|
#: [N/A] Unassigned
|
32239
32245
|
return extend_enum(cls, 'unassigned_%d' % value, value, 'unassigned', TransportProtocol.get('undefined'))
|
32240
|
-
if 25010 <= value <=
|
32246
|
+
if 25010 <= value <= 25099:
|
32247
|
+
#: [N/A] Unassigned
|
32248
|
+
return extend_enum(cls, 'unassigned_%d' % value, value, 'unassigned', TransportProtocol.get('undefined'))
|
32249
|
+
if 25101 <= value <= 25470:
|
32241
32250
|
#: [N/A] Unassigned
|
32242
32251
|
return extend_enum(cls, 'unassigned_%d' % value, value, 'unassigned', TransportProtocol.get('undefined'))
|
32243
32252
|
if 25472 <= value <= 25575:
|
pcapkit/corekit/infoclass.py
CHANGED
@@ -325,6 +325,8 @@ class Info(Mapping[str, VT], Generic[VT], metaclass=InfoMeta):
|
|
325
325
|
|
326
326
|
def __iter__(self) -> 'Iterator[str]':
|
327
327
|
for key in self.__dict__:
|
328
|
+
if key in self.__excluded__:
|
329
|
+
continue
|
328
330
|
yield self.__map_reverse__.get(key, key)
|
329
331
|
|
330
332
|
def __getitem__(self, name: 'str') -> 'VT':
|
pcapkit/dumpkit/pcap.py
CHANGED
@@ -13,6 +13,7 @@ import sys
|
|
13
13
|
from typing import TYPE_CHECKING
|
14
14
|
|
15
15
|
from pcapkit.dumpkit.common import DumperBase as Dumper
|
16
|
+
from pcapkit.protocols.data.misc.pcap.header import Header as Data_Header
|
16
17
|
from pcapkit.protocols.misc.pcap.frame import Frame
|
17
18
|
from pcapkit.protocols.misc.pcap.header import Header
|
18
19
|
|
@@ -24,6 +25,7 @@ if TYPE_CHECKING:
|
|
24
25
|
from typing_extensions import Literal
|
25
26
|
|
26
27
|
from pcapkit.const.reg.linktype import LinkType as Enum_LinkType
|
28
|
+
from pcapkit.protocols.data.misc.pcap.frame import Frame as Data_Frame
|
27
29
|
|
28
30
|
__all__ = [
|
29
31
|
'PCAPIO',
|
@@ -41,6 +43,9 @@ class PCAPIO(Dumper):
|
|
41
43
|
**kwargs: arbitrary keyword arguments
|
42
44
|
|
43
45
|
"""
|
46
|
+
if TYPE_CHECKING:
|
47
|
+
#: PCAP file global header.
|
48
|
+
_ghdr: 'Data_Header'
|
44
49
|
|
45
50
|
##########################################################################
|
46
51
|
# Properties.
|
@@ -77,7 +82,7 @@ class PCAPIO(Dumper):
|
|
77
82
|
|
78
83
|
super().__init__(fname, protocol=protocol, byteorder=byteorder, nanosecond=nanosecond, **kwargs)
|
79
84
|
|
80
|
-
def __call__(self, value: '
|
85
|
+
def __call__(self, value: 'Data_Frame', name: 'Optional[str]' = None) -> 'PCAPIO':
|
81
86
|
"""Dump a new frame.
|
82
87
|
|
83
88
|
Args:
|
@@ -108,15 +113,17 @@ class PCAPIO(Dumper):
|
|
108
113
|
**kwargs: arbitrary keyword arguments
|
109
114
|
|
110
115
|
"""
|
111
|
-
|
116
|
+
header = Header(
|
112
117
|
network=protocol,
|
113
118
|
byteorder=byteorder,
|
114
119
|
nanosecond=nanosecond,
|
115
|
-
)
|
120
|
+
)
|
121
|
+
packet = header.data
|
116
122
|
with open(self._file, 'wb') as file:
|
117
123
|
file.write(packet)
|
124
|
+
self._ghdr = header.info
|
118
125
|
|
119
|
-
def _append_value(self, value: '
|
126
|
+
def _append_value(self, value: 'Data_Frame', file: 'IO[bytes]', name: 'str') -> 'None': # pylint: disable=unused-argument
|
120
127
|
"""Call this function to write contents.
|
121
128
|
|
122
129
|
Args:
|
@@ -130,7 +137,8 @@ class PCAPIO(Dumper):
|
|
130
137
|
num=self._fnum,
|
131
138
|
proto=self._link,
|
132
139
|
packet=value.packet,
|
133
|
-
|
140
|
+
header=self._ghdr,
|
141
|
+
**value.frame_info,
|
134
142
|
).data
|
135
143
|
file.write(packet)
|
136
144
|
self._fnum += 1
|
@@ -5,7 +5,7 @@
|
|
5
5
|
from typing import TYPE_CHECKING
|
6
6
|
|
7
7
|
from pcapkit.corekit.infoclass import info_final
|
8
|
-
from pcapkit.protocols.data.
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
9
9
|
|
10
10
|
if TYPE_CHECKING:
|
11
11
|
from typing_extensions import Literal
|
@@ -20,7 +20,7 @@ __all__ = [
|
|
20
20
|
]
|
21
21
|
|
22
22
|
|
23
|
-
class FTP(
|
23
|
+
class FTP(Protocol):
|
24
24
|
"""Data model for FTP protocol."""
|
25
25
|
|
26
26
|
#: Type.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from typing import Any
|
@@ -23,7 +24,7 @@ __all__ = [
|
|
23
24
|
|
24
25
|
|
25
26
|
@info_final
|
26
|
-
class HTTP(
|
27
|
+
class HTTP(Protocol):
|
27
28
|
"""Data model for HTTP/1.* protocol."""
|
28
29
|
|
29
30
|
#: HTTP receipt.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from typing import Optional
|
@@ -38,7 +39,7 @@ class Flags(Data):
|
|
38
39
|
__value__: 'FrameType.Flags'
|
39
40
|
|
40
41
|
|
41
|
-
class HTTP(
|
42
|
+
class HTTP(Protocol):
|
42
43
|
"""Data model for HTTP/2 protocol."""
|
43
44
|
|
44
45
|
#: Length.
|
@@ -4,7 +4,7 @@
|
|
4
4
|
from typing import TYPE_CHECKING
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
|
-
from pcapkit.protocols.data.
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
8
|
|
9
9
|
if TYPE_CHECKING:
|
10
10
|
from pcapkit.const.reg.transtype import TransType
|
@@ -13,7 +13,7 @@ __all__ = ['AH']
|
|
13
13
|
|
14
14
|
|
15
15
|
@info_final
|
16
|
-
class AH(
|
16
|
+
class AH(Protocol):
|
17
17
|
"""Data model for AH protocol."""
|
18
18
|
|
19
19
|
#: Next header.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from datetime import timedelta
|
@@ -82,7 +83,7 @@ class Parameter(Data):
|
|
82
83
|
|
83
84
|
|
84
85
|
@info_final
|
85
|
-
class HIP(
|
86
|
+
class HIP(Protocol):
|
86
87
|
"""Data model for HIP header."""
|
87
88
|
|
88
89
|
#: Next header.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from datetime import timedelta
|
@@ -50,7 +51,7 @@ class Option(Data):
|
|
50
51
|
|
51
52
|
|
52
53
|
@info_final
|
53
|
-
class HOPOPT(
|
54
|
+
class HOPOPT(Protocol):
|
54
55
|
"""Data model for HOPOPT protocol."""
|
55
56
|
|
56
57
|
#: Next header.
|
@@ -7,6 +7,7 @@ from pcapkit.const.ipv4.option_class import OptionClass
|
|
7
7
|
from pcapkit.const.ipv4.tos_del import ToSDelay
|
8
8
|
from pcapkit.corekit.infoclass import info_final
|
9
9
|
from pcapkit.protocols.data.data import Data
|
10
|
+
from pcapkit.protocols.data.protocol import Protocol
|
10
11
|
|
11
12
|
if TYPE_CHECKING:
|
12
13
|
from datetime import timedelta
|
@@ -88,7 +89,7 @@ class Flags(Data):
|
|
88
89
|
|
89
90
|
|
90
91
|
@info_final
|
91
|
-
class IPv4(
|
92
|
+
class IPv4(Protocol):
|
92
93
|
"""Data model for IPv4 packet."""
|
93
94
|
|
94
95
|
#: Version.
|
@@ -4,7 +4,7 @@
|
|
4
4
|
from typing import TYPE_CHECKING
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
|
-
from pcapkit.protocols.data.
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
8
|
|
9
9
|
if TYPE_CHECKING:
|
10
10
|
from ipaddress import IPv6Address
|
@@ -21,7 +21,7 @@ __all__ = [
|
|
21
21
|
|
22
22
|
|
23
23
|
@info_final
|
24
|
-
class IPv6(
|
24
|
+
class IPv6(Protocol):
|
25
25
|
"""Data model for Internet Protocol version 6.
|
26
26
|
|
27
27
|
Important:
|
@@ -4,7 +4,7 @@
|
|
4
4
|
from typing import TYPE_CHECKING
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
|
-
from pcapkit.protocols.data.
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
8
|
|
9
9
|
if TYPE_CHECKING:
|
10
10
|
from pcapkit.const.reg.transtype import TransType
|
@@ -13,7 +13,7 @@ __all__ = ['IPv6_Frag']
|
|
13
13
|
|
14
14
|
|
15
15
|
@info_final
|
16
|
-
class IPv6_Frag(
|
16
|
+
class IPv6_Frag(Protocol):
|
17
17
|
"""Data model for IPv6 fragment header."""
|
18
18
|
|
19
19
|
#: Next header.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from datetime import timedelta
|
@@ -50,7 +51,7 @@ class Option(Data):
|
|
50
51
|
|
51
52
|
|
52
53
|
@info_final
|
53
|
-
class IPv6_Opts(
|
54
|
+
class IPv6_Opts(Protocol):
|
54
55
|
"""Data model for IPv6-Opts protocol."""
|
55
56
|
|
56
57
|
#: Next header.
|
@@ -4,7 +4,7 @@
|
|
4
4
|
from typing import TYPE_CHECKING
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
|
-
from pcapkit.protocols.data.
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
8
|
|
9
9
|
if TYPE_CHECKING:
|
10
10
|
from ipaddress import IPv6Address
|
@@ -19,7 +19,7 @@ __all__ = [
|
|
19
19
|
]
|
20
20
|
|
21
21
|
|
22
|
-
class IPv6_Route(
|
22
|
+
class IPv6_Route(Protocol):
|
23
23
|
"""Data model for IPv6-Route protocol."""
|
24
24
|
|
25
25
|
#: Next header.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from pcapkit.const.ipx.packet import Packet
|
@@ -35,7 +36,7 @@ class Address(Data):
|
|
35
36
|
|
36
37
|
|
37
38
|
@info_final
|
38
|
-
class IPX(
|
39
|
+
class IPX(Protocol):
|
39
40
|
"""Data model for Internetwork Packet Exchange."""
|
40
41
|
|
41
42
|
#: Checksum.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from datetime import datetime as dt_type
|
@@ -84,7 +85,7 @@ __all__ = [
|
|
84
85
|
]
|
85
86
|
|
86
87
|
|
87
|
-
class MH(
|
88
|
+
class MH(Protocol):
|
88
89
|
"""Data model for MH protocol."""
|
89
90
|
|
90
91
|
#: Next header.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from ipaddress import IPv4Address, IPv6Address
|
@@ -43,7 +44,7 @@ class Type(Data):
|
|
43
44
|
|
44
45
|
|
45
46
|
@info_final
|
46
|
-
class ARP(
|
47
|
+
class ARP(Protocol):
|
47
48
|
"""Data model for ARP packet."""
|
48
49
|
|
49
50
|
#: Hardware type.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from pcapkit.const.reg.ethertype import EtherType
|
@@ -13,7 +14,7 @@ __all__ = ['Ethernet']
|
|
13
14
|
|
14
15
|
|
15
16
|
@info_final
|
16
|
-
class Ethernet(
|
17
|
+
class Ethernet(Protocol):
|
17
18
|
"""Data model for ethernet packet."""
|
18
19
|
|
19
20
|
#: Destination MAC address.
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from typing import Optional
|
@@ -34,7 +35,7 @@ class Flags(Data):
|
|
34
35
|
|
35
36
|
|
36
37
|
@info_final
|
37
|
-
class L2TP(
|
38
|
+
class L2TP(Protocol):
|
38
39
|
"""Data model for L2TP packet."""
|
39
40
|
|
40
41
|
#: Flags and version info.
|
@@ -58,4 +59,5 @@ class L2TP(Data):
|
|
58
59
|
#: Header length.
|
59
60
|
hdr_len: 'int'
|
60
61
|
|
61
|
-
def __init__(self, flags: 'Flags', version: 'int', length: 'Optional[int]', tunnelid: 'int', sessionid: 'int',
|
62
|
+
def __init__(self, flags: 'Flags', version: 'int', length: 'Optional[int]', tunnelid: 'int', sessionid: 'int',
|
63
|
+
ns: 'Optional[int]', nr: 'Optional[int]', offset: 'Optional[int]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,redefined-builtin,multiple-statements,line-too-long
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from ipaddress import IPv4Address
|
@@ -31,7 +32,7 @@ class CrytographicAuthentication(Data):
|
|
31
32
|
|
32
33
|
|
33
34
|
@info_final
|
34
|
-
class OSPF(
|
35
|
+
class OSPF(Protocol):
|
35
36
|
"""Data model for OSPF packet."""
|
36
37
|
|
37
38
|
#: Version number.
|
@@ -53,4 +54,5 @@ class OSPF(Data):
|
|
53
54
|
#: Authentication.
|
54
55
|
auth: 'bytes | CrytographicAuthentication'
|
55
56
|
|
56
|
-
def __init__(self, version: 'int', type: 'Packet', len: 'int', router_id: 'IPv4Address',
|
57
|
+
def __init__(self, version: 'int', type: 'Packet', len: 'int', router_id: 'IPv4Address',
|
58
|
+
area_id: 'IPv4Address', chksum: 'bytes', autype: 'Authentication') -> 'None': ... # pylint: disable=super-init-not-called,unused-argument,line-too-long,multiple-statements,redefined-builtin
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from pcapkit.const.reg.ethertype import EtherType
|
@@ -29,7 +30,7 @@ class TCI(Data):
|
|
29
30
|
|
30
31
|
|
31
32
|
@info_final
|
32
|
-
class VLAN(
|
33
|
+
class VLAN(Protocol):
|
33
34
|
"""Data model for 802.1Q customer VLAN tag type."""
|
34
35
|
|
35
36
|
#: Tag control information.
|
@@ -2,13 +2,13 @@
|
|
2
2
|
"""data models for no-payload packet"""
|
3
3
|
|
4
4
|
from pcapkit.corekit.infoclass import info_final
|
5
|
-
from pcapkit.protocols.data.
|
5
|
+
from pcapkit.protocols.data.protocol import Protocol
|
6
6
|
|
7
7
|
__all__ = ['NoPayload']
|
8
8
|
|
9
9
|
|
10
10
|
@info_final
|
11
|
-
class NoPayload(
|
11
|
+
class NoPayload(Protocol):
|
12
12
|
"""No-payload packet is an empty packet."""
|
13
13
|
|
14
14
|
# NOTE: We add this method for both type annotation and to mark that this
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from datetime import datetime
|
@@ -31,7 +32,7 @@ class FrameInfo(Data):
|
|
31
32
|
|
32
33
|
|
33
34
|
@info_final
|
34
|
-
class Frame(
|
35
|
+
class Frame(Protocol):
|
35
36
|
"""Frame header of PCAP file."""
|
36
37
|
|
37
38
|
#: Metadata information.
|
@@ -51,4 +52,5 @@ class Frame(Data):
|
|
51
52
|
#: Protocol chain.
|
52
53
|
protocols: 'str'
|
53
54
|
|
54
|
-
def __init__(self, frame_info: 'FrameInfo', time: 'datetime', number: 'int', time_epoch: 'Decimal',
|
55
|
+
def __init__(self, frame_info: 'FrameInfo', time: 'datetime', number: 'int', time_epoch: 'Decimal',
|
56
|
+
len: 'int', cap_len: 'int') -> 'None': ... # pylint: disable=unused-argument,multiple-statements,super-init-not-called,line-too-long,redefined-builtin
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from typing_extensions import Literal
|
@@ -31,7 +32,7 @@ class MagicNumber(Data):
|
|
31
32
|
|
32
33
|
|
33
34
|
@info_final
|
34
|
-
class Header(
|
35
|
+
class Header(Protocol):
|
35
36
|
"""Global header of PCAP file."""
|
36
37
|
|
37
38
|
#: Magic number.
|
@@ -8,6 +8,7 @@ from typing import TYPE_CHECKING
|
|
8
8
|
from pcapkit.corekit.infoclass import info_final
|
9
9
|
from pcapkit.corekit.multidict import MultiDict
|
10
10
|
from pcapkit.protocols.data.data import Data
|
11
|
+
from pcapkit.protocols.data.protocol import Protocol
|
11
12
|
from pcapkit.utilities.compat import localcontext
|
12
13
|
|
13
14
|
__all__ = [
|
@@ -59,7 +60,7 @@ if TYPE_CHECKING:
|
|
59
60
|
WireGuardKeyLabel)
|
60
61
|
|
61
62
|
|
62
|
-
class PCAPNG(
|
63
|
+
class PCAPNG(Protocol):
|
63
64
|
"""Data model for PCAP-NG file blocks."""
|
64
65
|
|
65
66
|
#: Block type.
|
@@ -145,7 +146,8 @@ class SectionHeaderBlock(PCAPNG):
|
|
145
146
|
options: 'OrderedMultiDict[Enum_OptionType, Option]'
|
146
147
|
|
147
148
|
if TYPE_CHECKING:
|
148
|
-
def __init__(self, type: 'Enum_BlockType', length: 'int', byteorder: 'Literal["big", "little"]',
|
149
|
+
def __init__(self, type: 'Enum_BlockType', length: 'int', byteorder: 'Literal["big", "little"]',
|
150
|
+
version: 'VersionInfo', # pylint: disable=unused-argument
|
149
151
|
section_length: 'int', options: 'OrderedMultiDict[Enum_OptionType, Option]') -> None: ...
|
150
152
|
|
151
153
|
|
@@ -255,7 +257,8 @@ class IF_FilterOption(Option):
|
|
255
257
|
expression: 'bytes'
|
256
258
|
|
257
259
|
if TYPE_CHECKING:
|
258
|
-
def __init__(self, type: 'Enum_OptionType', length: 'int', code: 'Enum_FilterType',
|
260
|
+
def __init__(self, type: 'Enum_OptionType', length: 'int', code: 'Enum_FilterType',
|
261
|
+
expression: 'bytes') -> None: ...
|
259
262
|
|
260
263
|
|
261
264
|
@info_final
|
@@ -384,7 +387,8 @@ class EPB_HashOption(Option):
|
|
384
387
|
hash: 'bytes'
|
385
388
|
|
386
389
|
if TYPE_CHECKING:
|
387
|
-
def __init__(self, type: 'Enum_OptionType', length: 'int', algorithm: 'Enum_HashAlgorithm',
|
390
|
+
def __init__(self, type: 'Enum_OptionType', length: 'int', algorithm: 'Enum_HashAlgorithm',
|
391
|
+
hash: 'bytes') -> 'None': ...
|
388
392
|
|
389
393
|
|
390
394
|
@info_final
|
@@ -430,7 +434,8 @@ class EPB_VerdictOption(Option):
|
|
430
434
|
value: 'bytes'
|
431
435
|
|
432
436
|
if TYPE_CHECKING:
|
433
|
-
def __init__(self, type: 'Enum_OptionType', length: 'int', verdict: 'Enum_VerdictType',
|
437
|
+
def __init__(self, type: 'Enum_OptionType', length: 'int', verdict: 'Enum_VerdictType',
|
438
|
+
value: 'bytes') -> 'None': ...
|
434
439
|
|
435
440
|
|
436
441
|
@info_final
|
@@ -623,7 +628,8 @@ class NameResolutionBlock(PCAPNG):
|
|
623
628
|
#: Name resolution mapping (name -> IP address).
|
624
629
|
reverse_mapping: 'MultiDict[str, IPv4Address | IPv6Address]'
|
625
630
|
|
626
|
-
def __init__(self, type: 'Enum_BlockType', length: 'int',
|
631
|
+
def __init__(self, type: 'Enum_BlockType', length: 'int',
|
632
|
+
records: 'OrderedMultiDict[Enum_RecordType, NameResolutionRecord]',
|
627
633
|
options: 'OrderedMultiDict[Enum_OptionType, Option]') -> 'None': ...
|
628
634
|
|
629
635
|
|
@@ -736,7 +742,8 @@ class SystemdJournalExportBlock(PCAPNG):
|
|
736
742
|
data: 'tuple[OrderedMultiDict[str, str | bytes], ...]'
|
737
743
|
|
738
744
|
if TYPE_CHECKING:
|
739
|
-
def __init__(self, type: 'Enum_BlockType', length: 'int',
|
745
|
+
def __init__(self, type: 'Enum_BlockType', length: 'int',
|
746
|
+
data: 'tuple[OrderedMultiDict[str, str | bytes], ...]') -> 'None': ...
|
740
747
|
|
741
748
|
|
742
749
|
class DSBSecrets(Data):
|
@@ -880,7 +887,8 @@ class PACK_HashOption(Option):
|
|
880
887
|
hash: 'bytes'
|
881
888
|
|
882
889
|
if TYPE_CHECKING:
|
883
|
-
def __init__(self, type: 'Enum_OptionType', length: 'int', algorithm: 'Enum_HashAlgorithm',
|
890
|
+
def __init__(self, type: 'Enum_OptionType', length: 'int', algorithm: 'Enum_HashAlgorithm',
|
891
|
+
hash: 'bytes') -> 'None': ...
|
884
892
|
|
885
893
|
|
886
894
|
@info_final
|
@@ -4,7 +4,7 @@
|
|
4
4
|
from typing import TYPE_CHECKING
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
|
-
from pcapkit.protocols.data.
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
8
|
|
9
9
|
if TYPE_CHECKING:
|
10
10
|
from typing import Optional
|
@@ -13,15 +13,13 @@ __all__ = ['Raw']
|
|
13
13
|
|
14
14
|
|
15
15
|
@info_final
|
16
|
-
class Raw(
|
16
|
+
class Raw(Protocol):
|
17
17
|
"""Raw packet is an unknown protocol."""
|
18
18
|
|
19
19
|
#: Original enumeration of this protocol.
|
20
20
|
protocol: 'Optional[int]'
|
21
|
-
#: packet data
|
22
|
-
packet: 'bytes'
|
23
21
|
#: error instance when parsing packet data
|
24
22
|
error: 'Optional[Exception]'
|
25
23
|
|
26
24
|
if TYPE_CHECKING:
|
27
|
-
def __init__(self, protocol: 'Optional[int]',
|
25
|
+
def __init__(self, protocol: 'Optional[int]', error: 'Optional[Exception]') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements
|
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
7
|
from pcapkit.protocols.data.data import Data
|
8
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
9
|
|
9
10
|
if TYPE_CHECKING:
|
10
11
|
from datetime import timedelta
|
@@ -67,11 +68,12 @@ class Flags(Data):
|
|
67
68
|
fin: 'bool'
|
68
69
|
|
69
70
|
if TYPE_CHECKING:
|
70
|
-
def __init__(self, cwr: 'bool', ece: 'bool', urg: 'bool', ack: 'bool',
|
71
|
+
def __init__(self, cwr: 'bool', ece: 'bool', urg: 'bool', ack: 'bool',
|
72
|
+
psh: 'bool', rst: 'bool', syn: 'bool', fin: 'bool') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
71
73
|
|
72
74
|
|
73
75
|
@info_final
|
74
|
-
class TCP(
|
76
|
+
class TCP(Protocol):
|
75
77
|
"""Data model for TCP packet."""
|
76
78
|
|
77
79
|
#: Source port.
|
@@ -99,7 +101,8 @@ class TCP(Data):
|
|
99
101
|
#: Connection control flags.
|
100
102
|
connection: 'TCP_Flags'
|
101
103
|
|
102
|
-
def __init__(self, srcport: 'AppType', dstport: 'AppType', seq: 'int', ack: 'int', hdr_len: 'int',
|
104
|
+
def __init__(self, srcport: 'AppType', dstport: 'AppType', seq: 'int', ack: 'int', hdr_len: 'int',
|
105
|
+
flags: 'Flags', window_size: 'int', checksum: 'bytes', urgent_pointer: 'int') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
|
103
106
|
|
104
107
|
|
105
108
|
class Option(Data):
|
@@ -4,7 +4,7 @@
|
|
4
4
|
from typing import TYPE_CHECKING
|
5
5
|
|
6
6
|
from pcapkit.corekit.infoclass import info_final
|
7
|
-
from pcapkit.protocols.data.
|
7
|
+
from pcapkit.protocols.data.protocol import Protocol
|
8
8
|
|
9
9
|
if TYPE_CHECKING:
|
10
10
|
from pcapkit.const.reg.apptype import AppType
|
@@ -13,7 +13,7 @@ __all__ = ['UDP']
|
|
13
13
|
|
14
14
|
|
15
15
|
@info_final
|
16
|
-
class UDP(
|
16
|
+
class UDP(Protocol):
|
17
17
|
"""Data model for UDP protocol."""
|
18
18
|
|
19
19
|
#: Source port.
|
@@ -83,7 +83,7 @@ class Internet(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstra
|
|
83
83
|
#: c.f. :meth:`self._decode_next_layer <pcapkit.protocols.internet.internet.Internet._decode_next_layer>`
|
84
84
|
#: & :meth:`self._import_next_layer <pcapkit.protocols.internet.internet.Internet._import_next_layer>`.
|
85
85
|
__proto__ = collections.defaultdict(
|
86
|
-
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
86
|
+
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
87
87
|
{
|
88
88
|
Enum_TransType.HOPOPT: ModuleDescriptor('pcapkit.protocols.internet.hopopt', 'HOPOPT'),
|
89
89
|
Enum_TransType.IPv4: ModuleDescriptor('pcapkit.protocols.internet.ipv4', 'IPv4'),
|
pcapkit/protocols/link/link.py
CHANGED
@@ -72,7 +72,7 @@ class Link(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-m
|
|
72
72
|
#: c.f. :meth:`self._decode_next_layer <pcapkit.protocols.protocol.Protocol._decode_next_layer>`
|
73
73
|
#: & :meth:`self._import_next_layer <pcapkit.protocols.protocol.Protocol._import_next_layer>`.
|
74
74
|
__proto__ = collections.defaultdict(
|
75
|
-
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
75
|
+
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
76
76
|
{
|
77
77
|
Enum_EtherType.Address_Resolution_Protocol: ModuleDescriptor('pcapkit.protocols.link.arp', 'ARP'),
|
78
78
|
Enum_EtherType.Reverse_Address_Resolution_Protocol: ModuleDescriptor('pcapkit.protocols.link.rarp', 'RARP'),
|
@@ -88,7 +88,7 @@ class Frame(Protocol[Data_Frame, Schema_Frame],
|
|
88
88
|
#: The values should be a tuple representing the module name and class name, or
|
89
89
|
#: a :class:`~pcapkit.protocols.protocol.Protocol` subclass.
|
90
90
|
__proto__ = collections.defaultdict(
|
91
|
-
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
91
|
+
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
92
92
|
{
|
93
93
|
Enum_LinkType.ETHERNET: ModuleDescriptor('pcapkit.protocols.link', 'Ethernet'),
|
94
94
|
Enum_LinkType.IPV4: ModuleDescriptor('pcapkit.protocols.internet', 'IPv4'),
|
pcapkit/protocols/misc/pcapng.py
CHANGED
@@ -524,7 +524,7 @@ class PCAPNG(Protocol[Data_PCAPNG, Schema_PCAPNG],
|
|
524
524
|
#: The values should be a tuple representing the module name and class name,
|
525
525
|
#: or a :class:`~pcapkit.protocols.protocol.Protocol` subclass.
|
526
526
|
__proto__ = collections.defaultdict(
|
527
|
-
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
527
|
+
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
528
528
|
{
|
529
529
|
Enum_LinkType.ETHERNET: ModuleDescriptor('pcapkit.protocols.link', 'Ethernet'),
|
530
530
|
Enum_LinkType.IPV4: ModuleDescriptor('pcapkit.protocols.internet', 'IPv4'),
|
@@ -862,7 +862,10 @@ class PCAPNG(Protocol[Data_PCAPNG, Schema_PCAPNG],
|
|
862
862
|
self._byte = self._ctx.section.byteorder
|
863
863
|
packet['byteorder'] = self._byte
|
864
864
|
self.__header__ = cast('Schema_PCAPNG', self.__schema__.unpack(self._file, length, packet)) # type: ignore[call-arg,misc]
|
865
|
-
|
865
|
+
|
866
|
+
data = self.read(length, **kwargs)
|
867
|
+
data.__update__(packet=self.packet.payload)
|
868
|
+
return data
|
866
869
|
|
867
870
|
def read(self, length: 'Optional[int]' = None, *, _read: 'bool' = True,
|
868
871
|
_seek_set: 'int' = 0, **kwargs: 'Any') -> 'Data_PCAPNG':
|
pcapkit/protocols/misc/raw.py
CHANGED
pcapkit/protocols/protocol.py
CHANGED
@@ -116,7 +116,7 @@ class ProtocolBase(Generic[_PT, _ST], metaclass=ProtocolMeta):
|
|
116
116
|
#: The values should be a tuple representing the module name and class name,
|
117
117
|
#: or a :class:`Protocol` subclass.
|
118
118
|
__proto__: 'DefaultDict[int, ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]]' = collections.defaultdict(
|
119
|
-
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
119
|
+
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
120
120
|
)
|
121
121
|
|
122
122
|
##########################################################################
|
@@ -520,6 +520,9 @@ class ProtocolBase(Generic[_PT, _ST], metaclass=ProtocolMeta):
|
|
520
520
|
# post-init customisations
|
521
521
|
self.__post_init__(file, length, **kwargs) # type: ignore[arg-type]
|
522
522
|
|
523
|
+
# inject packet payload to the info dict
|
524
|
+
self._info.__update__(packet=self.packet.payload)
|
525
|
+
|
523
526
|
@overload
|
524
527
|
def __post_init__(self, file: 'IO[bytes] | bytes', length: 'Optional[int]' = ..., **kwargs: 'Any') -> 'None': ...
|
525
528
|
@overload
|
@@ -50,7 +50,6 @@ __all__ = [
|
|
50
50
|
'HIP_RelayToParameter', 'HIP_RouteViaParameter', 'HIP_FromParameter',
|
51
51
|
'HIP_RVSHMACParameter', 'HIP_RelayHMACParameter',
|
52
52
|
'IPv4',
|
53
|
-
'IPv4_OptionType',
|
54
53
|
'IPv4_UnassignedOption', 'IPv4_EOOLOption', 'IPv4_NOPOption',
|
55
54
|
'IPv4_SECOption', 'IPv4_LSROption', 'IPv4_TSOption',
|
56
55
|
'IPv4_ESECOption', 'IPv4_RROption', 'IPv4_SIDOption',
|
@@ -65,7 +65,7 @@ def schema_final(cls: '_ST', *, _finalised: 'bool' = True) -> '_ST':
|
|
65
65
|
'__payload__', '__finalised__']
|
66
66
|
temp.extend(cls.__additional__)
|
67
67
|
for obj in cls.mro():
|
68
|
-
temp.extend(dir(obj))
|
68
|
+
temp.extend(el for el in dir(obj) if el not in cls.__fields__)
|
69
69
|
cls.__builtin__ = set(temp)
|
70
70
|
cls.__excluded__.extend(cls.__builtin__)
|
71
71
|
|
@@ -307,7 +307,7 @@ class TCP(Transport[Data_TCP, Schema_TCP],
|
|
307
307
|
#: :meth:`self._decode_next_layer <pcapkit.protocols.transport.transport.Transport._decode_next_layer>`
|
308
308
|
#: & :meth:`self._import_next_layer <pcapkit.protocols.protocol.Protocol._import_next_layer>`.
|
309
309
|
__proto__ = collections.defaultdict(
|
310
|
-
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
310
|
+
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
311
311
|
{
|
312
312
|
21: ModuleDescriptor('pcapkit.protocols.application.ftp', 'FTP'), # FTP
|
313
313
|
80: ModuleDescriptor('pcapkit.protocols.application.httpv1', 'HTTP'), # HTTP/1.*
|
@@ -70,7 +70,7 @@ class UDP(Transport[Data_UDP, Schema_UDP],
|
|
70
70
|
#: :meth:`self._decode_next_layer <pcapkit.protocols.transport.transport.Transport._decode_next_layer>`
|
71
71
|
#: & :meth:`self._import_next_layer <pcapkit.protocols.protocol.Protocol._import_next_layer>`.
|
72
72
|
__proto__ = collections.defaultdict(
|
73
|
-
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
73
|
+
lambda: ModuleDescriptor('pcapkit.protocols.misc.raw', 'Raw'),
|
74
74
|
{
|
75
75
|
80: ModuleDescriptor('pcapkit.protocols.application.http', 'HTTP'), # HTTP
|
76
76
|
},
|
pcapkit/toolkit/pcapng.py
CHANGED
@@ -22,7 +22,6 @@ from pcapkit.protocols.data.misc.pcap.frame import FrameInfo as Data_FrameInfo
|
|
22
22
|
if TYPE_CHECKING:
|
23
23
|
from ipaddress import IPv4Address, IPv6Address
|
24
24
|
|
25
|
-
from pcapkit.const.reg.linktype import LinkType
|
26
25
|
from pcapkit.protocols.internet.ipv4 import IPv4
|
27
26
|
from pcapkit.protocols.internet.ipv6 import IPv6
|
28
27
|
from pcapkit.protocols.internet.ipv6_frag import IPv6_Frag
|
@@ -248,4 +247,5 @@ def block2frame(block: 'Packet', *, nanosecond: 'bool' = False) -> 'Data_Frame':
|
|
248
247
|
len=block.original_len,
|
249
248
|
cap_len=block.captured_len,
|
250
249
|
)
|
250
|
+
frame.__update__(packet=block.packet)
|
251
251
|
return frame
|
@@ -1,4 +1,4 @@
|
|
1
|
-
pcapkit/__init__.py,sha256=
|
1
|
+
pcapkit/__init__.py,sha256=S4lkS3FVsA6rQeEJYkLjYg1n_AAaq2do3IvVvcPbOlw,4097
|
2
2
|
pcapkit/__main__.py,sha256=pckITFrDzzXCXPM_r03AAhvpGyqFWdwyKDkGRZENiv4,6313
|
3
3
|
pcapkit/all.py,sha256=6G7rVFlajYk98F5vCYcLOw-CkXdEw4C2zAwnTgU0asU,6679
|
4
4
|
pcapkit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -117,7 +117,7 @@ pcapkit/const/pcapng/record_type.py,sha256=4rZytbhhF6u5SPvQ8ew3jx4OhN_rwDQG3I4Jl
|
|
117
117
|
pcapkit/const/pcapng/secrets_type.py,sha256=n_662aowLtqA25ilbdG6BWb2rYmrdBJt79_SISzfJkw,1578
|
118
118
|
pcapkit/const/pcapng/verdict_type.py,sha256=_jEkN0g6CX-DGshAj-lUiZjiwdK7Fqou2pnzgZ-WyIk,1476
|
119
119
|
pcapkit/const/reg/__init__.py,sha256=xKABPHwDQ0diN2sFA7hkw42FNsb6tx294XemEjTs2g8,1469
|
120
|
-
pcapkit/const/reg/apptype.py,sha256=
|
120
|
+
pcapkit/const/reg/apptype.py,sha256=yUyEdBpDJiE-DtLRZh19l3bcYYptoFXsjko3M8EsOBo,1430042
|
121
121
|
pcapkit/const/reg/ethertype.py,sha256=Ie2rI6rEC6Us05jtK-hHkrzad6ecTSktK56tLn52TfQ,26732
|
122
122
|
pcapkit/const/reg/linktype.py,sha256=waebkNbqjfQTn7kySBmUCoVYNxWYL33pZxPcJurmrnE,36784
|
123
123
|
pcapkit/const/reg/transtype.py,sha256=ulnDwzkZ6WmCpusfsSoBwiT-WROPbDQZNFAX3caM0lo,12910
|
@@ -129,7 +129,7 @@ pcapkit/const/tcp/option.py,sha256=JdbYPsWSTeWBV-ZqsSV0PcliGH96hfxc9VvoVYCYQJc,5
|
|
129
129
|
pcapkit/const/vlan/__init__.py,sha256=e58kBqVyx-aNe10uWkfI1grb1gI5t-VxyYnmP4qT2bM,690
|
130
130
|
pcapkit/const/vlan/priority_level.py,sha256=lditGE8zcRNmCnPW7lTM45R5Q9RQ-CqBRkqGGDSByJw,1936
|
131
131
|
pcapkit/corekit/__init__.py,sha256=YcNlfudunIO0cnpU7xX_r-xZafcO39TmS8Vp7z45BjE,1659
|
132
|
-
pcapkit/corekit/infoclass.py,sha256=
|
132
|
+
pcapkit/corekit/infoclass.py,sha256=cRzOD5dtYe-rgS9-UF4XAgwqVmvaBoqPjIgvJ03EJI0,14523
|
133
133
|
pcapkit/corekit/io.py,sha256=ugc1LVIVcVQx2JKcVgdYw92oHmdObitYLWOGWWRrnSM,19991
|
134
134
|
pcapkit/corekit/module.py,sha256=w-y1wBTV2EZvkxa6dQmyVjC17uIOcoBhXQFLbhp6pRc,988
|
135
135
|
pcapkit/corekit/multidict.py,sha256=VuB9-DFZYpl_Z0z07YAhykoj9_ccHCp1RDG3uCceC1s,22015
|
@@ -145,7 +145,7 @@ pcapkit/corekit/fields/strings.py,sha256=U9Q5_EvO_0PwHoWtpuQ1fw0jrcvs9HdZyWO_IIK
|
|
145
145
|
pcapkit/dumpkit/__init__.py,sha256=Q8eZXOAxPqMojnGfE3ypqxRQOv8wuQfinAabe2W3P6E,370
|
146
146
|
pcapkit/dumpkit/common.py,sha256=oYqT8owCxYoIis4OctGfNTKtpXHL6ncMfihzBUCJ_Bo,7024
|
147
147
|
pcapkit/dumpkit/null.py,sha256=KdlTF3bHLqZpQnbfxVHrZegQfFve8kPoupQneghqSHQ,2270
|
148
|
-
pcapkit/dumpkit/pcap.py,sha256=
|
148
|
+
pcapkit/dumpkit/pcap.py,sha256=douAnkCm5enq3G7h4KIj1u_BKqOwFxbaxbR3RJfCGec,4737
|
149
149
|
pcapkit/foundation/__init__.py,sha256=clRCrONNK-WMrhTRRNWLOhgb5L4R-tFgURbORV4drbM,1491
|
150
150
|
pcapkit/foundation/extraction.py,sha256=kwU1D_sLLjwbBUuK4NFyQmXaVoE_aZzOJ1nyTb_FT44,38786
|
151
151
|
pcapkit/foundation/engines/__init__.py,sha256=sEukcs7IaJbWOFOvYrFuGHACZeHhFPQZVfLDiDyVDMo,921
|
@@ -176,7 +176,7 @@ pcapkit/interface/__init__.py,sha256=UnQ1wjAWjP4iTA8HGRNonYDegDzCps4f7oWt7GK4kUE
|
|
176
176
|
pcapkit/interface/core.py,sha256=l-fomBF0lonkyEML8C4R-pYvqrhCGOfeLRWusknTQYI,8424
|
177
177
|
pcapkit/interface/misc.py,sha256=viLrss71P793OCNH45Ry8FybJLB8YCGTBRb5zqpIrmE,4805
|
178
178
|
pcapkit/protocols/__init__.py,sha256=3jZrKmShb_dtsgnwh9dqqsCN0kOGYzFAEB0H7PMf4Nc,1841
|
179
|
-
pcapkit/protocols/protocol.py,sha256=
|
179
|
+
pcapkit/protocols/protocol.py,sha256=N8uYn570PBpOtg2t7fztLrRYJPlbozsxI5LJFgVxT90,46637
|
180
180
|
pcapkit/protocols/application/__init__.py,sha256=nInVbuUoyQiLGATLiCyxkyEfWyXVJMYVOr7ddrh7LDg,1044
|
181
181
|
pcapkit/protocols/application/application.py,sha256=owZ7PoIWPiyzCcuHtLRCc4FolnFPQ04jxCzE9aOD6Ko,4363
|
182
182
|
pcapkit/protocols/application/ftp.py,sha256=FdNVpBKKYzNV5Cj8Gqm5VqK2O0x9S7SupsL-JgGmdpw,6532
|
@@ -205,43 +205,43 @@ pcapkit/protocols/application/NotImplemented/tls.py,sha256=47DEQpj8HBSa-_TImW-5J
|
|
205
205
|
pcapkit/protocols/application/NotImplemented/xmpp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
206
206
|
pcapkit/protocols/data/__init__.py,sha256=8iXwH9mDBKoWVfqbGAWkE9J8cBe9elQP0PEnhhe5rlg,8860
|
207
207
|
pcapkit/protocols/data/data.py,sha256=njmCzl68ZE7B0B1xG_fIg_5B5uYUZjukHgnqUsyIYow,606
|
208
|
-
pcapkit/protocols/data/protocol.py,sha256=
|
208
|
+
pcapkit/protocols/data/protocol.py,sha256=h7IcnP8w1Dqr_dGXO0C32HZmz5Umb-fJa_N5EINpnGY,672
|
209
209
|
pcapkit/protocols/data/application/__init__.py,sha256=LXVdH-9vMJdpMGB1xxHPoemjC2-73uayKek5yxSivTM,3270
|
210
|
-
pcapkit/protocols/data/application/ftp.py,sha256=
|
211
|
-
pcapkit/protocols/data/application/httpv1.py,sha256=
|
212
|
-
pcapkit/protocols/data/application/httpv2.py,sha256=
|
210
|
+
pcapkit/protocols/data/application/ftp.py,sha256=YIZzpmReMlNUdO3ZqwbU8EN3-TFvbl4vcOTVYWwqiKc,1517
|
211
|
+
pcapkit/protocols/data/application/httpv1.py,sha256=0PtUkjJ1U1sDktFeT6htjsU7ZFoYA_vKeA84kdpMd8Q,2323
|
212
|
+
pcapkit/protocols/data/application/httpv2.py,sha256=V0-qCpobji1BrIOuScSP344qpWqvQTDHHbusgrLRiAc,9519
|
213
213
|
pcapkit/protocols/data/internet/__init__.py,sha256=p7bZwpVbkSv3u3-2nZFg1InvqTmxtiBUoBSBhnVu_gQ,19230
|
214
|
-
pcapkit/protocols/data/internet/ah.py,sha256=
|
215
|
-
pcapkit/protocols/data/internet/hip.py,sha256=
|
216
|
-
pcapkit/protocols/data/internet/hopopt.py,sha256=
|
217
|
-
pcapkit/protocols/data/internet/ipv4.py,sha256=
|
218
|
-
pcapkit/protocols/data/internet/ipv6.py,sha256=
|
219
|
-
pcapkit/protocols/data/internet/ipv6_frag.py,sha256=
|
220
|
-
pcapkit/protocols/data/internet/ipv6_opts.py,sha256=
|
221
|
-
pcapkit/protocols/data/internet/ipv6_route.py,sha256=
|
222
|
-
pcapkit/protocols/data/internet/ipx.py,sha256=
|
223
|
-
pcapkit/protocols/data/internet/mh.py,sha256=
|
214
|
+
pcapkit/protocols/data/internet/ah.py,sha256=mKhjHSjaG_p8MPqQIT0N_WHSBDsgX3YOQIuNWhj30Ck,814
|
215
|
+
pcapkit/protocols/data/internet/hip.py,sha256=LqilbFkQkQMplPrCNvWOfavKz9MzzXs-GyKbTETirT4,29007
|
216
|
+
pcapkit/protocols/data/internet/hopopt.py,sha256=DwQufAUxzZ-dc6CTynxu73SzGUoDBnECXCqqAPKShXw,12223
|
217
|
+
pcapkit/protocols/data/internet/ipv4.py,sha256=Nb7CVEFbry0SjuozP9ex71pEcaRaR8QO6GPhaXULIv4,12165
|
218
|
+
pcapkit/protocols/data/internet/ipv6.py,sha256=tvWqHRnFI0bul5QtYKKSAB69NkiwjFgWso2FWOexH6E,1793
|
219
|
+
pcapkit/protocols/data/internet/ipv6_frag.py,sha256=g60C6EgD6Wdquj-VPHvenkw8tOz97DSStX5SkaXEdro,762
|
220
|
+
pcapkit/protocols/data/internet/ipv6_opts.py,sha256=0tb_khH_nosOhwBg_UNLeZ-RMDJKQbJCgPuNZp0ZozE,12669
|
221
|
+
pcapkit/protocols/data/internet/ipv6_route.py,sha256=PbBjdKzfKPJScPAtUn2SpTE9dwRLlr6da2zMwqzNoZE,2559
|
222
|
+
pcapkit/protocols/data/internet/ipx.py,sha256=YbMCFYP0KDBL8bp19Sw3AjYjcSMQOK7_I8_3utfzgAU,1550
|
223
|
+
pcapkit/protocols/data/internet/mh.py,sha256=il17KYIk4lMkvRAq81ivMh_UXcrAMAINCP9M3uAQecg,16947
|
224
224
|
pcapkit/protocols/data/link/__init__.py,sha256=LUbOum8e5JqaixXFd_z7zx3Ii-lJzpmesgZTNdvrgGE,956
|
225
|
-
pcapkit/protocols/data/link/arp.py,sha256=
|
226
|
-
pcapkit/protocols/data/link/ethernet.py,sha256=
|
227
|
-
pcapkit/protocols/data/link/l2tp.py,sha256=
|
228
|
-
pcapkit/protocols/data/link/ospf.py,sha256=
|
229
|
-
pcapkit/protocols/data/link/vlan.py,sha256=
|
225
|
+
pcapkit/protocols/data/link/arp.py,sha256=sH2ZTkSqGkwJiM90UWUSi2m7eqvOGzYA9hRJKORamg0,2390
|
226
|
+
pcapkit/protocols/data/link/ethernet.py,sha256=VxeOk2p_wqoGT0ew5PrteUsjECoqzRTW2h8tijEjyqI,774
|
227
|
+
pcapkit/protocols/data/link/l2tp.py,sha256=m43XvBmZZRz5dS0q5pRQDAKh6XA194sqD-NEOxSfa-w,1673
|
228
|
+
pcapkit/protocols/data/link/ospf.py,sha256=yaTOfJixkIKf3daSqxTQ9yfhTsWnw3zi8wOv6uUnCCE,1712
|
229
|
+
pcapkit/protocols/data/link/vlan.py,sha256=zQeoMZCjBRqg1OWclRutB_-tqkUiGPnFHtVSsGxgpfY,1220
|
230
230
|
pcapkit/protocols/data/misc/__init__.py,sha256=ok5N8uq14_pCjQIHudj5aQuP2FGW-ojHkmy5Q6yLrtk,7519
|
231
|
-
pcapkit/protocols/data/misc/null.py,sha256=
|
232
|
-
pcapkit/protocols/data/misc/pcapng.py,sha256=
|
233
|
-
pcapkit/protocols/data/misc/raw.py,sha256=
|
231
|
+
pcapkit/protocols/data/misc/null.py,sha256=PxiZXoNiRn8j9UuQVIdSGnsPBtBWB_KGvk8CqeQugMo,596
|
232
|
+
pcapkit/protocols/data/misc/pcapng.py,sha256=Jx6dlBsjDjGMjuv-aCYLmBshSgmq7ERssERza1co-LA,27498
|
233
|
+
pcapkit/protocols/data/misc/raw.py,sha256=tuK-HkV2dEdS_eqs_3_fxLihnTU6ZwNxFQpDdVS6laE,707
|
234
234
|
pcapkit/protocols/data/misc/pcap/__init__.py,sha256=_IwUdgHuQwxe24AwiWwvvv6j-3N6Z-b2m-7q3l7fWQs,535
|
235
|
-
pcapkit/protocols/data/misc/pcap/frame.py,sha256=
|
236
|
-
pcapkit/protocols/data/misc/pcap/header.py,sha256=
|
235
|
+
pcapkit/protocols/data/misc/pcap/frame.py,sha256=6SasXQtnXPD9jqEu3wqvH7E4_GxZ-795WfKmRJAqpsg,1610
|
236
|
+
pcapkit/protocols/data/misc/pcap/header.py,sha256=o0AWmVI-GK8nTXKroQ15GQDQCIwVCPiuQRlgZEAj9n8,1647
|
237
237
|
pcapkit/protocols/data/transport/__init__.py,sha256=ONSAUTOHBtgfAM2XBUK74XbNs2n-sffM7cFm7UkSIrw,4484
|
238
|
-
pcapkit/protocols/data/transport/tcp.py,sha256=
|
239
|
-
pcapkit/protocols/data/transport/udp.py,sha256=
|
238
|
+
pcapkit/protocols/data/transport/tcp.py,sha256=C0n6UG_uuZdbORZdVRgdIiHZkMnwEQo6dgs4Q1DhXmY,18044
|
239
|
+
pcapkit/protocols/data/transport/udp.py,sha256=POqqunUmsRWwIXv4lzcLhVlQJUJzNV_BFekpwwD8fJo,767
|
240
240
|
pcapkit/protocols/internet/__init__.py,sha256=92A7PPTi_YYjGvns_aRKaBq2uhRMDc_6bkCemKfuqOw,1507
|
241
241
|
pcapkit/protocols/internet/ah.py,sha256=mPI887GUeJGxy_Ovoh0Hs2vU2i0gZ9nDJYNNmlN5mDo,10219
|
242
242
|
pcapkit/protocols/internet/hip.py,sha256=NloOKuxvcFFvWvv8D5p5EUdgt8zxmZZ6ocDNM-EC_pI,209870
|
243
243
|
pcapkit/protocols/internet/hopopt.py,sha256=dtpe28jxkpZU7HX6wTkxgDX3gz6iuHzbA3uGtCGiQrQ,75260
|
244
|
-
pcapkit/protocols/internet/internet.py,sha256=
|
244
|
+
pcapkit/protocols/internet/internet.py,sha256=dF3vYoUq_4DNAmKm2sC7HQ5t55AR0Gj9XjyMrrOlYiA,11297
|
245
245
|
pcapkit/protocols/internet/ip.py,sha256=VfLC4vj4e6NOSWWvBr4sTSrzgRw0WNES6jlFFZbDJl4,1654
|
246
246
|
pcapkit/protocols/internet/ipsec.py,sha256=-8eB-1yb7S2Nppr5rpbXQ1xB7ZwnkxDrw2-m18-jIoo,1545
|
247
247
|
pcapkit/protocols/internet/ipv4.py,sha256=-A4mrKsh76VjyQiUr53xJX8gI7PyO78HET74ZCwR7I8,70545
|
@@ -261,7 +261,7 @@ pcapkit/protocols/link/__init__.py,sha256=PJNPtYKLSdtqcZkGku2C9l3JBvRTE5ze3O6srC
|
|
261
261
|
pcapkit/protocols/link/arp.py,sha256=Fks77PjhWXyCGbwSGKw1nsrVea8AK5343nCWfJCWv8Y,16956
|
262
262
|
pcapkit/protocols/link/ethernet.py,sha256=ualSVSEiSPg-K4sq58idd5ad3Lxhga3ko9OXMXcDZH0,8294
|
263
263
|
pcapkit/protocols/link/l2tp.py,sha256=wKdOsjNMnYdEe4RRLyptr7IrN5IKqTPf7y76rw2o2o0,10668
|
264
|
-
pcapkit/protocols/link/link.py,sha256=
|
264
|
+
pcapkit/protocols/link/link.py,sha256=VOgO62OpTJvyJLN_6-mhOSuoJPJuVctBZl-LzFP9H7A,5923
|
265
265
|
pcapkit/protocols/link/ospf.py,sha256=z01IKw-HdJao3d_ZLm2f_LXzpTresGXsPZSO2xf2A8w,13442
|
266
266
|
pcapkit/protocols/link/rarp.py,sha256=mZcPYXXGMM67zmN4w7MoJ95ufw0cY4NHPcsDNNoQeaM,3250
|
267
267
|
pcapkit/protocols/link/vlan.py,sha256=WDSe_AQIoeKK5VToUdXFnooCjneT4o-lIHmkPWWXWSQ,8585
|
@@ -273,13 +273,13 @@ pcapkit/protocols/link/NotImplemented/ndp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
|
|
273
273
|
pcapkit/protocols/link/NotImplemented/ppp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
274
274
|
pcapkit/protocols/misc/__init__.py,sha256=-gT11kcQFhmWa1YpS6LrYKOKZk3Is6GFRjGnYn4fCrM,852
|
275
275
|
pcapkit/protocols/misc/null.py,sha256=gqABjavslAvwbsGPzU-9ZlH0IS12NZcupBirG6ZTgAU,4240
|
276
|
-
pcapkit/protocols/misc/pcapng.py,sha256=
|
277
|
-
pcapkit/protocols/misc/raw.py,sha256=
|
276
|
+
pcapkit/protocols/misc/pcapng.py,sha256=9tFsjPs1rftIFB3CDjwehkRIe1ly6Rpy9dwV3yhxFSM,238173
|
277
|
+
pcapkit/protocols/misc/raw.py,sha256=yvnflJHAEQ_pvFJvlV0vWLYfFVLZUprihi36FjKRFYQ,5918
|
278
278
|
pcapkit/protocols/misc/pcap/__init__.py,sha256=-uxoPg3k-8NteBUUxLdgysbpwHbV_uyHyqz75lKpbc4,542
|
279
|
-
pcapkit/protocols/misc/pcap/frame.py,sha256=
|
279
|
+
pcapkit/protocols/misc/pcap/frame.py,sha256=ZzDOSFOwBOKTZbMBJMyQ9paMptlWeTlI9UPeyukDGvc,18042
|
280
280
|
pcapkit/protocols/misc/pcap/header.py,sha256=qGGd0z9YBgKCMZbvw8QSe9vTA9HuFO60fKSPju2nOzU,12681
|
281
|
-
pcapkit/protocols/schema/__init__.py,sha256=
|
282
|
-
pcapkit/protocols/schema/schema.py,sha256=
|
281
|
+
pcapkit/protocols/schema/__init__.py,sha256=Di-u45vhzI7FSr_CF6DKJEFE_d0KJAzPgBXy5VL-2Tk,7283
|
282
|
+
pcapkit/protocols/schema/schema.py,sha256=qwGPRs4FmManpxUFXtYB2765xzhjYXMOnfIK4cdvX2I,29437
|
283
283
|
pcapkit/protocols/schema/application/__init__.py,sha256=5Cug38rdq8thUWMol0ICGIPP7FW3nBeBnFWPbnU0sbA,1997
|
284
284
|
pcapkit/protocols/schema/application/ftp.py,sha256=uZm2D5Za3GJCjATk76dJOwNsO8GuFDMNVtqy2qzSmiI,520
|
285
285
|
pcapkit/protocols/schema/application/httpv1.py,sha256=PC-JCR940Uo_s5e0zGAGj5wRLUDUnkR6j0bx_Vf_VhI,524
|
@@ -312,16 +312,16 @@ pcapkit/protocols/schema/transport/__init__.py,sha256=e2Z308ZrFrCVUiABvQyb_9N_jG
|
|
312
312
|
pcapkit/protocols/schema/transport/tcp.py,sha256=6JJg7xAn9W2F0iHVPPHkC0B6MqLXiXnLoTU9dq4m8Gc,27984
|
313
313
|
pcapkit/protocols/schema/transport/udp.py,sha256=NjUfAkllOXnxAh-r3lBLZG-lIYK13Eyykya5BvoraJI,3011
|
314
314
|
pcapkit/protocols/transport/__init__.py,sha256=15zwQlVMcPJeG-s1DZCOU4bA_fPfY52-VRQEO7-TWqw,780
|
315
|
-
pcapkit/protocols/transport/tcp.py,sha256=
|
315
|
+
pcapkit/protocols/transport/tcp.py,sha256=izci3nzL4mTQRno0qx3xicfx6uECwknp97SsyOkBGF0,113823
|
316
316
|
pcapkit/protocols/transport/transport.py,sha256=xtLJy6sYZZvwywq840rCcrJ5dLrXmXWzixOxCRppEgs,6348
|
317
|
-
pcapkit/protocols/transport/udp.py,sha256=
|
317
|
+
pcapkit/protocols/transport/udp.py,sha256=W2HZsHpkZATG83CQDFYgyBuqyCA-qrwovHCh0IFX1ro,7146
|
318
318
|
pcapkit/protocols/transport/NotImplemented/dccp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
319
319
|
pcapkit/protocols/transport/NotImplemented/rsvp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
320
320
|
pcapkit/protocols/transport/NotImplemented/sctp.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
321
321
|
pcapkit/toolkit/__init__.py,sha256=pidjgoJjQxW8z--lY9eR6k_ANc2kF6U0Rgv99S3QeEs,2623
|
322
322
|
pcapkit/toolkit/dpkt.py,sha256=79ZVcNctw5WiXk4A-bcVL5WASkyG4T7weP-faGcJK6s,12443
|
323
323
|
pcapkit/toolkit/pcap.py,sha256=dz2WSzJJQomhjEiFsePWoBlBzBaSdoqem9ELZ_6gg_I,9080
|
324
|
-
pcapkit/toolkit/pcapng.py,sha256=
|
324
|
+
pcapkit/toolkit/pcapng.py,sha256=rDviBOUTl2brtqzcmomjz7mz0WZFTsN34UEh1Cb4IwA,10358
|
325
325
|
pcapkit/toolkit/pyshark.py,sha256=37KdzGls8b8aI7d-MHS9k0QQbo9Gm1sRDth-eLKVToA,3387
|
326
326
|
pcapkit/toolkit/scapy.py,sha256=L-rmqDWgTjHOH_MiqcwtYXhaPm3pzGc0kh1IUzNyzkI,11445
|
327
327
|
pcapkit/utilities/__init__.py,sha256=nd_SO3k9zXgi-Vesa1bhBiAgu55x2BeRMclLsdz9RWg,692
|
@@ -458,9 +458,9 @@ pcapkit/vendor/tcp/mp_tcp_option.py,sha256=f6_-VMoQFnhuEbxs17Q1rp6JjFSLXGK3w1K2v
|
|
458
458
|
pcapkit/vendor/tcp/option.py,sha256=p05DrOt2m0QCf4gjLJzRshQRvaWxmt2PIzsv2UMjsa8,3043
|
459
459
|
pcapkit/vendor/vlan/__init__.py,sha256=qvLktJ0yuoZokas6-_ZGwMJOzbujSCM8pZHQ9jjTegU,674
|
460
460
|
pcapkit/vendor/vlan/priority_level.py,sha256=xVu6M-Ys4pft5I-qPCCxM-KfnMAUnZppD2qPO9gPkVE,2961
|
461
|
-
pypcapkit-1.3.1.
|
462
|
-
pypcapkit-1.3.1.
|
463
|
-
pypcapkit-1.3.1.
|
464
|
-
pypcapkit-1.3.1.
|
465
|
-
pypcapkit-1.3.1.
|
466
|
-
pypcapkit-1.3.1.
|
461
|
+
pypcapkit-1.3.1.post8.dist-info/LICENSE,sha256=KkKND5E2e1Z6CQvSLPc1lRBy4xPRed41AG6q1txotWk,1516
|
462
|
+
pypcapkit-1.3.1.post8.dist-info/METADATA,sha256=_TvTeZzQDEzmvNM99YWoX7yOKS5sv2YbLBc50baaMv0,7704
|
463
|
+
pypcapkit-1.3.1.post8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
464
|
+
pypcapkit-1.3.1.post8.dist-info/entry_points.txt,sha256=8tVaZ-N0S2t19ELoTEGq_OlC8-dSmd7dvNn-kMV3afY,100
|
465
|
+
pypcapkit-1.3.1.post8.dist-info/top_level.txt,sha256=KEssKRhG9ln3EOfGH-yi98HgI-MM9hOHy09QQP-fvk8,8
|
466
|
+
pypcapkit-1.3.1.post8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|