python: Add bindings for NTLMSSP
authorAndrew Bartlett <abartlet@samba.org>
Thu, 23 Mar 2017 03:30:05 +0000 (16:30 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 29 Mar 2017 00:37:29 +0000 (02:37 +0200)
This is helpful for building NTLMv2 packets in python for testing against the SamLogon server

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
librpc/idl/ntlmssp.idl
librpc/wscript_build
source4/librpc/wscript_build

index 6b228869f90247073900e4b315cb1c2ec0950350..4799066d7c4af00c4ae44510687561c4dbf4e327 100644 (file)
@@ -207,10 +207,10 @@ interface ntlmssp
                uint8 ChallengeFromClient[8];
        } LMv2_RESPONSE;
 
-       typedef [nopython,nodiscriminant] union {
+       typedef [nodiscriminant] union {
                [case(24)] LM_RESPONSE v1;
                [default];
-       } ntlmssp_LM_RESPONSE;
+       } ntlmssp_LM_RESPONSE_with_len;
 
        /* [MS-NLMP] 2.2.2.6 NTLM_RESPONSE */
 
@@ -238,11 +238,11 @@ interface ntlmssp
                NTLMv2_CLIENT_CHALLENGE Challenge;
        } NTLMv2_RESPONSE;
 
-       typedef [public,nopython,nodiscriminant] union {
+       typedef [public,nodiscriminant] union {
                [case(0)] ;
                [case(0x18)] NTLM_RESPONSE v1;
                [default] NTLMv2_RESPONSE v2;
-       } ntlmssp_NTLM_RESPONSE;
+       } ntlmssp_NTLM_RESPONSE_with_len;
 
        const int NTLMSSP_MIC_OFFSET = 72;
        const int NTLMSSP_MIC_SIZE = 16;
@@ -258,10 +258,10 @@ interface ntlmssp
                [value(NtLmAuthenticate)] ntlmssp_MessageType MessageType;
                uint16 LmChallengeResponseLen;
                [value(LmChallengeResponseLen)] uint16 LmChallengeResponseMaxLen;
-               [relative] [subcontext(0),subcontext_size(LmChallengeResponseLen),switch_is(LmChallengeResponseLen)] ntlmssp_LM_RESPONSE *LmChallengeResponse;
+               [relative] [subcontext(0),subcontext_size(LmChallengeResponseLen),switch_is(LmChallengeResponseLen)] ntlmssp_LM_RESPONSE_with_len *LmChallengeResponse;
                uint16 NtChallengeResponseLen;
                [value(NtChallengeResponseLen)] uint16 NtChallengeResponseMaxLen;
-               [relative] [subcontext(0),subcontext_size(NtChallengeResponseMaxLen),switch_is(NtChallengeResponseLen)] ntlmssp_NTLM_RESPONSE *NtChallengeResponse;
+               [relative] [subcontext(0),subcontext_size(NtChallengeResponseMaxLen),switch_is(NtChallengeResponseLen)] ntlmssp_NTLM_RESPONSE_with_len *NtChallengeResponse;
                [value(ndr_ntlmssp_string_length(NegotiateFlags, DomainName))] uint16 DomainNameLen;
                [value(DomainNameLen)] uint16 DomainNameMaxLen;
                [relative] [subcontext(0),subcontext_size(DomainNameLen)] [flag(ndr_ntlmssp_negotiated_string_flags(r->NegotiateFlags))] string *DomainName;
index 55a6f7ab68445cbf8e7ca4a63ee661b42ca39bef..c4b647c242de9ecafb360adc678de5be00415cb4 100644 (file)
@@ -515,6 +515,11 @@ bld.SAMBA_SUBSYSTEM('RPC_NDR_DRSBLOBS',
     public_deps='dcerpc-binding NDR_DRSBLOBS'
     )
 
+bld.SAMBA_SUBSYSTEM('RPC_NDR_NTLMSSP',
+    source='gen_ndr/ndr_ntlmssp_c.c',
+    public_deps='dcerpc-binding NDR_NTLMSSP'
+    )
+
 bld.SAMBA_SUBSYSTEM('RPC_NDR_POLICYAGENT',
     source='gen_ndr/ndr_policyagent_c.c',
     public_deps='dcerpc-binding NDR_POLICYAGENT'
index bb098ab2a5a8105dadc380627d8b4a2468da9308..a14215bc5acccf44e7c466e2e53b0f6065b6bf69 100644 (file)
@@ -246,6 +246,12 @@ for env in bld.gen_python_environments():
                realname='samba/dcerpc/drsblobs.so'
                )
 
+       bld.SAMBA_PYTHON('python_dcerpc_ntlmssp',
+               source='../../librpc/gen_ndr/py_ntlmssp.c',
+               deps='%s %s RPC_NDR_NTLMSSP' % (pytalloc_util, pyrpc_util),
+               realname='samba/dcerpc/ntlmssp.so'
+               )
+
 bld.SAMBA_PYTHON('python_srvsvc',
     source='../../librpc/gen_ndr/py_srvsvc.c',
     deps='RPC_NDR_SRVSVC pytalloc-util pyrpc_util',