Beispiel #1
0
            class tlslite_wrapper(object):
                def __init__(self, s):
                    self.s = TLSConnection(s)
                    self.s.handshakeClientCert()

                    self.writing = None
                    self.reading = None

                def write(self, data):
                    if self.writing is None:
                        self.writing = (len(data), self.s.writeAsync(data))

                    try:
                        self.writing[1].next()
                        return 0
                    except StopIteration:
                        pass

                    sent = self.writing[0]
                    self.writing = None
                    return sent

                def read(self, amount):
                    d = None
                    while d == None:
                        try:
                            d = self.reading.next()
                        except (StopIteration, AttributeError):
                            self.reading = self.s.readAsync(amount)

                    try:
                        len(d)
                    except:
                        raise socket.error("No data ready to be read.")
                    return d
			class tlslite_wrapper(object):
				def __init__(self, s):
					self.s = TLSConnection(s)
					self.s.handshakeClientCert()

					self.writing = None
					self.reading = None

				def write(self, data):
					if self.writing is None:
						self.writing = (len(data), self.s.writeAsync(data))

					try:
						self.writing[1].next()
						return 0
					except StopIteration:
						pass

					sent = self.writing[0]
					self.writing = None
					return sent

				def read(self, amount):
					d = None
					while d == None:
						try:
							d = self.reading.next()
						except (StopIteration, AttributeError):
							self.reading = self.s.readAsync(amount)

					try:
						len(d)
					except:
						raise socket.error("No data ready to be read.")
					return d
    return h_dict

if __name__ == '__main__':
    host, port = parse_args()
    out_dir = os.path.join(os.getcwd(), host)
    if not os.path.exists(out_dir):
        try:
            os.mkdir(out_dir)
        except OSError:
            out_dir = mkdtemp()
    print('Using %s as output directory' % (out_dir))
    print('Trying to connect to %s:%i' % (host, port))
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((host, port))
    connection = TLSConnection(sock)
    connection.handshakeClientCert(nextProtos=["spdy/%i" % SPDY_VERSION])
    print ('TLS NPN Selected: %s' % connection.next_proto)
    spdy_ctx = Context(CLIENT, version=SPDY_VERSION)
    connection.write(get_site_resource(spdy_ctx, host))
    headers = {spdy_ctx._last_stream_id: {'path': 'index'}}
    res_files = {spdy_ctx._last_stream_id: (os.path.join(out_dir, 'index'), None)}
    resources = None
    goaway = False
    while not goaway:
        answer = connection.read() # Blocking
        spdy_ctx.incoming(answer)
        frame = get_frame(spdy_ctx)
        while frame:
            sid = getattr(frame, 'stream_id', None)
            if hasattr(frame, 'headers'):
                print ('<<', frame, 'Headers:', frame.headers) # DEBUG

if __name__ == '__main__':
    host, port = parse_args()
    out_dir = os.path.join(os.getcwd(), host)
    if not os.path.exists(out_dir):
        try:
            os.mkdir(out_dir)
        except OSError:
            out_dir = mkdtemp()
    print('Using %s as output directory' % (out_dir))
    print('Trying to connect to %s:%i' % (host, port))
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((host, port))
    connection = TLSConnection(sock)
    connection.handshakeClientCert(nextProtos=["spdy/%i" % SPDY_VERSION])
    print('TLS NPN Selected: %s' % connection.next_proto)
    spdy_ctx = Context(CLIENT, version=SPDY_VERSION)
    connection.write(get_site_resource(spdy_ctx, host))
    headers = {spdy_ctx._last_stream_id: {'path': 'index'}}
    res_files = {
        spdy_ctx._last_stream_id: (os.path.join(out_dir, 'index'), None)
    }
    resources = None
    goaway = False
    while not goaway:
        answer = connection.read()  # Blocking
        spdy_ctx.incoming(answer)
        frame = get_frame(spdy_ctx)
        while frame:
            sid = getattr(frame, 'stream_id', None)
Beispiel #5
0
def get_frame(spdy_ctx):
    try:
        return spdy_ctx.get_frame()
    except spdy.SpdyProtocolError as e:
        print ('error parsing frame: %s' % str(e))

if __name__ == '__main__':
    host, port = parse_args()

    print('Trying to connect to %s:%i' % (host, port))

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((host, port))
    connection = TLSConnection(sock)
    connection.handshakeClientCert(nextProtos=["spdy/2"])

    spdy_ctx = spdy.Context(spdy.CLIENT)

    ping_test(spdy_ctx)
    get_page(spdy_ctx, host)

    out = spdy_ctx.outgoing()
#    print str2hexa(str(out))
    connection.write(out)
    file_out = open('/tmp/spdyout.txt', 'wb')
    goaway = False
    while not goaway:
        answer = connection.read() # Blocking
#        print '<<\n', str2hexa(answer)
        spdy_ctx.incoming(answer)