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''
def p8(self, *a, **kw): return self.send(packing.p8(*a, **kw))
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))
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))