#!/usr/bin/env python
from vagd import Vagd, Qegd, Dogd, Box
from pwn import *

GDB_OFF = 0x555555555000
IP = ''
PORT = 0
BINARY = ''
ARGS = []
ENV = {}
GDB = f"""

c"""

context.binary = exe = ELF(BINARY, checksec=False)
context.aslr = False

byt = lambda x: str(x).encode()
phex = lambda x, y='': print(y + hex(x))
lhex = lambda x, y='': log.info(y + hex(x))

t = None
gt = lambda at=None: at if at else t
sl = lambda x, t=None: gt(t).sendline(x)
se = lambda x, t=None: gt(t).send(x)
sla = lambda x, y, t=None: gt(t).sendlineafter(x, y)
sa = lambda x, y, t=None: gt(t).sendafter(x, y)
ra = lambda t=None: gt(t).recvall()
rl = lambda t=None: gt(t).recvline()
re = lambda x, t=None: gt(t).recv(x)
ru = lambda x, t=None: gt(t).recvuntil(x)
it = lambda t=None: gt(t).interactive()
cl = lambda t=None: gt(t).close()

vm = None
def get_target(**kw):
    global vm
    if args.REMOTE:
        context.log_level = 'debug'
        return remote(IP, PORT)

    if not vm:
        vm = Dogd(exe.path, image=Box.DOCKER_FOCAL, ex=True, fast=True)
        # vm = Vagd(exe.path, vbox=Box.UBUNTU_FOCAL64, ex=True, fast=True)
        # vm = Qegd(exe.path, img=Box.CLOUDIMAGE_FOCAL, user='ubuntu', ex=True, fast=True)
        # vm = Shgd(exe.path, user='user', port=22, ex=True, fast=True)
    return vm.start(argv=ARGS, env=ENV, gdbscript=GDB, **kw)


t = get_target()

t.interactive()
