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

Class ESP

scapy/layers/ipsec.py:119–150  ·  view source on GitHub ↗

Encapsulated Security Payload See https://tools.ietf.org/rfc/rfc4303.txt

Source from the content-addressed store, hash-verified

117
118
119class ESP(Packet):
120 """
121 Encapsulated Security Payload
122
123 See https://tools.ietf.org/rfc/rfc4303.txt
124 """
125 name = 'ESP'
126
127 fields_desc = [
128 XIntField('spi', 0x00000001),
129 IntField('seq', 0),
130 XStrField('data', None),
131 ]
132
133 @classmethod
134 def dispatch_hook(cls, _pkt=None, *args, **kargs):
135 if _pkt:
136 if len(_pkt) >= 4 and struct.unpack("!I", _pkt[0:4])[0] == 0x00:
137 return NON_ESP
138 elif len(_pkt) == 1 and struct.unpack("!B", _pkt)[0] == 0xff:
139 return NAT_KEEPALIVE
140 else:
141 return ESP
142 return cls
143
144 overload_fields = {
145 IP: {'proto': socket.IPPROTO_ESP},
146 IPv6: {'nh': socket.IPPROTO_ESP},
147 IPv6ExtHdrHopByHop: {'nh': socket.IPPROTO_ESP},
148 IPv6ExtHdrDestOpt: {'nh': socket.IPPROTO_ESP},
149 IPv6ExtHdrRouting: {'nh': socket.IPPROTO_ESP},
150 }
151
152
153class NON_ESP(Packet): # RFC 3948, section 2.2

Callers 1

encryptMethod · 0.85

Calls 3

XIntFieldClass · 0.90
IntFieldClass · 0.90
XStrFieldClass · 0.90

Tested by

no test coverage detected