https 客户端使用bio_mem
代码:
#include <openssl/bio.h> #include <openssl/ssl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netdb.h> #include <arpa/inet.h> #include <openssl/err.h> #include <fcntl.h> #include <sys/types.h> #include <sys/socket.h> #include <errno.h> #include <netinet/in.h> #include <sys/epoll.h> typedef uint8_t u8; typedef uint16_t u16; struct tls_connection { SSL_CTX *ssl_ctx; SSL *ssl; BIO *ssl_in, *ssl_out; void *session_ticket_cb_ctx; int read_alerts, write_alerts, failed; /* SessionTicket received from OpenSSL hello_extension_cb (server) */ u8 *session_ticket; size_t session_ticket_len; unsigned int ca_cert_verify:1; unsigned int cert_probe:1; unsigned int server_cert_only:1; unsigned int invalid_hb_used:1; unsigned int success_data:1; unsigned int client_hello_generated:1; unsigned int server:1; u8 srv_cert_hash[32]; unsigned int flags; X509 *peer_cert; X509 *peer_issuer; X509 *peer_issuer_issuer; char *peer_subject; /* peer subject info for authenticated peer */ }; #define HOST "www.baidu.com" #define PORT "443" struct wpabuf { size_t size; /* total size of the allocated buffer */ size_t used; /* length of data in the buffer */ u8 *buf; /* pointer to the head of the buffer */ unsigned int flags; /* optionally followed by the allocated buffer */ }; enum { MSG_EXCESSIVE, MSG_MSGDUMP, MSG_DEBUG, MSG_INFO, MSG_WARNING, MSG_ERROR }; void wpa_printf(int level, const char *fmt, ...) { va_list ap; va_start(ap, fmt); vprintf(fmt, ap); printf("\n"); va_end(ap); } void _wpa_hexdump(int level, const char *title, const u8 *buf, size_t len, int show) { size_t i; printf("%s - hexdump(len=%lu):", title, (unsigned long) len); if (buf == NULL) { printf(" [NULL]"); } else if (show) { for (i = 0; i < len; i++) printf(" %02x", buf[i]); } else { printf(" [REMOVED]"); } printf("\n"); } void wpa_hexdump_key(int level, const char *title, const void *buf, size_t len) { _wpa_hexdump(level, title, buf, len, 1); } static const char * openssl_content_type(int content_type) { switch (content_type) { case 20: return "change cipher spec"; case 21: return "alert"; case 22: return "handshake"; case 23: return "application data"; case 24: return "heartbeat"; case 256: return "TLS header info"; /* pseudo content type */ case 257: return "inner content type"; /* pseudo content type */ default: return "?"; } } static const char * openssl_handshake_type(int content_type, const u8 *buf, size_t len) { if (content_type == 257 && buf && len == 1) return openssl_content_type(buf[0]); if (content_type != 22 || !buf || len == 0) return ""; switch (buf[0]) { case 0: return "hello request"; case 1: return "client hello"; case 2: return "server hello"; case 3: return "hello verify request"; case 4: return "new session ticket"; case 5: return "end of early data"; case 6: return "hello retry request"; case 8: return "encrypted extensions"; case 11: return "certificate"; case 12: return "server key exchange"; case 13: return "certificate request"; case 14: return "server hello done"; case 15: return "certificate verify"; case 16: return "client key exchange"; case 20: return "finished"; case 21: return "certificate url"; case 22: return "certificate status"; case 23: return "supplemental data"; case 24: return "key update"; case 254: return "message hash"; default: return "?"; } } static inline u16 WPA_GET_BE16(const u8 *a) { return (a[0] << 8) | a[1]; } static void tls_msg_cb(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg) { return ; struct tls_connection *conn = arg; const u8 *pos = buf; if (write_p == 2) { wpa_printf(MSG_DEBUG, "OpenSSL: session ver=0x%x content_type=%d", version, content_type); wpa_hexdump_key(MSG_MSGDUMP, "OpenSSL: Data", buf, len); return; } wpa_printf(MSG_DEBUG, "OpenSSL: %s ver=0x%x content_type=%d (%s/%s)", write_p ? "TX" : "RX", version, content_type, openssl_content_type(content_type), openssl_handshake_type(content_type, buf, len)); wpa_hexdump_key(MSG_MSGDUMP, "OpenSSL: Message", buf, len); if (content_type == 24 && len >= 3 && pos[0] == 1) { size_t payload_len = WPA_GET_BE16(pos + 1); if (payload_len + 3 > len) { wpa_printf(MSG_ERROR, "OpenSSL: Heartbeat attack detected"); conn->invalid_hb_used = 1; } } } static void tls_show_errors(int level, const char *func, const char *txt) { unsigned long err; wpa_printf(level, "OpenSSL: %s - %s %s", func, txt, ERR_error_string(ERR_get_error(), NULL)); while ((err = ERR_get_error())) { wpa_printf(MSG_INFO, "OpenSSL: pending error: %s", ERR_error_string(err, NULL)); } } static inline size_t wpabuf_len(const struct wpabuf *buf) { return buf->used; } static inline const void * wpabuf_head(const struct wpabuf *buf) { return buf->buf; } static inline void * wpabuf_mhead(struct wpabuf *buf) { return buf->buf; } static void wpabuf_overflow(const struct wpabuf *buf, size_t len) { wpa_printf(MSG_ERROR, "wpabuf %p (size=%lu used=%lu) overflow len=%lu", buf, (unsigned long) buf->size, (unsigned long) buf->used, (unsigned long) len); //wpa_trace_show("wpabuf overflow"); abort(); } static inline u8 * wpabuf_mhead_u8(struct wpabuf *buf) { return (u8 *) wpabuf_mhead(buf); } void * wpabuf_put(struct wpabuf *buf, size_t len) { void *tmp = wpabuf_mhead_u8(buf) + wpabuf_len(buf); buf->used += len; if (buf->used > buf->size) { wpabuf_overflow(buf, len); } return tmp; } struct wpabuf * wpabuf_alloc(size_t len) { struct wpabuf *buf = malloc(sizeof(struct wpabuf) + len); if (buf == NULL) return NULL; memset(buf,0, sizeof(struct wpabuf) + len); buf->size = len; buf->buf = (uint8_t *) (buf + 1); return buf; } void wpabuf_free(struct wpabuf *buf) { if (buf == NULL) return; free(buf); } static struct wpabuf * openssl_handshake(struct tls_connection *conn, const struct wpabuf *in_data) { int res; struct wpabuf *out_data; if (in_data && wpabuf_len(in_data) > 0 && BIO_write(conn->ssl_in, wpabuf_head(in_data), wpabuf_len(in_data)) < 0) { tls_show_errors(MSG_INFO, __func__, "Handshake failed - BIO_write"); return NULL; } if (wpabuf_len(in_data)>0){ wpa_printf(MSG_DEBUG, "SSL: BIO_write len=%d", wpabuf_len(in_data)); } if (conn->server) res = SSL_accept(conn->ssl); else res = SSL_connect(conn->ssl); if (res != 1) { int err = SSL_get_error(conn->ssl, res); if (err == SSL_ERROR_WANT_READ) wpa_printf(MSG_DEBUG, "SSL: SSL_connect - want " "more data"); else if (err == SSL_ERROR_WANT_WRITE) wpa_printf(MSG_DEBUG, "SSL: SSL_connect - want to " "write"); else { tls_show_errors(MSG_INFO, __func__, "SSL_connect"); conn->failed++; if (!conn->server && !conn->client_hello_generated) { /* The server would not understand TLS Alert * before ClientHello, so simply terminate * handshake on this type of error case caused * by a likely internal error like no ciphers * available. */ wpa_printf(MSG_DEBUG, "OpenSSL: Could not generate ClientHello"); conn->write_alerts++; return NULL; } } } res = BIO_ctrl_pending(conn->ssl_out); wpa_printf(MSG_DEBUG, "SSL: %d bytes pending from ssl_out", res); out_data = wpabuf_alloc(res); if (out_data == NULL) { wpa_printf(MSG_DEBUG, "SSL: Failed to allocate memory for " "handshake output (%d bytes)", res); if (BIO_reset(conn->ssl_out) < 0) { tls_show_errors(MSG_INFO, __func__, "BIO_reset failed"); } return NULL; } res = res == 0 ? 0 : BIO_read(conn->ssl_out, wpabuf_mhead(out_data), res); if (res < 0) { tls_show_errors(MSG_INFO, __func__, "Handshake failed - BIO_read"); if (BIO_reset(conn->ssl_out) < 0) { tls_show_errors(MSG_INFO, __func__, "BIO_reset failed"); } wpabuf_free(out_data); return NULL; } if (res== 0 ){ return NULL; } wpabuf_put(out_data, res); wpa_printf(MSG_INFO, "BIO_read then send len:%d",wpabuf_len(out_data)); return out_data; } int tls_connection_resumed(void *ssl_ctx, struct tls_connection *conn) { return conn ? SSL_session_reused(conn->ssl) : 0; } int tls_connection_established(struct tls_connection *conn) { return conn ? SSL_is_init_finished(conn->ssl) : 0; } struct wpabuf * openssl_connection_handshake(struct tls_connection *conn, const struct wpabuf *in_data, struct wpabuf **appl_data) { struct wpabuf *out_data; if (appl_data) *appl_data = NULL; out_data = openssl_handshake(conn, in_data); if (out_data == NULL) return NULL; if (conn->invalid_hb_used) { wpa_printf(MSG_INFO, "TLS: Heartbeat attack detected - do not send response"); wpabuf_free(out_data); return NULL; } if (SSL_is_init_finished(conn->ssl)) { wpa_printf(MSG_INFO, "OpenSSL: Handshake finished - resumed=%d", tls_connection_resumed(conn->ssl_ctx, conn)); /* if (appl_data && in_data) *appl_data = openssl_get_appl_data(conn, wpabuf_len(in_data)); */ } if (conn->invalid_hb_used) { wpa_printf(MSG_INFO, "TLS: Heartbeat attack detected - do not send response"); if (appl_data) { wpabuf_free(*appl_data); *appl_data = NULL; } wpabuf_free(out_data); return NULL; } return out_data; } void set_nonlock(int sockfd){ int flags; // 获取当前的套接字标志 flags = fcntl(sockfd, F_GETFL, 0); if (flags < 0) { perror("fcntl(F_GETFL)"); exit(EXIT_FAILURE); } // 设置套接字为非阻塞模式 flags |= O_NONBLOCK; if (fcntl(sockfd, F_SETFL, flags) < 0) { perror("fcntl(F_SETFL)"); exit(EXIT_FAILURE); } } void send_tls_2fd(struct wpabuf *tls_out, int sockfd){ ssize_t bytes_sent = 0; for (bytes_sent = 0;bytes_sent < tls_out->used;){ wpa_printf(MSG_INFO, "send out ---len:%d bytes_sent=%d",tls_out->used, bytes_sent ); int sby = send(sockfd, &tls_out->buf[bytes_sent], tls_out->used - bytes_sent, 0); if (sby < 0) { perror("send"); } bytes_sent += sby; wpa_printf(MSG_INFO, "send out ---len:%d bytes_sent=%d",tls_out->used, bytes_sent ); } } int main() { BIO*sbio, *out; int len; int sockfd; char tmpbuf[1024]; SSL_CTX *ctx; SSL *ssl; struct tls_connection *conn = NULL; int options; conn = malloc(sizeof(*conn)); SSLeay_add_ssl_algorithms(); OpenSSL_add_all_algorithms(); ctx = SSL_CTX_new(SSLv23_client_method()); ssl = SSL_new(ctx); conn->ssl_ctx = ctx; conn->ssl = ssl; SSL_set_app_data(conn->ssl, conn); SSL_set_msg_callback(conn->ssl, tls_msg_cb); SSL_set_msg_callback_arg(conn->ssl, conn); options = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_SINGLE_DH_USE; SSL_set_options(conn->ssl, options); conn->ssl_in = BIO_new(BIO_s_mem()); conn->ssl_out = BIO_new(BIO_s_mem()); SSL_set_bio(conn->ssl, conn->ssl_in, conn->ssl_out); conn->server = 0; struct addrinfo hints, *res; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; if (getaddrinfo(HOST, PORT, &hints, &res) != 0) { perror("getaddrinfo"); exit(EXIT_FAILURE); } sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); if (sockfd < 0) { perror("socket"); exit(EXIT_FAILURE); } set_nonlock(sockfd); if (connect(sockfd, res->ai_addr, res->ai_addrlen) < 0 && errno != EINPROGRESS) { perror("connect"); close(sockfd); exit(EXIT_FAILURE); } char buffer[4096]; len = 4096; #define TIMEOUT 2000 // #define MAX_EVENTS 10 int epoll_fd,nfds; struct epoll_event ev, events[MAX_EVENTS]; epoll_fd = epoll_create1(0); if (epoll_fd < 0) { perror("epoll_create1"); exit(EXIT_FAILURE); } ev.events = EPOLLOUT; ev.data.fd = sockfd; if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, sockfd, &ev) < 0) { perror("epoll_ctl: listen_fd"); exit(EXIT_FAILURE); } struct wpabuf *tls_out; struct wpabuf in_data; in_data.buf = NULL; in_data.size = 0; in_data.used = 0; struct wpabuf *appl_data; const char *request = "GET / HTTP/1.1\r\n" "Host: www.baidu.com\r\n" "Connection: close\r\n\r\n"; char wrbuf[4096]; int wrlen=4096, wrpos = 0; FILE *fp = fopen("baidu.html", "a"); while(1) { nfds = epoll_wait(epoll_fd, events, MAX_EVENTS, TIMEOUT); if (nfds < 0) { perror("epoll_wait"); exit(EXIT_FAILURE); } else if (nfds == 0) { printf("No events for 2 seconds, timing out...\n"); continue; } int i = 0; for (i = 0; i < nfds; ++i) { if (events[i].events & EPOLLERR|EPOLLHUP) { } if (events[i].events & EPOLLIN) { ssize_t bytes_received = recv(sockfd, buffer, len, 0); if (bytes_received > 0){ in_data.buf = buffer; in_data.used = bytes_received; }else { wpa_printf(MSG_INFO, "recv -EPOLLERR %d", bytes_received); fclose(fp); exit(EXIT_FAILURE); } if (tls_connection_established(conn)){ wpa_printf(MSG_INFO, "recv -established--len:%d ",bytes_received); BIO_write(conn->ssl_in, buffer, bytes_received); int num = SSL_read(conn->ssl, wrbuf,4096); if (num > 0){ //wpa_printf(MSG_INFO, "recv msg:%s ",wrbuf); fwrite(wrbuf, sizeof(char), num, fp); } continue; } wpa_printf(MSG_INFO, "recv ---len:%d ",bytes_received); tls_out = openssl_connection_handshake(conn, &in_data, &appl_data); if (tls_out != NULL) { send_tls_2fd(tls_out, sockfd); } if (tls_connection_established(conn)){ ev.events = EPOLLOUT ;//| EPOLLET ev.data.fd = sockfd; if (epoll_ctl(epoll_fd, EPOLL_CTL_MOD, sockfd, &ev) == -1) { perror("epoll_ctl: add"); exit(EXIT_FAILURE); } continue; } } if (events[i].events & EPOLLOUT) { if (tls_connection_established(conn)){ wpa_printf(MSG_INFO, "tls_connection_established----------"); int written = SSL_write(conn->ssl, request, strlen(request)); written = BIO_read(conn->ssl_out, wrbuf,wrlen); if(written < 0){ wpa_printf(MSG_INFO, "BIO_read: from_ssl %d ",errno); continue; } in_data.buf = wrbuf; in_data.used = written; send_tls_2fd(&in_data, sockfd); ev.events = EPOLLIN ;//| EPOLLET ev.data.fd = sockfd; if (epoll_ctl(epoll_fd, EPOLL_CTL_MOD, sockfd, &ev) == -1) { perror("epoll_ctl: add"); exit(EXIT_FAILURE); } continue; } wpa_printf(MSG_INFO, "send ---epoolout"); tls_out = openssl_connection_handshake(conn, &in_data, &appl_data); if (tls_out != NULL) { send_tls_2fd(tls_out, sockfd); } ev.events = EPOLLIN ;//| EPOLLET ev.data.fd = sockfd; if (epoll_ctl(epoll_fd, EPOLL_CTL_MOD, sockfd, &ev) == -1) { perror("epoll_ctl: add"); exit(EXIT_FAILURE); } } } } return 0; }
html文件打开:
log:
end ---epoolout OpenSSL: TX ver=0x303 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 01 01 1c OpenSSL: TX ver=0x303 content_type=22 (handshake/client hello) OpenSSL: Message - hexdump(len=284): 01 00 01 18 03 03 ce 80 c6 0d 50 0d a0 c6 ab b0 a0 d4 31 c3 c4 00 ef e4 f3 7e 10 83 b1 08 05 5d ed 83 88 b4 f8 6d 00 00 ac c0 30 c0 2c c0 28 c0 24 c0 14 c0 0a 00 a5 00 a3 00 a1 00 9f 00 6b 00 6a 00 69 00 68 00 39 00 38 00 37 00 36 00 88 00 87 00 86 00 85 c0 32 c0 2e c0 2a c0 26 c0 0f c0 05 00 9d 00 3d 00 35 00 84 c0 2f c0 2b c0 27 c0 23 c0 13 c0 09 00 a4 00 a2 00 a0 00 9e 00 67 00 40 00 3f 00 3e 00 33 00 32 00 31 00 30 00 9a 00 99 00 98 00 97 00 45 00 44 00 43 00 42 c0 31 c0 2d c0 29 c0 25 c0 0e c0 04 00 9c 00 3c 00 2f 00 96 00 41 c0 12 c0 08 00 16 00 13 00 10 00 0d c0 0d c0 03 00 0a 00 07 c0 11 c0 07 c0 0c c0 02 00 05 00 04 00 ff 01 00 00 43 00 0b 00 04 03 00 01 02 00 0a 00 0a 00 08 00 17 00 19 00 18 00 16 00 23 00 00 00 0d 00 20 00 1e 06 01 06 02 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 03 02 03 03 02 01 02 02 02 03 00 0f 00 01 01 SSL: SSL_connect - want more data SSL: 289 bytes pending from ssl_out BIO_read then send len:289 send out ---len:289 bytes_sent=0 send out ---len:289 bytes_sent=289 recv ---len:1412 SSL: BIO_write len=1412 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 03 00 3b OpenSSL: RX ver=0x303 content_type=22 (handshake/server hello) OpenSSL: Message - hexdump(len=59): 02 00 00 37 03 03 66 97 c4 fc a4 77 57 a5 f7 4e 5a 74 bc 66 b7 da de 1d 0b ab 41 2c 8a 1c 59 f9 26 9d 0a be 92 1e 00 c0 2f 00 00 0f 00 23 00 00 ff 01 00 01 00 00 0b 00 02 01 00 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 03 12 a0 SSL: SSL_connect - want more data SSL: 0 bytes pending from ssl_out recv ---len:3772 SSL: BIO_write len=3772 OpenSSL: RX ver=0x303 content_type=22 (handshake/certificate) OpenSSL: Message - hexdump(len=4768): 0b 00 12 9c 00 12 99 00 09 ec 30 82 09 e8 30 82 08 d0 a0 03 02 01 02 02 0c 55 e6 ac ae d1 f8 a4 30 f9 a9 38 c5 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 50 31 0b 30 09 06 03 55 04 06 13 02 42 45 31 19 30 17 06 03 55 04 0a 13 10 47 6c 6f 62 61 6c 53 69 67 6e 20 6e 76 2d 73 61 31 26 30 24 06 03 55 04 03 13 1d 47 6c 6f 62 61 6c 53 69 67 6e 20 52 53 41 20 4f 56 20 53 53 4c 20 43 41 20 32 30 31 38 30 1e 17 0d 32 33 30 37 30 36 30 31 35 31 30 36 5a 17 0d 32 34 30 38 30 36 30 31 35 31 30 35 5a 30 81 80 31 0b 30 09 06 03 55 04 06 13 02 43 4e 31 10 30 0e 06 03 55 04 08 13 07 62 65 69 6a 69 6e 67 31 10 30 0e 06 03 55 04 07 13 07 62 65 69 6a 69 6e 67 31 39 30 37 06 03 55 04 0a 13 30 42 65 69 6a 69 6e 67 20 42 61 69 64 75 20 4e 65 74 63 6f 6d 20 53 63 69 65 6e 63 65 20 54 65 63 68 6e 6f 6c 6f 67 79 20 43 6f 2e 2c 20 4c 74 64 31 12 30 10 06 03 55 04 03 13 09 62 61 69 64 75 2e 63 6f 6d 30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 82 01 0a 02 82 01 01 00 bb 04 bb 84 76 58 07 b4 5a 88 54 e0 6a 56 bc e5 d4 8d 3e 1e b9 28 e0 d7 01 8f 38 2b 41 b2 59 7d f0 ac 27 b4 26 24 14 38 fe 4c ea 3b 49 51 f7 e9 5b 40 f7 3f a6 c8 da 0f 02 6e 25 8b 47 91 b8 2e 9e 00 21 19 1d 18 00 fc de 04 fd 26 79 39 5d f2 90 bc 80 9d a8 7c b2 91 89 89 d8 40 2f e5 d2 a7 f3 5e 6d 48 2b c5 1f 0a b1 e0 8e 8c 76 ff bc d1 67 0a d2 49 d6 09 ee 26 03 02 f3 cc cd ea 8a d5 31 a8 2d 8f 03 fd 5e fc e4 3a c6 89 67 99 4c ce 98 6d fa 84 0d 0e 53 8b e6 63 52 c5 9b 4a a9 ab a3 22 35 99 0d ee 19 ff 9b 2d f5 a4 77 f2 ec 10 80 f4 ab 82 b9 d1 7e 36 1f 0e 9f 9b 19 a0 f5 c3 57 dd 88 bb ce e1 90 9c 3f 4b ba dd 3a a9 41 b3 dd 86 4d c2 c2 b7 e8 ff 37 13 c0 04 89 43 44 38 11 e6 a3 96 f7 09 22 21 2f 2c 4e 0e 7e e5 d8 5c bb 00 44 5b af de e4 b3 b0 f0 3c b6 38 45 49 5d 02 03 01 00 01 a3 82 06 8f 30 82 06 8b 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 05 a0 30 81 8e 06 08 2b 06 01 05 05 07 01 01 04 81 81 30 7f 30 44 06 08 2b 06 01 05 05 07 30 02 86 38 68 74 74 70 3a 2f 2f 73 65 63 75 72 65 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 63 61 63 65 72 74 2f 67 73 72 73 61 6f 76 73 73 6c 63 61 32 30 31 38 2e 63 72 74 30 37 06 08 2b 06 01 05 05 07 30 01 86 2b 68 74 74 70 3a 2f 2f 6f 63 73 70 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 67 73 72 73 61 6f 76 73 73 6c 63 61 32 30 31 38 30 56 06 03 55 1d 20 04 4f 30 4d 30 41 06 09 2b 06 01 04 01 a0 32 01 14 30 34 30 32 06 08 2b 06 01 05 05 07 02 01 16 26 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 65 70 6f 73 69 74 6f 72 79 2f 30 08 06 06 67 81 0c 01 02 02 30 09 06 03 55 1d 13 04 02 30 00 30 3f 06 03 55 1d 1f 04 38 30 36 30 34 a0 32 a0 30 86 2e 68 74 74 70 3a 2f 2f 63 72 6c 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 67 73 72 73 61 6f 76 73 73 6c 63 61 32 30 31 38 2e 63 72 6c 30 82 03 61 06 03 55 1d 11 04 82 03 58 30 82 03 54 82 09 62 61 69 64 75 2e 63 6f 6d 82 0c 62 61 69 66 75 62 61 6f 2e 63 6f 6d 82 0c 77 77 77 2e 62 61 69 64 75 2e 63 6e 82 10 77 77 77 2e 62 61 69 64 75 2e 63 6f 6d 2e 63 6e 82 0f 6d 63 74 2e 79 2e 6e 75 6f 6d 69 2e 63 6f 6d 82 0b 61 70 6f 6c 6c 6f 2e 61 75 74 6f 82 06 64 77 7a 2e 63 6e 82 0b 2a 2e 62 61 69 64 75 2e 63 6f 6d 82 0e 2a 2e 62 61 69 66 75 62 61 6f 2e 63 6f 6d 82 11 2a 2e 62 61 69 64 75 73 74 61 74 69 63 2e 63 6f 6d 82 0e 2a 2e 62 64 73 74 61 74 69 63 2e 63 6f 6d 82 0b 2a 2e 62 64 69 6d 67 2e 63 6f 6d 82 0c 2a 2e 68 61 6f 31 32 33 2e 63 6f 6d 82 0b 2a 2e 6e 75 6f 6d 69 2e 63 6f 6d 82 0d 2a 2e 63 68 75 61 6e 6b 65 2e 63 6f 6d 82 0d 2a 2e 74 72 75 73 74 67 6f 2e 63 6f 6d 82 0f 2a 2e 62 63 65 2e 62 61 69 64 75 2e 63 6f 6d 82 10 2a 2e 65 79 75 6e 2e 62 61 69 64 75 2e 63 6f 6d 82 0f 2a 2e 6d 61 70 2e 62 61 69 64 75 2e 63 6f 6d 82 0f 2a 2e 6d 62 64 2e 62 61 69 64 75 2e 63 6f 6d 82 11 2a 2e 66 61 6e 79 69 2e 62 61 69 64 75 2e 63 6f 6d 82 0e 2a 2e 62 61 69 64 75 62 63 65 2e 63 6f 6d 82 0c 2a 2e 6d 69 70 63 64 6e 2e 63 6f 6d 82 10 2a 2e 6e 65 77 73 2e 62 61 69 64 75 2e 63 6f 6d 82 0e 2a 2e 62 61 69 64 75 70 63 73 2e 63 6f 6d 82 0c 2a 2e 61 69 70 61 67 65 2e 63 6f 6d 82 0b 2a 2e 61 69 70 61 67 65 2e 63 6e 82 0d 2a 2e 62 63 65 68 6f 73 74 2e 63 6f 6d 82 10 2a 2e 73 61 66 65 2e 62 61 69 64 75 2e 63 6f 6d 82 0e 2a 2e 69 6d 2e 62 61 69 64 75 2e 63 6f 6d 82 12 2a 2e 62 61 69 64 75 63 6f 6e 74 65 6e 74 2e 63 6f 6d 82 0b 2a 2e 64 6c 6e 65 6c 2e 63 6f 6d 82 0b 2a 2e 64 6c 6e 65 6c 2e 6f 72 67 82 12 2a 2e 64 75 65 72 6f 73 2e 62 61 69 64 75 2e 63 6f 6d 82 0e 2a 2e 73 75 2e 62 61 69 64 75 2e 63 6f 6d 82 08 2a 2e 39 31 2e 63 6f 6d 82 12 2a 2e 68 61 6f 31 32 33 2e 62 61 69 64 75 2e 63 6f 6d 82 0d 2a 2e 61 70 6f 6c 6c 6f 2e 61 75 74 6f 82 12 2a 2e 78 75 65 73 68 75 2e 62 61 69 64 75 2e 63 6f 6d 82 11 2a 2e 62 6a 2e 62 61 69 64 75 62 63 65 2e 63 6f 6d 82 11 2a 2e 67 7a 2e 62 61 69 64 75 62 63 65 2e 63 6f 6d 82 0e 2a 2e 73 6d 61 72 74 61 70 70 73 2e 63 6e 82 0d 2a 2e 62 64 74 6a 72 63 76 2e 63 6f 6d 82 0c 2a 2e 68 61 6f 32 32 32 2e 63 6f 6d 82 0c 2a 2e 68 61 6f 6b 61 6e 2e 63 6f 6d 82 0f 2a 2e 70 61 65 2e 62 61 69 64 75 2e 63 6f 6d 82 11 2a 2e 76 64 2e 62 64 73 74 61 74 69 63 2e 63 6f 6d 82 11 2a 2e 63 6c 6f 75 64 2e 62 61 69 64 75 2e 63 6f 6d 82 12 63 6c 69 63 6b 2e 68 6d 2e 62 61 69 64 75 2e 63 6f 6d 82 10 6c 6f 67 2e 68 6d 2e 62 61 69 64 75 2e 63 6f 6d 82 10 63 6d 2e 70 6f 73 2e 62 61 69 64 75 2e 63 6f 6d 82 10 77 6e 2e 70 6f 73 2e 62 61 69 64 75 2e 63 6f 6d 82 14 75 70 64 61 74 65 2e 70 61 6e 2e 62 61 69 64 75 2e 63 6f 6d 30 1d 06 03 55 1d 25 04 16 30 14 06 08 2b 06 01 05 05 07 03 01 06 08 2b 06 01 05 05 07 03 02 30 1f 06 03 55 1d 23 04 18 30 16 80 14 f8 ef 7f f2 cd 78 67 a8 de 6f 8f 24 8d 88 f1 87 03 02 b3 eb 30 1d 06 03 55 1d 0e 04 16 04 14 ed 73 ab f9 20 be 7a 19 9f 59 1f b2 9f f2 3f 2f 3f 91 84 12 30 82 01 7e 06 0a 2b 06 01 04 01 d6 79 02 04 02 04 82 01 6e 04 82 01 6a 01 68 00 76 00 48 b0 e3 6b da a6 47 34 0f e5 6a 02 fa 9d 30 eb 1c 52 01 cb 56 dd 2c 81 d9 bb bf ab 39 d8 84 73 00 00 01 89 28 e5 70 01 00 00 04 03 00 47 30 45 02 21 00 ed 1a f4 5f 4a cc 2b ff 57 df e5 b8 cb f9 24 5c b7 7e 14 7b a3 da 46 c0 d8 bc 68 69 89 87 a3 83 02 20 5f f6 82 83 d3 a0 e4 46 5b 54 ba 3e 66 ca d4 f6 cd c8 26 eb 18 cd 96 23 01 22 6c cc 4c f0 67 5a 00 77 00 ee cd d0 64 d5 db 1a ce c5 5c b7 9d b4 cd 13 a2 32 87 46 7c bc ec de c3 51 48 59 46 71 1f b5 9b 00 00 01 89 28 e5 70 1d 00 00 04 03 00 48 30 46 02 21 00 bd 1d c3 18 2a 7e 78 1e 2b d2 6e 11 f4 c2 e5 ad c1 36 87 62 db 88 bc 90 fc 22 13 c5 fb 32 7d fe 02 21 00 80 8c 9e 88 86 a1 c7 3a 14 62 0c 21 89 8c 77 ba 7b 24 94 97 31 90 a9 15 74 a2 6c 2c 33 83 52 2d 00 75 00 da b6 bf 6b 3f b5 b6 22 9f 9b c2 bb 5c 6b e8 70 91 71 6c bb 51 84 85 34 bd a4 3d 30 48 d7 fb ab 00 00 01 89 28 e5 6d 57 00 00 04 03 00 46 30 44 02 20 54 6d 6a 69 ea e0 a3 58 f9 17 d5 ad e4 77 36 a3 7b 33 8d c3 95 30 76 7e e5 fb 1c a9 8c 4e 9b 77 02 20 1b 61 8a f2 91 fe e5 4a 99 4d 32 b1 37 2a 82 46 88 89 0d 7e eb 01 7c f1 3b 6d 9a 21 19 24 05 c0 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82 01 01 00 19 5a 67 50 43 b1 ac 7a 93 a8 68 18 72 8b 40 7e a6 75 de ac 21 fc c9 41 16 20 4b f3 8c 0b b9 47 45 ae f8 5d 79 f6 43 35 26 01 98 f0 b9 86 3e 29 01 f1 df b0 72 b5 ae 78 d2 df 61 b6 78 67 8a c9 77 9a de e0 e4 41 2f 9c 1e e5 3b 7c 97 3f 42 2f ad e3 49 7f 9d 2b 02 88 90 69 25 03 01 14 b9 b5 cb 0f 59 3d 2d 97 3d 02 d5 51 90 69 0c 81 10 22 da c6 51 ef 48 0c d2 4f de 61 f2 6a 87 15 a5 6d 71 8e 37 02 a2 85 0f 1e 19 75 a3 80 2e 6a 1a a2 02 8c 2f ec bd 3d 81 03 3f 8a c0 a0 e6 b4 0e 08 57 cb 00 1c 8a b7 1b 8f 38 71 9a 8d c0 71 0c 3f bc d4 be 56 9d f7 18 c1 aa be e4 df 1a 86 e2 62 6f 23 86 30 54 78 2d 47 1f b4 ad 05 29 73 24 98 14 a0 19 c0 02 fd 90 90 4e 62 5c e8 4d 31 89 c3 e8 8b 9e 73 59 3b 98 91 ca 47 a5 05 5b c5 1e 8f 85 39 0e ce b5 26 0a 80 4e 9f 08 4a 11 49 13 63 00 04 52 30 82 04 4e 30 82 03 36 a0 03 02 01 02 02 0d 01 ee 5f 22 1d fc 62 3b d4 33 3a 85 57 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 4c 31 20 30 1e 06 03 55 04 0b 13 17 47 6c 6f 62 61 6c 53 69 67 6e 20 52 6f 6f 74 20 43 41 20 2d 20 52 33 31 13 30 11 06 03 55 04 0a 13 0a 47 6c 6f 62 61 6c 53 69 67 6e 31 13 30 11 06 03 55 04 03 13 0a 47 6c 6f 62 61 6c 53 69 67 6e 30 1e 17 0d 31 38 31 31 32 31 30 30 30 30 30 30 5a 17 0d 32 38 31 31 32 31 30 30 30 30 30 30 5a 30 50 31 0b 30 09 06 03 55 04 06 13 02 42 45 31 19 30 17 06 03 55 04 0a 13 10 47 6c 6f 62 61 6c 53 69 67 6e 20 6e 76 2d 73 61 31 26 30 24 06 03 55 04 03 13 1d 47 6c 6f 62 61 6c 53 69 67 6e 20 52 53 41 20 4f 56 20 53 53 4c 20 43 41 20 32 30 31 38 30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 82 01 0a 02 82 01 01 00 a7 5a c9 d5 0c 18 21 00 23 d5 97 0f eb ae dd 5c 68 6b 6b 8f 50 60 13 7a 81 cb 97 ee 8e 8a 61 94 4b 26 79 f6 04 a7 2a fb a4 da 56 bb ee a0 a4 f0 7b 8a 7f 55 1f 47 93 61 0d 6e 71 51 3a 25 24 08 2f 8c e1 f7 89 d6 92 cf af b3 a7 3f 30 ed b5 df 21 ae fe f5 44 17 fd d8 63 d9 2f d3 81 5a 6b 5f d3 47 b0 ac f2 ab 3b 24 79 4f 1f c7 2e ea b9 15 3a 7c 18 4c 69 b3 b5 20 59 09 5e 29 c3 63 e6 2e 46 5b aa 94 90 49 0e b9 f0 f5 4a a1 09 2f 7c 34 4d d0 bc 00 c5 06 55 79 06 ce a2 d0 10 f1 48 43 e8 b9 5a b5 95 55 bd 31 d2 1b 3d 86 be a1 ec 0d 12 db 2c 99 24 ad 47 c2 6f 03 e6 7a 70 b5 70 cc cd 27 2c a5 8c 8e c2 18 3c 92 c9 2e 73 6f 06 10 56 93 40 aa a3 c5 52 fb e5 c5 05 d6 69 68 5c 06 b9 ee 51 89 e1 8a 0e 41 4d 9b 92 90 0a 89 e9 16 6b ef ef 75 be 7a 46 b8 e3 47 8a 1d 1c 2e a7 4f 02 03 01 00 01 a3 82 01 29 30 82 01 25 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 01 86 30 12 06 03 55 1d 13 01 01 ff 04 08 30 06 01 01 ff 02 01 00 30 1d 06 03 55 1d 0e 04 16 04 14 f8 ef 7f f2 cd 78 67 a8 de 6f 8f 24 8d 88 f1 87 03 02 b3 eb 30 1f 06 03 55 1d 23 04 18 30 16 80 14 8f f0 4b 7f a8 2e 45 24 ae 4d 50 fa 63 9a 8b de e2 dd 1b bc 30 3e 06 08 2b 06 01 05 05 07 01 01 04 32 30 30 30 2e 06 08 2b 06 01 05 05 07 30 01 86 22 68 74 74 70 3a 2f 2f 6f 63 73 70 32 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 6f 6f 74 72 33 30 36 06 03 55 1d 1f 04 2f 30 2d 30 2b a0 29 a0 27 86 25 68 74 74 70 3a 2f 2f 63 72 6c 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 6f 6f 74 2d 72 33 2e 63 72 6c 30 47 06 03 55 1d 20 04 40 30 3e 30 3c 06 04 55 1d 20 00 30 34 30 32 06 08 2b 06 01 05 05 07 02 01 16 26 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 65 70 6f 73 69 74 6f 72 79 2f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82 01 01 00 99 90 c8 2d 5f 42 8a d4 0b 66 db 98 03 73 11 d4 88 86 52 28 53 8a fb ad df fd 73 8e 3a 67 04 db c3 53 14 70 14 09 7c c3 e0 f8 d7 1c 98 1a a2 c4 3e db e9 00 e3 ca 70 b2 f1 22 30 21 56 db d3 ad 79 5e 81 58 0b 6d 14 80 35 f5 6f 5d 1d eb 9a 47 05 ff 59 8d 00 b1 40 da 90 98 96 1a ba 6c 6d 7f 8c f5 b3 80 df 8c 64 73 36 96 79 79 69 74 ea bf f8 9e 01 8f a0 95 69 8d e9 84 ba e9 e5 d4 88 38 db 78 3b 98 d0 36 7b 29 b0 d2 52 18 90 de 52 43 00 ae 6a 27 c8 14 9e 86 95 ac e1 80 31 30 7e 9a 25 bb 8b ac 04 23 a6 99 00 e8 f1 d2 26 ec 0f 7e 3b 8a 2b 92 38 13 1d 8f 86 cd 86 52 47 e6 34 7c 5b a4 02 3e 8a 61 7c 22 76 53 5a 94 53 33 86 b8 92 a8 72 af a1 f9 52 87 1f 31 a5 fc b0 81 57 2f cd f4 ce dc f6 24 cf a7 e2 34 90 68 9d fe aa f1 a9 9a 12 cc 9b c0 c6 c3 a8 a5 b0 21 7e de 48 f6 00 04 52 30 82 04 4e 30 82 03 36 a0 03 02 01 02 02 0d 01 ee 5f 16 9d ff 97 35 2b 64 65 d6 6a 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 57 31 0b 30 09 06 03 55 04 06 13 02 42 45 31 19 30 17 06 03 55 04 0a 13 10 47 6c 6f 62 61 6c 53 69 67 6e 20 6e 76 2d 73 61 31 10 30 0e 06 03 55 04 0b 13 07 52 6f 6f 74 20 43 41 31 1b 30 19 06 03 55 04 03 13 12 47 6c 6f 62 61 6c 53 69 67 6e 20 52 6f 6f 74 20 43 41 30 1e 17 0d 31 38 30 39 31 39 30 30 30 30 30 30 5a 17 0d 32 38 30 31 32 38 31 32 30 30 30 30 5a 30 4c 31 20 30 1e 06 03 55 04 0b 13 17 47 6c 6f 62 61 6c 53 69 67 6e 20 52 6f 6f 74 20 43 41 20 2d 20 52 33 31 13 30 11 06 03 55 04 0a 13 0a 47 6c 6f 62 61 6c 53 69 67 6e 31 13 30 11 06 03 55 04 03 13 0a 47 6c 6f 62 61 6c 53 69 67 6e 30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 82 01 0a 02 82 01 01 00 cc 25 76 90 79 06 78 22 16 f5 c0 83 b6 84 ca 28 9e fd 05 76 11 c5 ad 88 72 fc 46 02 43 c7 b2 8a 9d 04 5f 24 cb 2e 4b e1 60 82 46 e1 52 ab 0c 81 47 70 6c dd 64 d1 eb f5 2c a3 0f 82 3d 0c 2b ae 97 d7 b6 14 86 10 79 bb 3b 13 80 77 8c 08 e1 49 d2 6a 62 2f 1f 5e fa 96 68 df 89 27 95 38 9f 06 d7 3e c9 cb 26 59 0d 73 de b0 c8 e9 26 0e 83 15 c6 ef 5b 8b d2 04 60 ca 49 a6 28 f6 69 3b f6 cb c8 28 91 e5 9d 8a 61 57 37 ac 74 14 dc 74 e0 3a ee 72 2f 2e 9c fb d0 bb bf f5 3d 00 e1 06 33 e8 82 2b ae 53 a6 3a 16 73 8c dd 41 0e 20 3a c0 b4 a7 a1 e9 b2 4f 90 2e 32 60 e9 57 cb b9 04 92 68 68 e5 38 26 60 75 b2 9f 77 ff 91 14 ef ae 20 49 fc ad 40 15 48 d1 02 31 61 19 5e b8 97 ef ad 77 b7 64 9a 7a bf 5f c1 13 ef 9b 62 fb 0d 6c e0 54 69 16 a9 03 da 6e e9 83 93 71 76 c6 69 85 82 17 02 03 01 00 01 a3 82 01 22 30 82 01 1e 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 01 06 30 0f 06 03 55 1d 13 01 01 ff 04 05 30 03 01 01 ff 30 1d 06 03 55 1d 0e 04 16 04 14 8f f0 4b 7f a8 2e 45 24 ae 4d 50 fa 63 9a 8b de e2 dd 1b bc 30 1f 06 03 55 1d 23 04 18 30 16 80 14 60 7b 66 1a 45 0d 97 ca 89 50 2f 7d 04 cd 34 a8 ff fc fd 4b 30 3d 06 08 2b 06 01 05 05 07 01 01 04 31 30 2f 30 2d 06 08 2b 06 01 05 05 07 30 01 86 21 68 74 74 70 3a 2f 2f 6f 63 73 70 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 6f 6f 74 72 31 30 33 06 03 55 1d 1f 04 2c 30 2a 30 28 a0 26 a0 24 86 22 68 74 74 70 3a 2f 2f 63 72 6c 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 6f 6f 74 2e 63 72 6c 30 47 06 03 55 1d 20 04 40 30 3e 30 3c 06 04 55 1d 20 00 30 34 30 32 06 08 2b 06 01 05 05 07 02 01 16 26 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6c 6f 62 61 6c 73 69 67 6e 2e 63 6f 6d 2f 72 65 70 6f 73 69 74 6f 72 79 2f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82 01 01 00 23 70 e9 cf e2 be f5 59 ae 94 42 6f c4 43 33 aa cd 3f 3a b9 64 17 f2 62 06 4b 48 f1 40 88 06 17 a1 fe ab d1 5f 3c c6 33 f2 f3 8e dd 1f 1d 3e cc 1a 60 99 82 0b ac c7 fc 7e 9a 87 2a a5 7d 0f a6 57 ee ac 3b 6a 85 d6 de bd 40 63 f8 ad a6 c8 88 b0 12 fc f6 41 df 0f 09 97 1e 38 ea 53 9f be 05 f4 3e ea d3 9f 50 12 76 be 09 8b c2 0b 48 7d 1e 2e 51 f6 8d 53 d3 ab 1f 40 1b 8a 8e ed 7d fb 4f 79 56 70 5f 0c d3 8e 1b b3 a7 70 0d 37 2b 97 95 ab da e0 12 6b 1c 40 ce c5 c7 7e ed c2 62 58 ec 77 ed 73 22 c2 8a f5 86 43 88 ad ea 13 6e fd d8 fe 42 2f b9 7d 5e ad 18 ef 94 90 ca 3d 27 ab 26 94 99 75 c7 cb d3 7b f7 ca 4c d3 af 51 21 92 5b 84 7d 2b 9f 15 3f 74 cb 51 e8 9e 83 0e 16 6f 1b e7 46 ce 23 bd f9 e4 a2 8b d2 39 6b aa 79 1c 91 2c e2 61 24 2d 8e 2a 48 70 90 c4 1e c5 e8 e0 70 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 03 01 4d OpenSSL: RX ver=0x303 content_type=22 (handshake/server key exchange) OpenSSL: Message - hexdump(len=333): 0c 00 01 49 03 00 17 41 04 3a b4 50 ca 1f b3 2a 33 2d 7b c4 72 c0 3e 82 af a6 1a 21 8d 03 b2 d1 8e dd 85 62 5d cb 77 0a a1 0c 86 dc 03 01 cf bf 33 dd 57 3a 1f d5 f1 7d 41 39 be ca 78 33 ec 4e 48 2f cb 3f 58 95 63 56 dd 06 01 01 00 ab d9 50 57 17 6d 45 ec d6 47 17 c0 d4 ef 4d 81 80 a3 23 dc 5d 48 88 2f 30 76 b6 df 2f c1 eb d8 bb bb da 8a f0 e1 7e c1 dd 78 4f b3 9e 5e e7 75 97 58 77 67 74 56 34 23 ee fd 5b eb e7 1d 7d ee 41 18 ab 1a e1 ac ab 7c 8b 8a af 86 84 39 ba 61 d6 a1 4c 39 35 dc e8 49 a9 ff 9d e2 31 df 2b ff 83 61 43 52 94 45 e3 76 27 0f c7 2d 7d d5 90 b1 8f be 79 b0 86 02 5e e4 d9 8c ce 02 96 08 de 2f 9d 4e a7 02 12 cd fb c9 0a 29 35 a4 16 6e 14 79 e9 4b 24 04 62 8d a5 99 8d 3c 2d b5 6a 0d cf dd 20 9f c0 6a ca 31 52 76 ec e0 fa e0 2b 4b bb 66 8b d8 51 74 e7 0d 4c d8 60 1c ba b2 ca b5 6d 32 39 68 9b 5e c4 b0 46 dd 26 97 2d 20 42 2b f2 ca 87 74 70 a6 61 12 39 33 b5 74 63 ec d1 f5 07 2d d2 8b 73 f7 69 4b d1 28 70 e9 6f f2 01 9e 60 a9 3f 8a c6 03 d1 21 4f 6c 92 c8 65 e5 53 53 02 48 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 03 00 04 OpenSSL: RX ver=0x303 content_type=22 (handshake/server hello done) OpenSSL: Message - hexdump(len=4): 0e 00 00 00 OpenSSL: TX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 03 00 46 OpenSSL: TX ver=0x303 content_type=22 (handshake/client key exchange) OpenSSL: Message - hexdump(len=70): 10 00 00 42 41 04 2a 06 38 ff e3 5c cf 97 46 12 4f 06 8b 9e e0 43 58 7a 44 17 9d 1e f8 89 03 e5 cd ff 3f ec 74 9f 23 d7 32 14 d1 68 63 71 c6 e1 f8 db 2f ac aa 2d 78 31 4c ce 0c 69 90 67 2f 55 57 24 ce dd 1e 78 OpenSSL: TX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 14 03 03 00 01 OpenSSL: TX ver=0x303 content_type=20 (change cipher spec/) OpenSSL: Message - hexdump(len=1): 01 OpenSSL: TX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 03 00 28 OpenSSL: TX ver=0x303 content_type=22 (handshake/finished) OpenSSL: Message - hexdump(len=16): 14 00 00 0c 84 fe 5c 5f b1 9d d5 d5 f8 6a d7 92 SSL: SSL_connect - want more data SSL: 126 bytes pending from ssl_out BIO_read then send len:126 send out ---len:126 bytes_sent=0 send out ---len:126 bytes_sent=126 recv ---len:226 SSL: BIO_write len=226 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 03 00 aa OpenSSL: RX ver=0x303 content_type=22 (handshake/new session ticket) OpenSSL: Message - hexdump(len=170): 04 00 00 a6 00 00 00 00 00 a0 c9 3a 33 63 cf db ee 56 6f 51 91 ab 1d d4 03 67 6c 95 fb 17 12 df df 68 c7 42 4f b0 54 31 10 a8 88 5b 45 14 6e 48 91 d5 1d 7b 2a 77 c9 79 37 00 8b 8c 64 50 f3 d8 6b a6 38 67 57 94 e6 22 a4 35 ef 0f b8 f4 ca 5d 0a 7b 96 a5 e1 cd ab 20 73 ec c3 d6 c6 d5 52 0a 99 f8 c6 fa 1e 3c 16 96 b1 70 c9 2e ac 5c 84 97 8f 9a 2b 0c a1 24 b5 91 56 97 99 eb b7 a8 59 c4 09 e3 c2 c0 d3 38 5f 42 c8 80 1d 05 64 1c 2b ad fb 1b e8 df 95 b4 e4 d7 68 ba 25 49 28 0b 2f 7b df 66 9d c3 fb 55 42 97 f3 9e OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 14 03 03 00 01 OpenSSL: RX ver=0x303 content_type=20 (change cipher spec/) OpenSSL: Message - hexdump(len=1): 01 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 16 03 03 00 28 OpenSSL: RX ver=0x303 content_type=22 (handshake/finished) OpenSSL: Message - hexdump(len=16): 14 00 00 0c 95 18 36 be c9 8a 23 a6 77 53 39 fb SSL: 0 bytes pending from ssl_out tls_connection_established---------- OpenSSL: TX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 17 03 03 00 52 send out ---len:87 bytes_sent=0 send out ---len:87 bytes_sent=87 recv -established--len:1208 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 17 03 03 04 b3 recv -established--len:4096 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 17 03 03 09 4e recv -established--len:4096 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 17 03 03 02 42 recv -established--len:1269 OpenSSL: RX ver=0x0 content_type=256 (TLS header info/) OpenSSL: Message - hexdump(len=5): 17 03 03 12 84 recv -EPOLLERR 0
http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!!
但行好事 莫问前程
--身高体重180的胖子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南