Esempio n. 1
0
def swapnibbleinbytes(data):
    r"""
    Performs a bit-reversal within a byte-string.

    Example:

        >>> swapbits(b'\xf0')
        b'\x0f'
    """
    return b"".join(SWAPBITSINBYTES_CACHE[b] for b in iterateints(data))
Esempio n. 2
0
 def transform_int_high(self, data):
     # special case for re-encoding high part of offsets
     # LiveMaker always only outputs 0 or 0xffffffff depending on if high
     # bit ends up set
     key = next(self.keystream)
     data = [(b ^ ((key >> (8 * i)) & 0xff))
             for i, b in enumerate(construct.iterateints(data))]
     if data[3] & 0x80:
         data = [0xff, 0xff, 0xff, 0xff]
     else:
         data = [0, 0, 0, 0]
     return construct.integers2bytes(data)
Esempio n. 3
0
 def transform_int(self, data):
     key = next(self.keystream)
     data = [(b ^ ((key >> (8 * i)) & 0xff))
             for i, b in enumerate(construct.iterateints(data))]
     return construct.integers2bytes(data)
Esempio n. 4
0
 def transform_bytes(self, data):
     return construct.integers2bytes((b ^ (next(self.keystream) & 0xff))
                                     for b in construct.iterateints(data))