Proto/tests/pest.py
2023-11-28 21:07:48 +01:00

46 lines
902 B
Python

import socket
from struct import pack, unpack
from time import time, sleep
def sock():
addr = ("localhost", 13370)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(addr)
return s
def recv(s):
ptype, plen = unpack(">BI", s.recv(5))
data = s.recv(plen-6)
cs = s.recv(1)
print(f"I {ptype:X} {data}")
def pstr(s):
if type(s) == str:
s = s.encode()
return pack(">I", len(s)) + s
def snd(s, typ, dat):
p = pack(">BI", typ, len(dat)+6) + dat
csum = (-sum(p)) % 256
c = bytes([ csum ])
s.sendall(p + c)
def hello(s):
h = pstr("pestcontrol")
h += pack(">I", 1)
snd(s, 0x50, h)
def sivi(s):
h = pack(">II", 1337, 3)
h += pstr("green starred rat")
h += pack(">I", 765)
h += pstr("red footed elephant")
h += pack(">I", 6029)
h += pstr("black tailed unicorn")
h += pack(">I", 1234)
snd(s, 0x58, h)
s = sock()
hello(s)
recv(s)
sivi(s)