Kai CONNECT grąžina 200, o TLS iš karto nepavyksta iššifruoti, patikrinkite jungties ribinius baitus prieš keisdami sertifikatus ar šifrus.

Sugeneruota autorizacijos reikšmė jau gali baigtis nauja eilute. Pridėjus dar vieną eilutės pabaigą, HTTP antraštės gali baigtis per anksti, paliekant numatytą Host lauką ar kitą atvirą tekstą už užklausos.

Minimali HTTP/1.1 CONNECT užklausa naudoja CRLF tarp eilučių ir tuščią eilutę pabaigoje:

b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"

Įdėkite bet kurį autorizacijos lauką prieš tą paskutinę tuščią eilutę, be įterpto eilutės lūžio. Python kalboje "\n" žymi naują eilutę; neapdorota eilutė su kairiniu pasviruoju brūkšniu ir raide n – ne. Patikrinkite, kokius baitus sukuria kodavimo pagalbinė priemonė, prieš bandydami juos pašalinti—senesnės priemonės galėjo pridėti eilučių lūžius.

Kai CONNECT pavyksta, tie likę baitai priklauso tunelio protokolui. Pasiklydęs atviras tekstas gali pasiekti partnerį, kuris tikisi TLS. Sėkmingas būsena negali pataisyti baitų, jau įrašytų į eilę po netaisyklingos užklausos.

Patikrinkite ir priėmimo ribą. Perskaitykite visą proxy atsakymą prieš perduodami lizdą TLS, tvarkykite dalinius skaitymus ir išsaugokite viską, kas perskaityta už antraščių. Vienas lizdo skaitymas neturi turėti vieno viso pranešimo.

Jei šis analizatorius jūsų, palyginkite redaguotą baitų atvaizdą su laido gramatika; laikykite ilgius ir eilučių ribas matomus, slėpdami slaptažodį. Programai, kuriai reikia tik proxy ryšio, prižiūrima jungtis išvengia poreikio turėti šį rėminimo kodą.

Susiję straipsniai