Een ekstra nuwe reël kan TLS ná CONNECT breek
Ondersoek HTTP-opskrifraamwerk wanneer 'n handgeskrewe proxyverbinder 'n tonnel oopmaak en dadelik 'n TLS-dekoderingsfout gee.
Wanneer CONNECT 200 terugstuur en TLS dadelik nie kan dekodeer nie, ondersoek die grensgrepe in die verbinder voordat jy sertifikate of syfers verander.
'n Gegenereerde magtigingswaarde kan reeds op 'n nuwe reël eindig. Nog 'n reël-einde kan die HTTP-opskrifte vroeg afsluit en 'n bedoelde Host-veld of ander gewone teks agter die versoek laat.
'n Minimale HTTP/1.1 CONNECT-versoek gebruik CRLF tussen reëls en 'n leë reël aan die einde:
b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"Plaas enige magtigingsveld voor daardie finale leë reël, sonder 'n ingebedde reëlbreuk. In Python verteenwoordig "\n" 'n nuwe reël; 'n rou string met 'n backslash en die letter n doen dit nie. Kyk watter grepe 'n enkoderingshulp produseer voordat jy dit probeer stroop—ouer hulpe kon reëlbreuke byvoeg.
Sodra CONNECT slaag, behoort daardie oorblywende grepe aan die tonnelprotokol. Verdwaalde gewone teks kan 'n eweknie bereik wat TLS verwag. Die suksesstatus kan nie grepe herstel wat reeds ná 'n misvormde versoek in die ry staan nie.
Ondersoek ook die ontvangsgrens. Lees die volledige proxy-antwoord voordat jy die soket aan TLS oorhandig, hanteer gedeeltelike lees en bewaar alles wat verder as die opskrifte gelees word. Een soketlees hoef nie een volledige boodskap te bevat nie.
As jy hierdie ontleder besit, vergelyk 'n geredigeerde grepevoorstelling met die draadgrammatika; hou lengtes en reëlgreuse sigbaar terwyl jy die wagwoord verberg. Vir 'n toepassing wat net 'n proxyverbinding nodig het, vermy 'n onderhoude verbinder die noodsaak om hierdie raamwerkcode te besit.