Saltar al contenido

Creando la suma de comprobación xor de todos los bytes en una cadena hexadecimal en Python

Solución:

Has declarado packet como el representación imprimible del mensaje:

packet="0x8d 0x1e 0x19 0x1b 0x83 0x00 0x01 0x01 0x00 0x00 0x00 0x4b 0x00 0x00"

entonces tu mensaje actual no es [0x8d, 0x1e, ..., 0x00], pero ['0', 'x', '8', 'd', ..., '0'] en lugar de. Entonces, el primer paso es arreglarlo:

packet="0x8d 0x1e 0x19 0x1b 0x83 0x00 0x01 0x01 0x00 0x00 0x00 0x4b 0x00 0x00"
packet = [chr(int(x, 16)) for x in packet.split(' ')]

O bien, podría considerar codificarlo “correctamente” desde el principio:

packet="x8dx1ex19x1bx83x00x01x01x00x00x00x4bx00x00"

En este punto, podemos xor, miembro por miembro:

checksum = 0
for el in packet:
    checksum ^= ord(el)

print checksum, hex(checksum), chr(checksum)

la suma de control que obtengo es 0x59, no 0xc2, lo que significa que ha calculado el mensaje incorrecto o el mensaje original no es el que proporcionó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Comentarios (0)

Deberias postear mas posts como esta… Muchas gracias Saludos

Responder

Gracias por el comentario lo tendré en cuenta para los próximos artículos de la web.

Responder