31 lines
685 B
Python
Executable File
31 lines
685 B
Python
Executable File
#!/usr/bin/env -S python3
|
|
from pwn import *
|
|
from struct import pack
|
|
from tqdm import tqdm
|
|
|
|
if len(sys.argv) < 2:
|
|
print("no args for serial device")
|
|
exit()
|
|
|
|
while True:
|
|
kernel = open("kernel8.img", "rb").read()
|
|
r = serialtube(sys.argv[1], convert_newlines=False)
|
|
|
|
# send size
|
|
sz = len(kernel)
|
|
print("size:", sz)
|
|
r.send(pack("<I", sz))
|
|
print(r.recvuntil(b"$").decode())
|
|
|
|
# send kernel
|
|
splitsize = 1000
|
|
for i in tqdm(range(len(kernel) // splitsize), unit="KB"):
|
|
r.send(kernel[i * splitsize : (i + 1) * splitsize])
|
|
|
|
r.send(kernel[len(kernel) // splitsize * splitsize:])
|
|
|
|
r.interactive()
|
|
|
|
r.send(b"reboot\n")
|
|
sleep(1)
|