Skip to content

Instantly share code, notes, and snippets.

@antropod
Created May 4, 2022 23:13
Show Gist options
  • Save antropod/f111f76777d2e4463872eade5c3cfc43 to your computer and use it in GitHub Desktop.
Save antropod/f111f76777d2e4463872eade5c3cfc43 to your computer and use it in GitHub Desktop.
import socket
import struct
from urllib.parse import parse_qs
from time import sleep
ADDR = '127.0.0.1'
PORT = 63649
def export(addr, port, s):
query = b"\x00\x83" + struct.pack("!H", len(s) + 6) + b"\x00\x00\x00\x00\x00" + s.encode('latin1') + b"\x00"
server = socket.create_connection((addr, port), 16)
server.send(query)
resp = server.recv(4096)
server.close()
assert resp[0:2] == b"\x00\x83", "Invalid packet marker"
rs_len = struct.unpack("!H", resp[2:4])[0]
assert resp[4:5] == b'\x06', "Invalid format, ascii string expected"
assert len(resp) == rs_len + 4
response = resp[5:-1].decode('latin1')
result = parse_qs(response)
return result
def main():
with open('log.txt', 'w') as fp:
while True:
response = export(ADDR, PORT, '?status')
print(response, file=fp)
sleep(1)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment