MCPcopy Index your code
hub / github.com/secdev/scapy / do_dissect

Method do_dissect

scapy/packet.py:1035–1057  ·  view source on GitHub ↗
(self, s)

Source from the content-addressed store, hash-verified

1033 return s
1034
1035 def do_dissect(self, s):
1036 # type: (bytes) -> bytes
1037 _raw = s
1038 self.raw_packet_cache_fields = {}
1039 for f in self.fields_desc:
1040 s, fval = f.getfield(self, s)
1041 # Skip unused ConditionalField
1042 if isinstance(f, ConditionalField) and fval is None:
1043 continue
1044 # We need to track fields with mutable values to discard
1045 # .raw_packet_cache when needed.
1046 if (f.islist or f.holds_packets or f.ismutable) and fval is not None:
1047 self.raw_packet_cache_fields[f.name] = \
1048 self._raw_packet_cache_field_value(f, fval, copy=True)
1049 self.fields[f.name] = fval
1050 # Nothing left to dissect
1051 if not s and (isinstance(f, MayEnd) or
1052 (fval is not None and isinstance(f, ConditionalField) and
1053 isinstance(f.fld, MayEnd))):
1054 break
1055 self.raw_packet_cache = _raw[:-len(s)] if s else _raw
1056 self.explicit = 1
1057 return s
1058
1059 def do_dissect_payload(self, s):
1060 # type: (bytes) -> None

Callers 1

dissectMethod · 0.95

Calls 2

getfieldMethod · 0.45

Tested by

no test coverage detected