我尝试使用python dbus模块连接到WEP安全WiFi
我填写网络配置字典如下:
nw_config['wep_key0'] = binascii.unhexlify(mypassword)
我的密码是十六进制字符串
当mypassword设置为“12345678”时,不会出现错误,但当它以英文字母(如a、b、c、d、e、f)出现时,将不会出现错误
例如:
^{pr2}$它将显示以下错误
UnicodeError:要通过D-Bus发送的字符串参数必须是有效的UTF-8,不包含非字符代码点
只是不明白这两种情况有什么区别,因为它们都应该是有效的十六进制字符串?在
更新:与dbus相关的代码
args = dbus.Dictionary(nw_config)
bus = dbus.SystemBus()
wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_PATH)
wpas = dbus.Interface(wpas_obj, WPAS_DBUS_SERVICE)
if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
path = wpas.GetInterface(if_obj, WPAS_DBUS_IFACE)
network = iface.AddNetwork(args) # this line has problem
谢谢@Ulrich Eckhardt的帮助。在
假设您有一个十六进制字符串wep密钥,名为pw。 然后必须执行以下操作才能在dbus中成功传输此密钥:
在dbus.ByteArray公司(密码解码(‘十六进制’)
所有的字母,还有十六进制数字8和9都有最高的位集。当这发生在字节的上半字节时,这个字节只能是多字节UTF-8序列的一部分。请查阅维基百科关于UTF-8的文章以获得进一步的解释。在
现在,不是每个字节序列都是有效的UTF-8,而您的数据可能不是。您的代码也没有帮助,因为它不包括您试图解码的文件中的数据。你应该可以用这样的方法复制它:
你应该在第三行得到错误。在
相关问题 更多 >
编程相关推荐