Dudo que tu programa algún día termine por los siguientes detalles:
1.- hex() devuelve un string y estas comparando strings con enteros.
2.- getrandbits(4) no cubre todo tu espacio de busqueda. Por ejemplo getrandbits(4) va a buscar entre 0x00 y 0x0F
3.- Incluso si arreglas esto, sera tremendamente lento por que el generador tiende a darte valores repetidos.
4.- Tu campo de búsqueda es muy pequeño (0 a 255 o de 0x00 a 0xFF) es mejor hacer una búsqueda lineal.
5.- Como ya tienes el código no veo algún punto en tratar de adivinarlo.
Código Python:
Ver originalfrom random import *
code = [0x25, 0xa3, 0x73, 0x42, 0x25]
message = []
for byte in code:
for attemp_byte in range(256):
if byte == attemp_byte:
message.append(attemp_byte)
break
print message