diff options
| author | Xusheng <xusheng@vector35.com> | 2021-07-01 12:34:30 +0800 |
|---|---|---|
| committer | Xusheng Li <xushengli@protonmail.com> | 2021-07-05 10:11:47 +0800 |
| commit | 13ff200ba134b8704f37eca99c42b70dab0d17dc (patch) | |
| tree | 876b3db3c53f704b31152aeaede1f2edc9d27b24 /python/examples/kaitai/protocol_body.py | |
| parent | 4039a800349dcd587833d3e27d9137e4649818f4 (diff) | |
Remove snippet and kaitai plugin. Note their individual links.
Diffstat (limited to 'python/examples/kaitai/protocol_body.py')
| -rw-r--r-- | python/examples/kaitai/protocol_body.py | 259 |
1 files changed, 0 insertions, 259 deletions
diff --git a/python/examples/kaitai/protocol_body.py b/python/examples/kaitai/protocol_body.py deleted file mode 100644 index 33bcbddc..00000000 --- a/python/examples/kaitai/protocol_body.py +++ /dev/null @@ -1,259 +0,0 @@ -# This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild - -from pkg_resources import parse_version -from .kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO -from enum import Enum -import collections - - -if parse_version(ks_version) < parse_version('0.7'): - raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version)) - -from . import udp_datagram -from . import icmp_packet -from . import tcp_segment -from . import ipv4_packet -from . import ipv6_packet -class ProtocolBody(KaitaiStruct): - """Protocol body represents particular payload on transport level (OSI - layer 4). - - Typically this payload in encapsulated into network level (OSI layer - 3) packet, which includes "protocol number" field that would be used - to decide what's inside the payload and how to parse it. Thanks to - IANA's standardization effort, multiple network level use the same - IDs for these payloads named "protocol numbers". - - This is effectively a "router" type: it expects to get protocol - number as a parameter, and then invokes relevant type parser based - on that parameter. - - .. seealso:: - Source - http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml - """ - - class ProtocolEnum(Enum): - hopopt = 0 - icmp = 1 - igmp = 2 - ggp = 3 - ipv4 = 4 - st = 5 - tcp = 6 - cbt = 7 - egp = 8 - igp = 9 - bbn_rcc_mon = 10 - nvp_ii = 11 - pup = 12 - argus = 13 - emcon = 14 - xnet = 15 - chaos = 16 - udp = 17 - mux = 18 - dcn_meas = 19 - hmp = 20 - prm = 21 - xns_idp = 22 - trunk_1 = 23 - trunk_2 = 24 - leaf_1 = 25 - leaf_2 = 26 - rdp = 27 - irtp = 28 - iso_tp4 = 29 - netblt = 30 - mfe_nsp = 31 - merit_inp = 32 - dccp = 33 - x_3pc = 34 - idpr = 35 - xtp = 36 - ddp = 37 - idpr_cmtp = 38 - tp_plus_plus = 39 - il = 40 - ipv6 = 41 - sdrp = 42 - ipv6_route = 43 - ipv6_frag = 44 - idrp = 45 - rsvp = 46 - gre = 47 - dsr = 48 - bna = 49 - esp = 50 - ah = 51 - i_nlsp = 52 - swipe = 53 - narp = 54 - mobile = 55 - tlsp = 56 - skip = 57 - ipv6_icmp = 58 - ipv6_nonxt = 59 - ipv6_opts = 60 - any_host_internal_protocol = 61 - cftp = 62 - any_local_network = 63 - sat_expak = 64 - kryptolan = 65 - rvd = 66 - ippc = 67 - any_distributed_file_system = 68 - sat_mon = 69 - visa = 70 - ipcv = 71 - cpnx = 72 - cphb = 73 - wsn = 74 - pvp = 75 - br_sat_mon = 76 - sun_nd = 77 - wb_mon = 78 - wb_expak = 79 - iso_ip = 80 - vmtp = 81 - secure_vmtp = 82 - vines = 83 - ttp_or_iptm = 84 - nsfnet_igp = 85 - dgp = 86 - tcf = 87 - eigrp = 88 - ospfigp = 89 - sprite_rpc = 90 - larp = 91 - mtp = 92 - ax_25 = 93 - ipip = 94 - micp = 95 - scc_sp = 96 - etherip = 97 - encap = 98 - any_private_encryption_scheme = 99 - gmtp = 100 - ifmp = 101 - pnni = 102 - pim = 103 - aris = 104 - scps = 105 - qnx = 106 - a_n = 107 - ipcomp = 108 - snp = 109 - compaq_peer = 110 - ipx_in_ip = 111 - vrrp = 112 - pgm = 113 - any_0_hop = 114 - l2tp = 115 - ddx = 116 - iatp = 117 - stp = 118 - srp = 119 - uti = 120 - smp = 121 - sm = 122 - ptp = 123 - isis_over_ipv4 = 124 - fire = 125 - crtp = 126 - crudp = 127 - sscopmce = 128 - iplt = 129 - sps = 130 - pipe = 131 - sctp = 132 - fc = 133 - rsvp_e2e_ignore = 134 - mobility_header = 135 - udplite = 136 - mpls_in_ip = 137 - manet = 138 - hip = 139 - shim6 = 140 - wesp = 141 - rohc = 142 - reserved_255 = 255 - SEQ_FIELDS = ["body"] - def __init__(self, protocol_num, _io, _parent=None, _root=None): - self._io = _io - self._parent = _parent - self._root = _root if _root else self - self.protocol_num = protocol_num - self._debug = collections.defaultdict(dict) - - def _read(self): - self._debug['body']['start'] = self._io.pos() - _on = self.protocol - if _on == self._root.ProtocolEnum.ipv6_nonxt: - self.body = self._root.NoNextHeader(self._io, self, self._root) - self.body._read() - elif _on == self._root.ProtocolEnum.ipv4: - self.body = ipv4_packet.Ipv4Packet(self._io) - self.body._read() - elif _on == self._root.ProtocolEnum.udp: - self.body = udp_datagram.UdpDatagram(self._io) - self.body._read() - elif _on == self._root.ProtocolEnum.icmp: - self.body = icmp_packet.IcmpPacket(self._io) - self.body._read() - elif _on == self._root.ProtocolEnum.hopopt: - self.body = self._root.OptionHopByHop(self._io, self, self._root) - self.body._read() - elif _on == self._root.ProtocolEnum.ipv6: - self.body = ipv6_packet.Ipv6Packet(self._io) - self.body._read() - elif _on == self._root.ProtocolEnum.tcp: - self.body = tcp_segment.TcpSegment(self._io) - self.body._read() - self._debug['body']['end'] = self._io.pos() - - class NoNextHeader(KaitaiStruct): - """Dummy type for IPv6 "no next header" type, which signifies end of headers chain.""" - SEQ_FIELDS = [] - def __init__(self, _io, _parent=None, _root=None): - self._io = _io - self._parent = _parent - self._root = _root if _root else self - self._debug = collections.defaultdict(dict) - - def _read(self): - pass - - - class OptionHopByHop(KaitaiStruct): - SEQ_FIELDS = ["next_header_type", "hdr_ext_len", "body", "next_header"] - def __init__(self, _io, _parent=None, _root=None): - self._io = _io - self._parent = _parent - self._root = _root if _root else self - self._debug = collections.defaultdict(dict) - - def _read(self): - self._debug['next_header_type']['start'] = self._io.pos() - self.next_header_type = self._io.read_u1() - self._debug['next_header_type']['end'] = self._io.pos() - self._debug['hdr_ext_len']['start'] = self._io.pos() - self.hdr_ext_len = self._io.read_u1() - self._debug['hdr_ext_len']['end'] = self._io.pos() - self._debug['body']['start'] = self._io.pos() - self.body = self._io.read_bytes((self.hdr_ext_len - 1)) - self._debug['body']['end'] = self._io.pos() - self._debug['next_header']['start'] = self._io.pos() - self.next_header = ProtocolBody(self.next_header_type, self._io) - self.next_header._read() - self._debug['next_header']['end'] = self._io.pos() - - - @property - def protocol(self): - if hasattr(self, '_m_protocol'): - return self._m_protocol if hasattr(self, '_m_protocol') else None - - self._m_protocol = KaitaiStream.resolve_enum(self._root.ProtocolEnum, self.protocol_num) - return self._m_protocol if hasattr(self, '_m_protocol') else None - - |
