scapy.layers.tls.keyexchange_tls13

TLS 1.3 key exchange logic.

class scapy.layers.tls.keyexchange_tls13.KeyShareEntry(_pkt, /, *, group=None, kxlen=None, key_exchange=b'')[源代码]

基类:Packet

When building from scratch, we create a DH private key, and when dissecting, we create a DH public key. Default group is secp256r1.

aliastypes
create_privkey(**kwargs: Any) Any[源代码]
do_build()[源代码]

We need this hack, else 'self' would be replaced by __iter__.next().

extract_padding(s)[源代码]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             GROUP             |             KXLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          KEY EXCHANGE         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. KeyShareEntry                        
KeyShareEntry fields

group

ShortEnumField

None

kxlen

FieldLenField

None

key_exchange

XStrLenField

b''

post_build(pkt, pay)[源代码]
post_dissection(r)[源代码]
privkey
pubkey
register_pubkey(**kwargs: Any) Any[源代码]
class scapy.layers.tls.keyexchange_tls13.PSKBinderEntry(_pkt, /, *, binder_len=None, binder=b'')[源代码]

基类:Packet

aliastypes
default_payload_class(payload)[源代码]
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

FieldLenField

None

binder

StrLenField

b''

class scapy.layers.tls.keyexchange_tls13.PSKIdentity(_pkt, /, *, identity_len=None, identity=b'', obfuscated_ticket_age=0)[源代码]

基类:Packet

aliastypes
default_payload_class(payload)[源代码]
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

FieldLenField

None

identity

TicketField

b''

obfuscated_ticket_age

IntField

0

class scapy.layers.tls.keyexchange_tls13.TLS_Ext_KeyShare_CH(_pkt, /, *, type=51, len=None, client_shares_len=None, client_shares=[])[源代码]

基类:TLS_Ext_Unknown

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              TYPE             |              LEN              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       CLIENT SHARES LEN       |         CLIENT SHARES         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. TLS_Ext_KeyShare_CH                     
TLS_Ext_KeyShare_CH fields

type

ShortEnumField

51

len

ShortField

None

client_shares_len

FieldLenField

None

client_shares

PacketListField

[]

post_build(pkt, pay)[源代码]
post_dissection(r)[源代码]
class scapy.layers.tls.keyexchange_tls13.TLS_Ext_KeyShare_HRR(_pkt, /, *, type=51, len=None, selected_group=None)[源代码]

基类:TLS_Ext_Unknown

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              TYPE             |              LEN              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         SELECTED GROUP        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. TLS_Ext_KeyShare_HRR                     
TLS_Ext_KeyShare_HRR fields

type

ShortEnumField

51

len

ShortField

None

selected_group

ShortEnumField

None

class scapy.layers.tls.keyexchange_tls13.TLS_Ext_KeyShare_SH(_pkt, /, *, type=51, len=None, server_share=None)[源代码]

基类:TLS_Ext_Unknown

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              TYPE             |              LEN              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          SERVER SHARE         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. TLS_Ext_KeyShare_SH                     
TLS_Ext_KeyShare_SH fields

type

ShortEnumField

51

len

ShortField

None

server_share

PacketField

None

post_build(pkt, pay)[源代码]
post_dissection(r)[源代码]
class scapy.layers.tls.keyexchange_tls13.TLS_Ext_PreSharedKey_CH(_pkt, /, *, type=41, len=None, identities_len=None, identities=[], binders_len=None, binders=[])[源代码]

基类:TLS_Ext_Unknown

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              TYPE             |              LEN              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         IDENTITIES LEN        |           IDENTITIES          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          BINDERS LEN          |            BINDERS            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. TLS_Ext_PreSharedKey_CH                   
TLS_Ext_PreSharedKey_CH fields

type

ShortEnumField

41

len

ShortField

None

identities_len

FieldLenField

None

identities

PacketListField

[]

binders_len

FieldLenField

None

binders

PacketListField

[]

class scapy.layers.tls.keyexchange_tls13.TLS_Ext_PreSharedKey_SH(_pkt, /, *, type=41, len=None, selected_identity=None)[源代码]

基类:TLS_Ext_Unknown

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              TYPE             |              LEN              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       SELECTED IDENTITY       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. TLS_Ext_PreSharedKey_SH                   
TLS_Ext_PreSharedKey_SH fields

type

ShortEnumField

41

len

ShortField

None

selected_identity

ShortField

None

class scapy.layers.tls.keyexchange_tls13.Ticket(_pkt, /, *, key_name=None, iv=None, encstatelen=None, encstate=b'', mac=None)[源代码]

基类: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

StrFixedLenField

None

iv

StrFixedLenField

None

encstatelen

FieldLenField

None

encstate

StrLenField

b''

mac

StrFixedLenField

None

class scapy.layers.tls.keyexchange_tls13.TicketField(name: str, default: Packet, cls: Union[Callable[[bytes], Packet], Type[Packet]]  # noqa: E501, length_from: Optional[Callable[[Packet], int]]  # noqa: E501 = None)[源代码]

基类:PacketLenField

m2i(pkt, m)[源代码]