我在Django中运行脚本但在python中运行正常时收到错误“struct()参数1必须是字符串,而不是unicode”。 我正在尝试将SID的十六进制版本从Active Directory转换为字符串版本。 错误说参数1是unicode但是我可以告诉它不是。 据我所知,参数1是SID的切片值。
感谢任何帮助。 这是代码:
result = con.search_s(ldap_base, ldap.SCOPE_SUBTREE, criteria,
attributes)
sid = result[0][1]["objectSid"][0]
if sys.version_info.major < 3:
revision = ord(sid[0])
else:
revision = sid[0]
if sys.version_info.major < 3:
number_of_sub_ids = ord(sid[1])
else:
number_of_sub_ids = sid[1]
iav = struct.unpack('>Q', b'\x00\x00' + sid[2:8])[0]
sub_ids = [struct.unpack('<I', sid[8 + 4 * i:12 + 4 * i])[0]
for i in range(number_of_sub_ids)]
sid = 'S-{0}-{1}-{2}'.format(revision, iav, '-'.join([str(sub_id)
for sub_id in sub_ids]))