十六进制到箱:带有 binascii.unhexlify 的奇数长度字符串错误



我想将底部的这个文件这样的十六进制文件转换为二进制文件,但我给出了这个错误:我想我需要使用 .strip(( 方法,但我不是很确定!

Traceback (most recent call last):
File ".descrypt.py", line 27, in <module>
main()
File ".descrypt.py", line 23, in main
HexDataBin = HexToBin(HexDataOutput.strip())
File ".descrypt.py", line 11, in HexToBin
binary_string = binascii.unhexlify(HexString)
binascii.Error: Odd-length string

这是十六进制文件:

01,00,00,00,d0,8c,9d,df,01,15,d1,11,8c,7a,00,c0,4f,c2,97,eb,
01,00,00,00,d7,ab,17,ea,1a,93,80,48,90,e5,9c,7a,88,e1,69,cb,00,00,00,00,02,
00,00,00,00,00,10,66,00,00,00,01,00,00,20,00,00,00,7e,b2,44,64,25,d4,22,21,
1c,a1,c9,5a,fb,57,10,8a,50,a8,e1,2d,62,cb,e8,63,68,82,09,7c,98,e7,46,9e,00,
00,00,00,0e,80,00,00,00,02,00,00,20,00,00,00,20,1c,7c,05,05,d9,9f,cd,1e,5b,
c7,d3,8d,5e,41,14,82,3a,2b,04,7e,05,09,bb,2f,af,d8,93,fb,98,08,bc,20,00,00,
00,7a,3e,d5,63,9e,de,99,76,2f,ff,cf,16,a7,c1,56,6f,27,ab,59,fd,f9,5b,e7,1a,
5e,e9,f8,71,b4,d0,27,28,40,00,00,00,75,71,18,79,6d,72,39,a2,ed,42,4e,1a,f8,
41,99,a5,9b,55,75,bb,89,d8,99,0f,72,af,49,f2,74,68,8d,11,ad,17,08,6b,8b,61,
81,81,f7,fd,c8,95,41,cf,43,64,4c,21,94,ca,35,69,0a,56,9f,37,6a,3d,18,12,8f,
e3

这是我的代码:

import binascii
def ReplaceHex(HexString, toReplace, newString):
for elem in toReplace:
if elem in HexString:
HexString = HexString.replace(elem, newString)
return HexString
def HexToBin(HexString):
binary_string = binascii.unhexlify(HexString)
return HexString
def main():
with open('target.txt', 'r') as HexFile:
HexData = HexFile.read()
print(HexData)
HexDataOutput = ReplaceHex(HexData, [',', '\'], " ")
print(HexDataOutput)
HexDataBin = HexToBin(HexDataOutput.strip())
print(HexDataBin)
if __name__ == '__main__':
main()

您还需要过滤空格符号:

import binascii
from functools import reduce
with open('target.txt', 'r') as text:
repls = [',','\','n',' ']
# remove all symbols form repls in file content
hexline = reduce(lambda a, v: a.replace(v,''), repls, text.read())
binaryline = binascii.unhexlify(hexline) 
print(binaryline)

相关内容

  • 没有找到相关文章