#!/usr/bin/env python # originally based on a telnet client by Gang Seong Lee, 2000.3.20. from telnetlib import Telnet from threading import Thread import socket import sys import readline import os class ReaderThread(Thread): def __init__(self, telnet): self.telnet = telnet Thread.__init__(self) def run(self): while True: str = self.telnet.read_some() if str == '': break sys.stdout.write(str) sys.stdout.flush() class UnixTelnet (Telnet): def __init__ (self): Telnet.__init__ (self) def open (self, addr, timeout=socket._GLOBAL_DEFAULT_TIMEOUT): self.eof = 0 if type(addr) is str: self.host = 'none' self.port = 0 self.sock = socket.socket (socket.AF_UNIX, socket.SOCK_STREAM) else: self.host, self.port = addr self.sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) self.sock.connect (addr) def main (addr): telnet = UnixTelnet() telnet.open (addr) reader = ReaderThread(telnet) reader.start() while True: if not reader.isAlive(): break try: line = raw_input() except: break telnet.write(line + '\r\n') print '\n' os._exit(0) if __name__ == '__main__': import argparse ap = argparse.ArgumentParser (description = 'shrapnel back door client') ap.add_argument ('addr', help='server address', default='127.0.0.1:23', metavar="(HOST:PORT)|PATH") args = ap.parse_args() if ':' in args.addr: host, port = args.addr.split (':') port = int (port) addr = (host, port) else: addr = args.addr main (addr)