scapy.layers.tls.keyexchange_tls13
TLS 1.3 key exchange logic.
Bases:
scapy.packet.Packet
When building from scratch, we create a DH private key, and when dissecting, we create a DH public key. Default group is secp256r1.
We need this hack, else ‘self’ would be replaced by __iter__.next().
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GROUP | KXLEN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | KEY EXCHANGE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. KeyShareEntry
KeyShareEntry fields group
None
kxlen
None
key_exchange
b''
- class scapy.layers.tls.keyexchange_tls13.PSKBinderEntry(*args, **kargs)
Bases:
scapy.packet.Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BINDER LEN | BINDER | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. PSKBinderEntry
PSKBinderEntry fields binder_len
None
binder
b''
- class scapy.layers.tls.keyexchange_tls13.PSKIdentity(*args, **kargs)
Bases:
scapy.packet.Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IDENTITY LEN | IDENTITY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OBFUSCATED TICKET AGE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. PSKIdentity
PSKIdentity fields identity_len
None
identity
b''
obfuscated_ticket_age
0
Bases:
scapy.layers.tls.extensions.TLS_Ext_Unknown
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TYPE | LEN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CLIENT SHARES LEN | CLIENT SHARES | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. TLS_Ext_KeyShare_CH
TLS_Ext_KeyShare_CH fields type
51
len
None
client_shares_len
None
client_shares
[]
Bases:
scapy.layers.tls.extensions.TLS_Ext_Unknown
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TYPE | LEN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SELECTED GROUP | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. TLS_Ext_KeyShare_HRR
TLS_Ext_KeyShare_HRR fields type
51
len
None
selected_group
None
Bases:
scapy.layers.tls.extensions.TLS_Ext_Unknown
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TYPE | LEN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SERVER SHARE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. TLS_Ext_KeyShare_SH
TLS_Ext_KeyShare_SH fields type
51
len
None
server_share
None
Bases:
scapy.layers.tls.extensions.TLS_Ext_Unknown
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TYPE | LEN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IDENTITIES LEN | IDENTITIES | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BINDERS LEN | BINDERS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. TLS_Ext_PreSharedKey_CH
TLS_Ext_PreSharedKey_CH fields type
41
len
None
identities_len
None
identities
[]
binders_len
None
binders
[]
Bases:
scapy.layers.tls.extensions.TLS_Ext_Unknown
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TYPE | LEN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SELECTED IDENTITY | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. TLS_Ext_PreSharedKey_SH
TLS_Ext_PreSharedKey_SH fields type
41
len
None
selected_identity
None
- class scapy.layers.tls.keyexchange_tls13.Ticket(*args, **kargs)
Bases:
scapy.packet.Packet
- aliastypes
- fields_desc
Display RFC-like schema
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | KEY NAME | IV | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ENCSTATELEN | ENCSTATE | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MAC | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. Ticket
Ticket fields key_name
None
iv
None
encstatelen
None
encstate
b''
mac
None
- class scapy.layers.tls.keyexchange_tls13.TicketField(name, default, length_from=None, **kargs)
Bases:
scapy.fields.PacketField
- length_from
- m2i(pkt, m)