因此,我正在从ip设备收集一些代码,而我正努力计算它的校验和。例如,这是我使用python中的简单套接字收集的软件包:
b'\x07\x94ES(\xff\xceY:'
使用.hex()
将其转换为更易读的代码,我得到了:
0794455328ffce593a
07 ^ 94 ^ 45 ^ 53 ^ 28 ^ ff ^ ce ^ 59 ^ FF = 3a
,但我可以)不知道怎么做。我尝试将值异或为整数,但结果差强人意。顺便说一句,07是包的字节数。另一个字符串示例是
b'\x11\xb0\x11\x05\x03\x02\x08\x01\x08\x01\x03\x08\x03\n\x01\n\n\x01I'
有人有主意吗?
问题来源:stackoverflow
通过一些猜测工作和2个示例,似乎所使用的xor算法会将所有位翻转到某个位置。进行翻转使示例的值匹配。
data_list = [b'\x07\x94ES(\xff\xceY:', b'\x11\xb0\x11\x05\x03\x02\x08\x01\x08\x01\x03\x08\x03\n\x01\n\n\x01I']
for data in data_list:
value = data[0]
for d in data[1:-1]:
value ^= d
checksum = value ^ 0xFF # negate all the bits
if checksum == data[-1]:
print("checksum match for {}".format(data))
else:
print("checksum DOES NOT MATCH for {}".format(data))
印刷品:
checksum match for b'\x07\x94ES(\xff\xceY:'
checksum match for b'\x11\xb0\x11\x05\x03\x02\x08\x01\x08\x01\x03\x08\x03\n\x01\n\n\x01I'
不确定是否对将来的读者有帮助,但至少可以解决。
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。