我有一组值作为字符串和一组潜在的键。给出所有可能的一个字符串,我试图制作256个潜在的ascii字符串。
my_text = '253224233b32242479'
print(my_text)
for key in string.printable: #all one character ascii charecter
key = key.encode("hex")
key = int(key, 16)
key = key + 0x200
key = hex(key)
total_string = ""
for x in range(0, len(my_text)/2): #scroll through all pairs of hex numbers
original_letter = my_text[x*2:x*2+2]
original_letter = int(original_letter, 16)
original_letter = original_letter + 0x200
original_letter_as_hex = hex(original_letter)
xor_letter = original_letter_as_hex ^ key
total_string = total_string.append(str(xor_letter))
print(total_string)
print(total_string.decode("hex"))
我的问题是xor_letter = original_letter_as_hex ^ key
给出:TypeError: unsupported operand type(s) for ^: 'str' and 'str'
那么,我怎样才能转换为例如' 25'对于可以被作为十六进制的XOR&#的东西?
这个问题是我在这里提出的一个更深入的问题:How to convert a hex number that is a string type to a hex type
简而言之:
>>> key = '0'
>>> key = key.encode('hex')
>>> key = int(key, 16)
>>> key = key + 0x200
>>> key = hex(key)
>>> letter = '0e'
>>> letter = int(letter, 16)
>>> letter = letter + 0x200
>>> letter = hex(letter)
>>> done = key^letter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for ^: 'str' and 'str'
我该怎么做? done
应该是&#39; 3e&#39;应转换为&#39;&gt;&#39;在ascii。
由一个ascii输入'0e'
进行异或的一个十六进制输入'0'
是一个ascii输出'>'
我想要一个可以将2个输入作为tpye字符串的函数,将其中一个作为十六进制处理,将一个作为ascii处理,并将它们像这个站点一样对其进行异或处理:http://xor.pw/?
答案 0 :(得分:1)
int
个。您还没有回答关于您所使用的版本的关键问题。无论如何,在Python 3中:
>>> keys = bytes(string.printable, 'ascii')
>>> keys
b'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> keys[0]
48
>>> key = keys[0]
>>> letter = '0e'
>>> letter = int(letter, 16)
>>> key += 0x200
>>> letter += 0x200
>>> done = key^letter
>>> done
62
现在,我们可以把它放到另一个字节对象中:
>>> bytes([done])
b'>'
请注意b
前缀。或者,我们可以获得Python 3 str
:
>>> bytes([done]).decode('ascii')
'>'
或者只使用chr
:
>>> chr(done)
'>'