U gudbi buffer-ka CONNECT ee Beast gelinta TLS
U gudbi baytitaalka ka hadhay jawaabta CONNECT gudaha handshake TLS ee Asio oo leh buffer, ka dibna isticmaal si sax ah qadarka uu isticmaalay.
Ka dib marka Beast akhriyo madaxa jawaabta CONNECT ee proxy, hubi xaaladda jawaabta iyo buffer-ka firfircoon labadaba. Hawlgalka akhrinta wuxuu keeni karaa baytitaal ka baxsan dhammaadka madaxa oo ku hayaa buffer-ka la bixiyay. Haddii aad TLS ku bilowdo nooc akhriya kaliya socket-ka, baytitaalkaas la hayo waxay ka baxsadaan dariiqa gelinta TLS.
WebSocket stream-ka lakabka xiga uu yahay SSL stream, isticmaal nooca handshake ee buffer leh. Gudaha yield_context jira, iyadoo buffer lagu hayo nool inta hawlgallada socdaan:
http::response_parser<http::empty_body> response;
http::async_read_header(
beast::get_lowest_layer(ws), buffer, response, yield[ec]);
if (ec) return;
auto status = response.get().result_int();
if (status < 200 || status >= 300) return;
std::size_t used = ws.next_layer().async_handshake(
ssl::stream_base::client, buffer.data(), yield[ec]);
if (ec) return;
buffer.consume(used);
Soo noqoshada hore waa meelaha guuldarrada ee fadhiga; ku xidh warbixinta khaladaadka caadiga ah iyo nadiifinta halkaas. Kaliya jawaab CONNECT guulaysata ayaa dhisto tunnel-ka. Bogga diidmada waa in aanu noqon gelinta TLS.
Nooca buffer leh wuxuu ku dhammaadaa kood khalad iyo tiro baytitaal ah. Tiradaas waxay sharraxaysaa inta baytitaal ee uu ka isticmaalay buffer-yada la bixiyay. Ka dib dhammaadka, ka saar sax ahaanshaha prefix-kaas consume(used). Ha nadiifin buffer-ka ka hor bilowga hawlgalka, ha beddelin kaydintiisa inta handshake-ku sugayo, oo ha u malayn in hawlgalku isticmaalay baytitaal kasta oo la bixiyay.
TLS-ka caadiga ah ee macmiilku bilaabo isla markiiba CONNECT ka dib, buffer-ku wuu madhanayn karaa. Nooca ayaa sidoo kale maareeya xaaladaas. Ujeeddadiisu waa ilaalinta xuduudaha stream-ka; ma ka dhigto xog proxy oo kasta oo xigta TLS ansax ah. Ku hay xaqiijinta magaca host-ka loo socdo iyo habaynta SNI lakabka SSL ka hor handshake-ka, oo bilow casriyaynta WebSocket kaliya ka dib marka TLS guulaysto.