How to XOR a byte output?

Chris Angelico rosuav at gmail.com
Wed Apr 13 09:29:15 EDT 2016


On Wed, Apr 13, 2016 at 11:18 PM, durgadevi1
<srirajarajeswaridevikrupa at gmail.com> wrote:
>
> The output from the file is given below:
>
> b'$//W?\xc0\x829\xa2\xb9\x13\x8c\xd5{\'
>
>
> I used the type() to identify the class and its a byte class.
>
> I saw many \x and thought it might be hex.
>
>
> So, I used binascii.hexlify() and got the following output:
> b'242f2f573fc08239a2b9138cd57b'
>
> Now, this output is being encrypted and I need to perform an XOR operation on it in order to retrieve a secret message.
>
> But, I'm not sure how to code the XOR operation. How do I code that?
>

What you have is a series of bytes. They don't have any obvious
meaning right there, so you're going to have to figure out what to XOR
it with.

Let's just guess that you want to xor with the byte value 0xAA. We can
do that fairly simply, using integer operations.

>>> data = b'$//W?\xc0\x829\xa2\xb9\x13\x8c\xd5{\\'
>>> bytes(b ^ 0xAA for b in data)
b'\x8e\x85\x85\xfd\x95j(\x93\x08\x13\xb9&\x7f\xd1\xf6'

Well, that doesn't look much more intelligible. We can try a few other
byte values pretty easily:

>>> bytes(b ^ 0x17 for b in data)
b'388@(\xd7\x95.\xb5\xae\x04\x9b\xc2lK'
>>> bytes(b ^ 0x9D for b in data)
b'\xb9\xb2\xb2\xca\xa2]\x1f\xa4?$\x8e\x11H\xe6\xc1'
>>> bytes(b ^ 0xE2 for b in data)
b'\xc6\xcd\xcd\xb5\xdd"`\xdb@[\xf1n7\x99\xbe'

but it still doesn't look very promising. You're going to need to know
the key - the byte value, or sequence of byte values, to XOR with.

ChrisA



More information about the Python-list mailing list