Exemple #1
0
    def generatePadding(self, offset, count):
        """
        Generates padding to be inserted into the ROP stack.

        >>> rop = ROP([])
        >>> val = rop.generatePadding(5,15)
        >>> cyclic_find(val[:4])
        5
        >>> len(val)
        15
        >>> rop.generatePadding(0,0)
        b''

        """

        # Ensure we don't generate a cyclic pattern which contains badchars
        alphabet = b''.join(packing.p8(c) for c in bytearray(string.ascii_lowercase.encode()) if c not in self._badchars)

        if count:
            return cyclic(offset + count, alphabet=alphabet)[-count:]
        return b''
Exemple #2
0
 def p8(self, *a, **kw):
     return self.send(packing.p8(*a, **kw))
Exemple #3
0
 def p8(self,   address, data, *a, **kw):    return self.write(address, packing.p8(data, *a, **kw))
 def pack(self, address, data, *a, **kw):    return self.write(address, packing.pack(data, *a, **kw))
Exemple #4
0
 def p8(self,   address, data, *a, **kw):
     """Writes a 8-bit integer ``data`` to the specified ``address``"""
     return self.write(address, packing.p8(data, *a, **kw))