scapy.layers.ntlm

NTLM

https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-NLMP/%5bMS-NLMP%5d.pdf

class scapy.layers.ntlm.AV_PAIR(_pkt, /, *, AvId=0, AvLen=None, Value=None)[source]

Bases: Packet

aliastypes
default_payload_class(payload)[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              AVID             |             AVLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             VALUE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. AV_PAIR                           
AV_PAIR fields

AvId

LEShortEnumField

0

AvLen

FieldLenField

None

Value

MultipleTypeField (LEIntEnumField, UTCTimeField, PacketField, XStrLenField, StrLenFieldUtf16)

b''

scapy.layers.ntlm.HMAC_MD5(key, data)[source]
scapy.layers.ntlm.HTTP_ntlm_negotiate(ntlm_negotiate)[source]

Create an HTTP NTLM negotiate packet from an NTLM_NEGOTIATE message

class scapy.layers.ntlm.LM_RESPONSE(_pkt, /, *, Response=b'')[source]

Bases: 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RESPONSE                           |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. LM_RESPONSE                         
LM_RESPONSE fields

Response

StrFixedLenField

b''

class scapy.layers.ntlm.LMv2_RESPONSE(_pkt, /, *, Response=b'', ChallengeFromClient=b'')[source]

Bases: 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RESPONSE                           |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      CHALLENGEFROMCLIENT                      |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. LMv2_RESPONSE                        
LMv2_RESPONSE fields

Response

StrFixedLenField

b''

ChallengeFromClient

StrFixedLenField

b''

scapy.layers.ntlm.MAC(Handle, SigningKey, SeqNum, Message)[source]
scapy.layers.ntlm.MD4le(x)[source]

MD4 over a string encoded as utf-16le

class scapy.layers.ntlm.NEGOEX_EXCHANGE_NTLM(_pkt, /, *, items=[])[source]

Bases: ASN1_Packet

GSSAPI NegoEX Exchange metadata blob This was reversed and may be meaningless

ASN1_codec = <ASN1Codec BER[1]>
ASN1_root = <ASN1F_SEQUENCE(<ASN1F_SEQUENCE(<ASN1F_SEQUENCE_OF items>,)>,)>
aliastypes
fields_desc
NEGOEX_EXCHANGE_NTLM fields

items

ASN1F_SEQUENCE_OF

[]

class scapy.layers.ntlm.NEGOEX_EXCHANGE_NTLM_ITEM(_pkt, /, *, oid=<ASN1_OID['.']>, token=<ASN1_PRINTABLE_STRING['']>)[source]

Bases: ASN1_Packet

ASN1_codec = <ASN1Codec BER[1]>
ASN1_root = <ASN1F_SEQUENCE(<ASN1F_SEQUENCE(<ASN1F_SEQUENCE(<scapy.asn1fields.ASN1F_OID object>, <scapy.asn1fields.ASN1F_PRINTABLE_STRING object>)>,)>,)>
aliastypes
fields_desc
NEGOEX_EXCHANGE_NTLM_ITEM fields

oid

ASN1F_OID

<ASN1_OID['.']>

token

ASN1F_PRINTABLE_STRING

<ASN1_PRINTABLE_STRING['']>

class scapy.layers.ntlm.NTLMSSP(UPN=None, HASHNT=None, PASSWORD=None, USE_MIC=True, NTLM_VALUES={}, DOMAIN_NB_NAME='DOMAIN', DOMAIN_FQDN=None, COMPUTER_NB_NAME='SRV', COMPUTER_FQDN=None, IDENTITIES=None, DROP_MIC_v1=False, DROP_MIC_v2=False, DO_NOT_CHECK_LOGIN=False, SERVER_CHALLENGE=None, **kwargs)[source]

Bases: SSP

The NTLM SSP

Common arguments:

param auth_level:

One of DCE_C_AUTHN_LEVEL

param USE_MIC:

whether to use a MIC or not (default: True)

param NTLM_VALUES:

a dictionary used to override the following values

In case of a client:

- NegotiateFlags
- ProductMajorVersion
- ProductMinorVersion
- ProductBuild

In case of a server:

- NetbiosDomainName
- NetbiosComputerName
- DnsComputerName
- DnsDomainName (defaults to DOMAIN)
- DnsTreeName (defaults to DOMAIN)
- Flags
- Timestamp

Client-only arguments:

param UPN:

the UPN to use for NTLM auth. If no domain is specified, will use the one provided by the server (domain in a domain, local if without domain)

param HASHNT:

the password to use for NTLM auth

param PASSWORD:

the password to use for NTLM auth

Server-only arguments:

param DOMAIN_NB_NAME:

the domain Netbios name (default: DOMAIN)

param DOMAIN_FQDN:

the domain FQDN (default: <domain_nb_name>.local)

param COMPUTER_NB_NAME:

the server Netbios name (default: SRV)

param COMPUTER_FQDN:

the server FQDN (default: <computer_nb_name>.<domain_fqdn>)

param IDENTITIES:

a dict {“username”: <HashNT>} Setting this value enables signature computation and authenticates inbound users.

class CONTEXT[source]

Bases: CONTEXT

ExportedSessionKey
RecvSealHandle
RecvSealKey
RecvSeqNum
RecvSignKey
SendSealHandle
SendSealKey
SendSeqNum
SendSignKey
ServerHostname
SessionKey
chall_tok
neg_tok
GSS_Accept_sec_context(Context: CONTEXT, val=None)[source]
GSS_GetMICEx(Context, msgs, qop_req=0)[source]

[MS-NLMP] sect 3.4.8

GSS_Init_sec_context(Context: CONTEXT, val=None)[source]
GSS_UnwrapEx(Context, msgs, signature)[source]

[MS-NLMP] sect 3.4.7

GSS_VerifyMICEx(Context, msgs, signature)[source]

[MS-NLMP] sect 3.4.9

GSS_WrapEx(Context, msgs, qop_req=0)[source]

[MS-NLMP] sect 3.4.6

LegsAmount(Context: CONTEXT)[source]
class STATE(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: STATE

CLI_SENT_AUTH = 3
CLI_SENT_NEGO = 2
INIT = 1
SRV_SENT_CHAL = 4
auth_level
auth_type = 10
canMechListMIC(Context)[source]
getMechListMIC(Context, input)[source]
oid = '1.3.6.1.4.1.311.2.2.10'
verifyMechListMIC(Context, otherMIC, input)[source]
class scapy.layers.ntlm.NTLMSSP_MESSAGE_SIGNATURE(_pkt, /, *, Version=1, Checksum=b'', SeqNum=0)[source]

Bases: 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            VERSION                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            CHECKSUM                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             SEQNUM                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Fig. NTLMSSP_MESSAGE_SIGNATURE                  
NTLMSSP_MESSAGE_SIGNATURE fields

Version

LEIntField

1

Checksum

XStrFixedLenField

b''

SeqNum

LEIntField

0

class scapy.layers.ntlm.NTLM_AUTHENTICATE(_pkt, /, *, Signature=b'NTLMSSP\x00', MessageType=3, LmChallengeResponseLen=None, LmChallengeResponseMaxLen=None, LmChallengeResponseBufferOffset=None, NtChallengeResponseLen=None, NtChallengeResponseMaxLen=None, NtChallengeResponseBufferOffset=None, DomainNameLen=None, DomainNameMaxLen=None, DomainNameBufferOffset=None, UserNameLen=None, UserNameMaxLen=None, UserNameBufferOffset=None, WorkstationLen=None, WorkstationMaxLen=None, WorkstationBufferOffset=None, EncryptedRandomSessionKeyLen=None, EncryptedRandomSessionKeyMaxLen=None, EncryptedRandomSessionKeyBufferOffset=None, NegotiateFlags=<Flag 0 ()>, ProductMajorVersion=0, ProductMinorVersion=0, ProductBuild=0, res_ver=0, NTLMRevisionCurrent=15, MIC=b'', Payload=[])[source]

Bases: _NTLMPayloadPacket

NTLM_VERSION = 1
OFFSET()[source]
aliastypes
compute_mic(ExportedSessionKey, negotiate, challenge)[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SIGNATURE                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          MESSAGETYPE                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LMCHALLENGERESPONSELEN    |   LMCHALLENGERESPONSEMAXLEN   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                LMCHALLENGERESPONSEBUFFEROFFSET                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     NTCHALLENGERESPONSELEN    |   NTCHALLENGERESPONSEMAXLEN   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                NTCHALLENGERESPONSEBUFFEROFFSET                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         DOMAINNAMELEN         |        DOMAINNAMEMAXLEN       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     DOMAINNAMEBUFFEROFFSET                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          USERNAMELEN          |         USERNAMEMAXLEN        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      USERNAMEBUFFEROFFSET                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         WORKSTATIONLEN        |       WORKSTATIONMAXLEN       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    WORKSTATIONBUFFEROFFSET                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  ENCRYPTEDRANDOMSESSIONKEYLEN |ENCRYPTEDRANDOMSESSIONKEYMAXLEN|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ENCRYPTEDRANDOMSESSIONKEYBUFFEROFFSET             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         NEGOTIATEFLAGS                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PRODUCTMAJORVER|PRODUCTMINORVER|          PRODUCTBUILD         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RES VER                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|NTLMREVISIONCUR|                      MIC                      |
+-+-+-+-+-+-+-+-+                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |            PAYLOAD            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. NTLM_AUTHENTICATE                      
NTLM_AUTHENTICATE fields

Signature

StrFixedLenField

b'NTLMSSP\x00'

MessageType

LEIntEnumField

3

LmChallengeResponseLen

LEShortField

None

LmChallengeResponseMaxLen

LEShortField

None

LmChallengeResponseBufferOffset

LEIntField

None

NtChallengeResponseLen

LEShortField

None

NtChallengeResponseMaxLen

LEShortField

None

NtChallengeResponseBufferOffset

LEIntField

None

DomainNameLen

LEShortField

None

DomainNameMaxLen

LEShortField

None

DomainNameBufferOffset

LEIntField

None

UserNameLen

LEShortField

None

UserNameMaxLen

LEShortField

None

UserNameBufferOffset

LEIntField

None

WorkstationLen

LEShortField

None

WorkstationMaxLen

LEShortField

None

WorkstationBufferOffset

LEIntField

None

EncryptedRandomSessionKeyLen

LEShortField

None

EncryptedRandomSessionKeyMaxLen

LEShortField

None

EncryptedRandomSessionKeyBufferOffset

LEIntField

None

NegotiateFlags

FlagsField

<Flag 0 ()>

ProductMajorVersion

ByteField (Cond)

0

ProductMinorVersion

ByteField (Cond)

0

ProductBuild

LEShortField (Cond)

0

res_ver

LEThreeBytesField (Cond)

0

NTLMRevisionCurrent

ByteEnumField (Cond)

15

MIC

XStrFixedLenField (Cond)

b''

Payload

_NTLMPayloadField

[]

post_build(pkt: bytes, pay: bytes) bytes[source]
class scapy.layers.ntlm.NTLM_AUTHENTICATE_V2(_pkt, /, *, Signature=b'NTLMSSP\x00', MessageType=3, LmChallengeResponseLen=None, LmChallengeResponseMaxLen=None, LmChallengeResponseBufferOffset=None, NtChallengeResponseLen=None, NtChallengeResponseMaxLen=None, NtChallengeResponseBufferOffset=None, DomainNameLen=None, DomainNameMaxLen=None, DomainNameBufferOffset=None, UserNameLen=None, UserNameMaxLen=None, UserNameBufferOffset=None, WorkstationLen=None, WorkstationMaxLen=None, WorkstationBufferOffset=None, EncryptedRandomSessionKeyLen=None, EncryptedRandomSessionKeyMaxLen=None, EncryptedRandomSessionKeyBufferOffset=None, NegotiateFlags=<Flag 0 ()>, ProductMajorVersion=0, ProductMinorVersion=0, ProductBuild=0, res_ver=0, NTLMRevisionCurrent=15, MIC=b'', Payload=[])[source]

Bases: NTLM_AUTHENTICATE

NTLM_VERSION = 2
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SIGNATURE                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          MESSAGETYPE                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LMCHALLENGERESPONSELEN    |   LMCHALLENGERESPONSEMAXLEN   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                LMCHALLENGERESPONSEBUFFEROFFSET                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     NTCHALLENGERESPONSELEN    |   NTCHALLENGERESPONSEMAXLEN   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                NTCHALLENGERESPONSEBUFFEROFFSET                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         DOMAINNAMELEN         |        DOMAINNAMEMAXLEN       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     DOMAINNAMEBUFFEROFFSET                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          USERNAMELEN          |         USERNAMEMAXLEN        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      USERNAMEBUFFEROFFSET                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         WORKSTATIONLEN        |       WORKSTATIONMAXLEN       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    WORKSTATIONBUFFEROFFSET                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  ENCRYPTEDRANDOMSESSIONKEYLEN |ENCRYPTEDRANDOMSESSIONKEYMAXLEN|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ENCRYPTEDRANDOMSESSIONKEYBUFFEROFFSET             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         NEGOTIATEFLAGS                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PRODUCTMAJORVER|PRODUCTMINORVER|          PRODUCTBUILD         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RES VER                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|NTLMREVISIONCUR|                      MIC                      |
+-+-+-+-+-+-+-+-+                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |            PAYLOAD            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. NTLM_AUTHENTICATE_V2                     
NTLM_AUTHENTICATE_V2 fields

Signature

StrFixedLenField

b'NTLMSSP\x00'

MessageType

LEIntEnumField

3

LmChallengeResponseLen

LEShortField

None

LmChallengeResponseMaxLen

LEShortField

None

LmChallengeResponseBufferOffset

LEIntField

None

NtChallengeResponseLen

LEShortField

None

NtChallengeResponseMaxLen

LEShortField

None

NtChallengeResponseBufferOffset

LEIntField

None

DomainNameLen

LEShortField

None

DomainNameMaxLen

LEShortField

None

DomainNameBufferOffset

LEIntField

None

UserNameLen

LEShortField

None

UserNameMaxLen

LEShortField

None

UserNameBufferOffset

LEIntField

None

WorkstationLen

LEShortField

None

WorkstationMaxLen

LEShortField

None

WorkstationBufferOffset

LEIntField

None

EncryptedRandomSessionKeyLen

LEShortField

None

EncryptedRandomSessionKeyMaxLen

LEShortField

None

EncryptedRandomSessionKeyBufferOffset

LEIntField

None

NegotiateFlags

FlagsField

<Flag 0 ()>

ProductMajorVersion

ByteField (Cond)

0

ProductMinorVersion

ByteField (Cond)

0

ProductBuild

LEShortField (Cond)

0

res_ver

LEThreeBytesField (Cond)

0

NTLMRevisionCurrent

ByteEnumField (Cond)

15

MIC

XStrFixedLenField (Cond)

b''

Payload

_NTLMPayloadField

[]

class scapy.layers.ntlm.NTLM_CHALLENGE(_pkt, /, *, Signature=b'NTLMSSP\x00', MessageType=2, TargetNameLen=None, TargetNameMaxLen=None, TargetNameBufferOffset=None, NegotiateFlags=<Flag 0 ()>, ServerChallenge=None, Reserved=None, TargetInfoLen=None, TargetInfoMaxLen=None, TargetInfoBufferOffset=None, ProductMajorVersion=0, ProductMinorVersion=0, ProductBuild=0, res_ver=0, NTLMRevisionCurrent=15, Payload=[])[source]

Bases: _NTLMPayloadPacket

OFFSET()[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SIGNATURE                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          MESSAGETYPE                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         TARGETNAMELEN         |        TARGETNAMEMAXLEN       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     TARGETNAMEBUFFEROFFSET                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         NEGOTIATEFLAGS                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        SERVERCHALLENGE                        |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RESERVED                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         TARGETINFOLEN         |        TARGETINFOMAXLEN       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     TARGETINFOBUFFEROFFSET                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PRODUCTMAJORVER|PRODUCTMINORVER|          PRODUCTBUILD         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RES VER                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|NTLMREVISIONCUR|            PAYLOAD            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. NTLM_CHALLENGE                        
NTLM_CHALLENGE fields

Signature

StrFixedLenField

b'NTLMSSP\x00'

MessageType

LEIntEnumField

2

TargetNameLen

LEShortField

None

TargetNameMaxLen

LEShortField

None

TargetNameBufferOffset

LEIntField

None

NegotiateFlags

FlagsField

<Flag 0 ()>

ServerChallenge

XStrFixedLenField

None

Reserved

XStrFixedLenField

None

TargetInfoLen

LEShortField

None

TargetInfoMaxLen

LEShortField

None

TargetInfoBufferOffset

LEIntField

None

ProductMajorVersion

ByteField (Cond)

0

ProductMinorVersion

ByteField (Cond)

0

ProductBuild

LEShortField (Cond)

0

res_ver

LEThreeBytesField (Cond)

0

NTLMRevisionCurrent

ByteEnumField (Cond)

15

Payload

_NTLMPayloadField

[]

getAv(AvId)[source]
post_build(pkt: bytes, pay: bytes) bytes[source]
class scapy.layers.ntlm.NTLM_Header(_pkt, /, *, Signature=b'NTLMSSP\x00', MessageType=3)[source]

Bases: Packet

aliastypes
classmethod dispatch_hook(_pkt=None, *args, **kargs)[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SIGNATURE                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          MESSAGETYPE                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. NTLM_Header                         
NTLM_Header fields

Signature

StrFixedLenField

b'NTLMSSP\x00'

MessageType

LEIntEnumField

3

class scapy.layers.ntlm.NTLM_NEGOTIATE(_pkt, /, *, Signature=b'NTLMSSP\x00', MessageType=1, NegotiateFlags=<Flag 0 ()>, DomainNameLen=None, DomainNameMaxLen=None, DomainNameBufferOffset=None, WorkstationNameLen=None, WorkstationNameMaxLen=None, WorkstationNameBufferOffset=None, ProductMajorVersion=0, ProductMinorVersion=0, ProductBuild=0, res_ver=0, NTLMRevisionCurrent=15, Payload=[])[source]

Bases: _NTLMPayloadPacket

OFFSET()[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SIGNATURE                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          MESSAGETYPE                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         NEGOTIATEFLAGS                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         DOMAINNAMELEN         |        DOMAINNAMEMAXLEN       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     DOMAINNAMEBUFFEROFFSET                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       WORKSTATIONNAMELEN      |     WORKSTATIONNAMEMAXLEN     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  WORKSTATIONNAMEBUFFEROFFSET                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PRODUCTMAJORVER|PRODUCTMINORVER|          PRODUCTBUILD         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RES VER                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|NTLMREVISIONCUR|            PAYLOAD            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. NTLM_NEGOTIATE                        
NTLM_NEGOTIATE fields

Signature

StrFixedLenField

b'NTLMSSP\x00'

MessageType

LEIntEnumField

1

NegotiateFlags

FlagsField

<Flag 0 ()>

DomainNameLen

LEShortField

None

DomainNameMaxLen

LEShortField

None

DomainNameBufferOffset

LEIntField

None

WorkstationNameLen

LEShortField

None

WorkstationNameMaxLen

LEShortField

None

WorkstationNameBufferOffset

LEIntField

None

ProductMajorVersion

ByteField (Cond)

0

ProductMinorVersion

ByteField (Cond)

0

ProductBuild

LEShortField (Cond)

0

res_ver

LEThreeBytesField (Cond)

0

NTLMRevisionCurrent

ByteEnumField (Cond)

15

Payload

_NTLMPayloadField

[]

post_build(pkt: bytes, pay: bytes) bytes[source]
class scapy.layers.ntlm.NTLM_RESPONSE(_pkt, /, *, Response=b'')[source]

Bases: 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            RESPONSE                           |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. NTLM_RESPONSE                        
NTLM_RESPONSE fields

Response

StrFixedLenField

b''

class scapy.layers.ntlm.NTLMv2_CLIENT_CHALLENGE(_pkt, /, *, RespType=1, HiRespType=1, Reserved1=0, Reserved2=0, TimeStamp=None, ChallengeFromClient=b'12345678', Reserved3=0, AvPairs=[<AV_PAIR  |>])[source]

Bases: 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    RESPTYPE   |   HIRESPTYPE  |           RESERVED1           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           RESERVED2                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           TIMESTAMP                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      CHALLENGEFROMCLIENT                      |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           RESERVED3                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            AVPAIRS            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Fig. NTLMv2_CLIENT_CHALLENGE                   
NTLMv2_CLIENT_CHALLENGE fields

RespType

ByteField

1

HiRespType

ByteField

1

Reserved1

LEShortField

0

Reserved2

LEIntField

0

TimeStamp

UTCTimeField

None

ChallengeFromClient

StrFixedLenField

b'12345678'

Reserved3

LEIntField

0

AvPairs

PacketListField

[<AV_PAIR  |>]

getAv(AvId)[source]
scapy.layers.ntlm.NTLMv2_ComputeSessionBaseKey(ResponseKeyNT, NTProofStr)[source]
class scapy.layers.ntlm.NTLMv2_RESPONSE(_pkt, /, *, NTProofStr=b'', RespType=1, HiRespType=1, Reserved1=0, Reserved2=0, TimeStamp=None, ChallengeFromClient=b'12345678', Reserved3=0, AvPairs=[<AV_PAIR  |>])[source]

Bases: NTLMv2_CLIENT_CHALLENGE

aliastypes
computeNTProofStr(ResponseKeyNT, ServerChallenge)[source]
Set temp to ConcatenationOf(Responserversion, HiResponserversion,

Z(6), Time, ClientChallenge, Z(4), ServerName, Z(4))

Set NTProofStr to HMAC_MD5(ResponseKeyNT,

ConcatenationOf(CHALLENGE_MESSAGE.ServerChallenge,temp))

Remember ServerName = AvPairs

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           NTPROOFSTR                          |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    RESPTYPE   |   HIRESPTYPE  |           RESERVED1           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           RESERVED2                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           TIMESTAMP                           |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      CHALLENGEFROMCLIENT                      |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           RESERVED3                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            AVPAIRS            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. NTLMv2_RESPONSE                       
NTLMv2_RESPONSE fields

NTProofStr

XStrFixedLenField

b''

RespType

ByteField

1

HiRespType

ByteField

1

Reserved1

LEShortField

0

Reserved2

LEIntField

0

TimeStamp

UTCTimeField

None

ChallengeFromClient

StrFixedLenField

b'12345678'

Reserved3

LEIntField

0

AvPairs

PacketListField

[<AV_PAIR  |>]

scapy.layers.ntlm.NTOWFv2(Passwd, User, UserDom, HashNt=None)[source]

Computes the ResponseKeyNT (per [MS-NLMP] sect 3.3.2)

Parameters:
  • Passwd – the plain password

  • User – the username

  • UserDom – the domain name

  • HashNt – (out of spec) if you have the HashNt, use this and set Passwd to None

scapy.layers.ntlm.RC4(handle, data)[source]

The RC4 Encryption Algorithm

scapy.layers.ntlm.RC4Init(key)[source]

Alleged RC4

scapy.layers.ntlm.RC4K(key, data)[source]

Indicates the encryption of data item D with the key K using the RC4 algorithm.

scapy.layers.ntlm.SEAL(Handle, SigningKey, SeqNum, Message)[source]

SEAL() according to [MS-NLMP]

scapy.layers.ntlm.SEALKEY(NegFlg, ExportedSessionKey, Mode)[source]
scapy.layers.ntlm.SIGN(Handle, SigningKey, SeqNum, Message)[source]
scapy.layers.ntlm.SIGNKEY(NegFlg, ExportedSessionKey, Mode)[source]
class scapy.layers.ntlm.Single_Host_Data(_pkt, /, *, Size=48, Z4=0, CustomData=b'', MachineID=b'')[source]

Bases: Packet

aliastypes
default_payload_class(payload)[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              SIZE                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               Z4                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           CUSTOMDATA                          |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           MACHINEID                           |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. Single_Host_Data                       
Single_Host_Data fields

Size

LEIntField

48

Z4

LEIntField

0

CustomData

XStrFixedLenField

b''

MachineID

XStrFixedLenField

b''

scapy.layers.ntlm.UNSEAL(Handle, SigningKey, SeqNum, Message)[source]

UNSEAL() according to [MS-NLMP]