u64 = lambda d: pwn.u64(d.ljust(8, b"\0")[:8]) u32 = lambda d: pwn.u32(d.ljust(4, b"\0")[:4]) u16 = lambda d: pwn.u16(d.ljust(2, b"\0")[:2]) sla = lambda a, b: r.sendlineafter(a, b) sa = lambda a, b: r.sendafter(a, b) sl = lambda a: r.sendline(a) s = lambda a: r.send(a) recv = lambda: r.recv() recvn = lambda a: r.recvn(a) recvu = lambda a, b=False: r.recvuntil(a, b)
gdbscript = ''' b main continue '''
defconn(): global r iflen(argv) > 1: if argv[1] == "gdb": r = gdb.debug([e.path], gdbscript=gdbscript) else : ip, port = argv[1], argv[2] r = remote(ip, port) else: r = e.process()
defgenerate_input_bytes(desired_output: bytes) -> bytes: input_bytes = [] for idx, c inenumerate(desired_output): shift = idx % 7 # Reverse lowercase letters (a-z) iford('a') <= c <= ord('z'): original = c - shift if original < ord('a'): original += 26# Wrap around alphabet input_bytes.append(original) # Reverse digits (0-9) eliford('0') <= c <= ord('9'): original = c - shift if original < ord('0'): original += 10# Wrap around digits input_bytes.append(original) # Symbols/others remain unchanged else: input_bytes.append(c) returnbytes(input_bytes)