MCPcopy Create free account
hub / github.com/secdev/scapy / IKEv2

Class IKEv2

scapy/contrib/ikev2.py:521–552  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

519
520
521class IKEv2(_IKEv2_Packet): # rfc4306
522 name = "IKEv2"
523 fields_desc = [
524 XStrFixedLenField("init_SPI", "", 8),
525 XStrFixedLenField("resp_SPI", "", 8),
526 ByteEnumField("next_payload", 0, IKEv2PayloadTypes),
527 XByteField("version", 0x20),
528 ByteEnumField("exch_type", 0, IKEv2ExchangeTypes),
529 FlagsField("flags", 0, 8, ["res0", "res1", "res2", "Initiator", "Version", "Response", "res6", "res7"]), # noqa: E501
530 IntField("id", 0),
531 IntField("length", None) # Length of total message: packets + all payloads # noqa: E501
532 ]
533
534 @classmethod
535 def dispatch_hook(cls, _pkt=None, *args, **kargs):
536 if _pkt and len(_pkt) >= 18:
537 version = struct.unpack("!B", _pkt[17:18])[0]
538 if version < 0x20:
539 return ISAKMP
540 return cls
541
542 def answers(self, other):
543 if isinstance(other, IKEv2):
544 if other.init_SPI == self.init_SPI:
545 return 1
546 return 0
547
548 def post_build(self, p, pay):
549 p += pay
550 if self.length is None:
551 p = p[:24] + struct.pack("!I", len(p)) + p[28:]
552 return p
553
554
555class IKEv2_Key_Length_Attribute(IntField):

Callers 1

ikev2scanFunction · 0.85

Calls 5

XStrFixedLenFieldClass · 0.90
ByteEnumFieldClass · 0.90
XByteFieldClass · 0.90
FlagsFieldClass · 0.90
IntFieldClass · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…