|
131 |
if not connector.samr: |
131 |
if not connector.samr: |
132 |
connector.open_samr() |
132 |
connector.open_samr() |
133 |
|
133 |
|
134 |
sam_accountname = lsa.String() |
134 |
user_handle = None |
135 |
sam_accountname.string = samaccountname |
135 |
try: |
136 |
(rids, types) = connector.samr.LookupNames(connector.dom_handle, [sam_accountname,]) |
136 |
sam_accountname = lsa.String() |
|
|
137 |
sam_accountname.string = samaccountname |
138 |
(rids, types) = connector.samr.LookupNames(connector.dom_handle, [sam_accountname,]) |
137 |
|
139 |
|
138 |
rid=rids.ids[0] |
140 |
rid=rids.ids[0] |
139 |
user_handle = connector.samr.OpenUser(connector.dom_handle, security.SEC_FLAG_MAXIMUM_ALLOWED, rid) |
141 |
user_handle = connector.samr.OpenUser(connector.dom_handle, security.SEC_FLAG_MAXIMUM_ALLOWED, rid) |
140 |
|
142 |
|
141 |
userinfo18 = samba.dcerpc.samr.UserInfo18() |
143 |
userinfo18 = samba.dcerpc.samr.UserInfo18() |
142 |
bin_hash = binascii.a2b_hex(pwd) |
144 |
bin_hash = binascii.a2b_hex(pwd) |
143 |
enc_hash = mySamEncryptNTLMHash(bin_hash, connector.samr.session_key) |
145 |
enc_hash = mySamEncryptNTLMHash(bin_hash, connector.samr.session_key) |
144 |
|
146 |
|
145 |
samr_Password = samba.dcerpc.samr.Password() |
147 |
samr_Password = samba.dcerpc.samr.Password() |
146 |
samr_Password.hash = map(ord, enc_hash) |
148 |
samr_Password.hash = map(ord, enc_hash) |
147 |
|
149 |
|
148 |
userinfo18.nt_pwd = samr_Password |
150 |
userinfo18.nt_pwd = samr_Password |
149 |
userinfo18.nt_pwd_active = 1 |
151 |
userinfo18.nt_pwd_active = 1 |
150 |
userinfo18.password_expired = 0 |
152 |
userinfo18.password_expired = 0 |
151 |
info = connector.samr.SetUserInfo(user_handle, 18, userinfo18) |
153 |
info = connector.samr.SetUserInfo(user_handle, 18, userinfo18) |
|
|
154 |
finally: |
155 |
if user_handle: |
156 |
connector.samr.Close(user_handle) |
157 |
connector.close_samr() |
152 |
|
158 |
|
153 |
return info |
159 |
return info |
154 |
|
160 |
|