18a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#!/usr/bin/env python
28a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen
38a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen"""This is a very simple client for the backdoor daemon. This is intended more
48a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenfor testing rather than normal use. See bd_serv.py """
58a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen
68a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenimport socket
78a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenimport sys, time, select
88a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen
98a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chendef recv_wrapper(s):
108a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen    r,w,e = select.select([s.fileno()],[],[], 2)
118a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen    if not r:
128a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen        return ''
138a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen    #cols = int(s.recv(4))
148a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen    #rows = int(s.recv(4))
158a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen    cols = 80
168a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen    rows = 24
178a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen    packet_size = cols * rows * 2 # double it for good measure
188a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen    return s.recv(packet_size)
198a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen
208a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#HOST = '' #'localhost'    # The remote host
218a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#PORT = 1664 # The same port as used by the server
228a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chens = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
238a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chens.connect(sys.argv[1])#(HOST, PORT))
248a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chentime.sleep(1)
258a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#s.setblocking(0)
268a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#s.send('COMMAND' + '\x01' + sys.argv[1])
278a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chens.send(':sendline ' + sys.argv[2])
288a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenprint recv_wrapper(s)
298a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chens.close()
308a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chensys.exit()
318a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#while True:
328a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#    data = recv_wrapper(s)
338a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#    if data == '':
348a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#        break
358a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#    sys.stdout.write (data)
368a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#    sys.stdout.flush()
378a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#s.close()
388a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen
39