scapy.layers.tls.handshake_sslv2

SSLv2 handshake fields & logic.

class scapy.layers.tls.handshake_sslv2.SSLv2ClientCertificate(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

SSLv2 ClientCertificate.

aliastypes
build(*args, **kargs)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |    CERTTYPE   |            CERTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          RESPONSELEN          |            CERTDATA           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          RESPONSEDATA         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. SSLv2ClientCertificate                    
SSLv2ClientCertificate fields

msgtype

ByteEnumField

'8'

certtype

ByteEnumField

'1'

certlen

FieldLenField

'None'

responselen

FieldLenField

'None'

certdata

_SSLv2CertDataField

"b''"

responsedata

_TLSSignatureField

'None'

post_dissection_tls_session_update(msg_str)
tls_session_update(msg_str)
class scapy.layers.tls.handshake_sslv2.SSLv2ClientFinished(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

In order to parse a ClientFinished, the exact message string should be fed to the class. SSLv2 does not offer any other way to know the c_id length.

aliastypes
build(*args, **kargs)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |         CONNECTION ID         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. SSLv2ClientFinished                     
SSLv2ClientFinished fields

msgtype

ByteEnumField

'3'

connection_id

XStrField

"b''"

post_dissection(pkt)
class scapy.layers.tls.handshake_sslv2.SSLv2ClientHello(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

SSLv2 ClientHello.

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |            VERSION            |   CIPHERSLEN  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |             SIDLEN            |  CHALLENGELEN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |              SID              |    CIPHERS    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |           CHALLENGE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. SSLv2ClientHello                       
SSLv2ClientHello fields

msgtype

ByteEnumField

'1'

version

_TLSVersionField

'2'

cipherslen

FieldLenField

'None'

sidlen

FieldLenField

'None'

challengelen

FieldLenField

'None'

sid

XStrLenField

"b''"

ciphers

_SSLv2CipherSuitesField

'[458944]'

challenge

XStrLenField

"b''"

tls_session_update(msg_str)
class scapy.layers.tls.handshake_sslv2.SSLv2ClientMasterKey(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

SSLv2 ClientMasterKey.

aliastypes
decryptedkey
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |             CIPHER            |  CLEARKEYLEN  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |        ENCRYPTEDKEYLEN        |   KEYARGLEN   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |            CLEARKEY           |  ENCRYPTEDKEY |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |             KEYARG            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. SSLv2ClientMasterKey                     
SSLv2ClientMasterKey fields

msgtype

ByteEnumField

'2'

cipher

_SSLv2CipherSuiteField

'None'

clearkeylen

FieldLenField

'None'

encryptedkeylen

FieldLenField

'None'

keyarglen

FieldLenField

'None'

clearkey

XStrLenField

"b''"

encryptedkey

_SSLv2EncryptedKeyField

"b''"

keyarg

XStrLenField

"b''"

post_build(pkt, pay)
pre_dissect(s)
tls_session_update(msg_str)
class scapy.layers.tls.handshake_sslv2.SSLv2Error(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

SSLv2 Error.

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |              CODE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. SSLv2Error                          
SSLv2Error fields

msgtype

ByteEnumField

'0'

code

ShortEnumField

'None'

class scapy.layers.tls.handshake_sslv2.SSLv2RequestCertificate(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

In order to parse a RequestCertificate, the exact message string should be fed to the class. This is how SSLv2 defines the challenge length…

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |    AUTHTYPE   |           CHALLENGE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. SSLv2RequestCertificate                   
SSLv2RequestCertificate fields

msgtype

ByteEnumField

'7'

authtype

ByteEnumField

'1'

challenge

XStrField

"b''"

tls_session_update(msg_str)
class scapy.layers.tls.handshake_sslv2.SSLv2ServerFinished(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

In order to parse a ServerFinished, the exact message string should be fed to the class. SSLv2 does not offer any other way to know the sid length.

aliastypes
build(*args, **kargs)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |              SID              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. SSLv2ServerFinished                     
SSLv2ServerFinished fields

msgtype

ByteEnumField

'6'

sid

XStrField

"b''"

post_dissection_tls_session_update(msg_str)
class scapy.layers.tls.handshake_sslv2.SSLv2ServerHello(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

SSLv2 ServerHello.

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |    SID HIT    |    CERTTYPE   |    VERSION    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |            CERTLEN            |   CIPHERSLEN  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |        CONNECTION IDLEN       |      CERT     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |            CIPHERS            | CONNECTION ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |
+-+-+-+-+-+-+-+-+

                      Fig. SSLv2ServerHello                       
SSLv2ServerHello fields

msgtype

ByteEnumField

'4'

sid_hit

ByteField

'0'

certtype

ByteEnumField

'1'

version

_TLSVersionField

'2'

certlen

FieldLenField

'None'

cipherslen

FieldLenField

'None'

connection_idlen

FieldLenField

'None'

cert

_SSLv2CertDataField

"b''"

ciphers

_SSLv2CipherSuitesField

'[]'

connection_id

XStrLenField

"b''"

tls_session_update(msg_str)

XXX Something should be done about the session ID here.

class scapy.layers.tls.handshake_sslv2.SSLv2ServerVerify(*args, **kargs)

Bases: scapy.layers.tls.handshake_sslv2._SSLv2Handshake

In order to parse a ServerVerify, the exact message string should be fed to the class. This is how SSLv2 defines the challenge length…

aliastypes
build(*args, **kargs)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    MSGTYPE    |           CHALLENGE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. SSLv2ServerVerify                      
SSLv2ServerVerify fields

msgtype

ByteEnumField

'5'

challenge

XStrField

"b''"

post_dissection(pkt)