from samba.ndr import ndr_pack
from samba.samdb import SamDB
from samba import NTSTATUSError, ntstatus
+from samba.compat import get_string
+
import ctypes
+
"""
Integration tests for pycredentials
"""
MACHINE_NAME = "PCTM"
USER_NAME = "PCTU"
-
class PyCredentialsTests(TestCase):
def setUp(self):
newpass = samba.generate_random_password(PWD_LEN, PWD_LEN)
encoded = newpass.encode('utf-16-le')
pwd_len = len(encoded)
- filler = [ord(x) for x in os.urandom(DATA_LEN - pwd_len)]
+ filler = [x if isinstance(x, int) else ord(x) for x in os.urandom(DATA_LEN - pwd_len)]
pwd = netlogon.netr_CryptPassword()
pwd.length = pwd_len
- pwd.data = filler + [ord(x) for x in encoded]
+ pwd.data = filler + [x if isinstance(x, int) else ord(x) for x in encoded]
self.machine_creds.encrypt_netr_crypt_password(pwd)
c.netr_ServerPasswordSet2(self.server,
self.machine_creds.get_workstation(),
# run failed
delete_force(self.ldb, self.machine_dn)
- utf16pw = unicode(
- '"' + self.machine_pass.encode('utf-8') + '"', 'utf-8'
- ).encode('utf-16-le')
+ utf16pw = ('"%s"' % get_string(self.machine_pass)).encode('utf-16-le')
self.ldb.add({
"dn": self.machine_dn,
"objectclass": "computer",
# run failed
delete_force(self.ldb, self.user_dn)
- utf16pw = unicode(
- '"' + self.user_pass.encode('utf-8') + '"', 'utf-8'
- ).encode('utf-16-le')
+ utf16pw = ('"%s"' % get_string(self.user_pass)).encode('utf-16-le')
self.ldb.add({
"dn": self.user_dn,
"objectclass": "user",
def get_authenticator(self, c):
auth = self.machine_creds.new_client_authenticator()
current = netr_Authenticator()
- current.cred.data = [ord(x) for x in auth["credential"]]
+ current.cred.data = [x if isinstance(x, int) else ord(x) for x in auth["credential"]]
current.timestamp = auth["timestamp"]
subsequent = netr_Authenticator()
logon = netlogon.netr_NetworkInfo()
- logon.challenge = [ord(x) for x in challenge]
+ logon.challenge = [x if isinstance(x, int) else ord(x) for x in challenge]
logon.nt = netlogon.netr_ChallengeResponse()
logon.nt.length = len(response["nt_response"])
- logon.nt.data = [ord(x) for x in response["nt_response"]]
+ logon.nt.data = [x if isinstance(x, int) else ord(x) for x in response["nt_response"]]
logon.identity_info = netlogon.netr_IdentityInfo()
(username, domain) = creds.get_ntlm_username_domain()