scapy.layers.tls.handshake_sslv2

SSLv2 handshake fields & logic.

class scapy.layers.tls.handshake_sslv2.SSLv2ClientCertificate(_pkt, /, *, msgtype=8, certtype=1, certlen=None, responselen=None, certdata=b'', responsedata=None)[source]

Bases: _SSLv2Handshake

SSLv2 ClientCertificate.

aliastypes = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2ClientCertificate'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
build(*args, **kargs)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2ClientCertificate).msgtype>, <ByteEnumField (SSLv2ClientCertificate).certtype>, <FieldLenField (SSLv2ClientCertificate).certlen>, <FieldLenField (SSLv2ClientCertificate).responselen>, <_SSLv2CertDataField (SSLv2ClientCertificate).certdata>, <_TLSSignatureField (SSLv2ClientCertificate).responsedata>]
post_dissection_tls_session_update(msg_str)[source]
tls_session_update(msg_str)[source]
class scapy.layers.tls.handshake_sslv2.SSLv2ClientFinished(_pkt, /, *, msgtype=3, connection_id=b'')[source]

Bases: _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 = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2ClientFinished'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
build(*args, **kargs)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2ClientFinished).msgtype>, <XStrField (SSLv2ClientFinished).connection_id>]
post_dissection(pkt)[source]
class scapy.layers.tls.handshake_sslv2.SSLv2ClientHello(_pkt, /, *, msgtype=1, version=2, cipherslen=None, sidlen=None, challengelen=None, sid=b'', ciphers=[458944], challenge=b'')[source]

Bases: _SSLv2Handshake

SSLv2 ClientHello.

aliastypes = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2ClientHello'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2ClientHello).msgtype>, <_TLSVersionField (SSLv2ClientHello).version>, <FieldLenField (SSLv2ClientHello).cipherslen>, <FieldLenField (SSLv2ClientHello).sidlen>, <FieldLenField (SSLv2ClientHello).challengelen>, <XStrLenField (SSLv2ClientHello).sid>, <_SSLv2CipherSuitesField (SSLv2ClientHello).ciphers>, <XStrLenField (SSLv2ClientHello).challenge>]
tls_session_update(msg_str)[source]
class scapy.layers.tls.handshake_sslv2.SSLv2ClientMasterKey(_pkt, /, *, msgtype=2, cipher=None, clearkeylen=None, encryptedkeylen=None, keyarglen=None, clearkey=b'', encryptedkey=b'', keyarg=b'')[source]

Bases: _SSLv2Handshake

SSLv2 ClientMasterKey.

aliastypes = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2ClientMasterKey'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
decryptedkey
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2ClientMasterKey).msgtype>, <_SSLv2CipherSuiteField (SSLv2ClientMasterKey).cipher>, <FieldLenField (SSLv2ClientMasterKey).clearkeylen>, <FieldLenField (SSLv2ClientMasterKey).encryptedkeylen>, <FieldLenField (SSLv2ClientMasterKey).keyarglen>, <XStrLenField (SSLv2ClientMasterKey).clearkey>, <_SSLv2EncryptedKeyField (SSLv2ClientMasterKey).encryptedkey>, <XStrLenField (SSLv2ClientMasterKey).keyarg>]
post_build(pkt, pay)[source]
pre_dissect(s)[source]
tls_session_update(msg_str)[source]
class scapy.layers.tls.handshake_sslv2.SSLv2Error(_pkt, /, *, msgtype=0, code=None)[source]

Bases: _SSLv2Handshake

SSLv2 Error.

aliastypes = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2Error'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2Error).msgtype>, <ShortEnumField (SSLv2Error).code>]
class scapy.layers.tls.handshake_sslv2.SSLv2RequestCertificate(_pkt, /, *, msgtype=7, authtype=1, challenge=b'')[source]

Bases: _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 = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2RequestCertificate'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2RequestCertificate).msgtype>, <ByteEnumField (SSLv2RequestCertificate).authtype>, <XStrField (SSLv2RequestCertificate).challenge>]
tls_session_update(msg_str)[source]
class scapy.layers.tls.handshake_sslv2.SSLv2ServerFinished(_pkt, /, *, msgtype=6, sid=b'')[source]

Bases: _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 = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2ServerFinished'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
build(*args, **kargs)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2ServerFinished).msgtype>, <XStrField (SSLv2ServerFinished).sid>]
post_dissection_tls_session_update(msg_str)[source]
class scapy.layers.tls.handshake_sslv2.SSLv2ServerHello(_pkt, /, *, msgtype=4, sid_hit=0, certtype=1, version=2, certlen=None, cipherslen=None, connection_idlen=None, cert=b'', ciphers=[], connection_id=b'')[source]

Bases: _SSLv2Handshake

SSLv2 ServerHello.

aliastypes = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2ServerHello'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2ServerHello).msgtype>, <ByteField (SSLv2ServerHello).sid_hit>, <ByteEnumField (SSLv2ServerHello).certtype>, <_TLSVersionField (SSLv2ServerHello).version>, <FieldLenField (SSLv2ServerHello).certlen>, <FieldLenField (SSLv2ServerHello).cipherslen>, <FieldLenField (SSLv2ServerHello).connection_idlen>, <_SSLv2CertDataField (SSLv2ServerHello).cert>, <_SSLv2CipherSuitesField (SSLv2ServerHello).ciphers>, <XStrLenField (SSLv2ServerHello).connection_id>]
tls_session_update(msg_str)[source]

XXX Something should be done about the session ID here.

class scapy.layers.tls.handshake_sslv2.SSLv2ServerVerify(_pkt, /, *, msgtype=5, challenge=b'')[source]

Bases: _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 = [<class 'scapy.layers.tls.handshake_sslv2.SSLv2ServerVerify'>, <class 'scapy.layers.tls.handshake_sslv2._SSLv2Handshake'>, <class 'scapy.layers.tls.session._GenericTLSSessionInheritance'>, <class 'scapy.packet.Packet'>]
build(*args, **kargs)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (SSLv2ServerVerify).msgtype>, <XStrField (SSLv2ServerVerify).challenge>]
post_dissection(pkt)[source]