Hallo^^
hab malwieder ein Problem mit einer TCP Funktion.
Soweit wie unten steht hab ichs allein hinbekommen bzw mit der Hilfe funktion.
Wenn ihr das script austestet und im IE als proxy 127.0.0.1 port 8080 eintragt werdet ihr sehen,
dass wenn ihr google anfragt eine Meldung mit dem Paket an google erscheint. Das script dreht nun Proxy-Connection : Keep-Alive in
Connection: Close um und findet die IP von google als Zieladresse raus. Es verbindet sich mit google reicht die Anfrage weiter und bekommt die Antwort.
(Bei mir GZip komprimiert). Ich scheitere nun aber daran diese antwort wieder an den IE weiter zu reichen.
Ist bestimmt nichtmehr viel aufwand aber ich verstehs einfach nicht und mit der Hilfe komm ich auch nicht klar.
Vielen Dank
Spoiler anzeigen
$serverip = "127.0.0.1"
$serverport = "8080"
TCPStartup()
$mslisten = TCPListen($serverip,$serverport,3)
Do
$cosl = TCPAccept($mslisten)
Until $cosl>=0
While 1
$recv = TCPRecv($cosl, 2048)
If @error Then ExitLoop
$recv = BinaryToString($recv, 4)
If $recv <> "" Then
MsgBox(0,"",$recv)
$packet = StringSplit($recv,@CRLF,1)
$dnt = 0;Do Not Track
$PKA = 0;Proxy Keep Alive
$recvip = "";IP of where the Request have to go to
For $i=1 To $packet[0]
Select
Case StringInStr($packet[$i],"DNT") Or StringInStr($packet[$i],"X-Do-Not-Track")
$dnt = 1
Case StringInStr($packet[$i],"Proxy-Connection: Keep-Alive")
$packet[$i] = "Connection: Close"
$PKA = 1
Case StringInStr($packet[$i],"Host: ")
$recvip = StringSplit($packet[$i],"Host: ",1)
$recvip = TCPNameToIP($recvip[2])
EndSelect
Next
$newpacket = ""
For $i=1 To $packet[0]
If $packet[$i]<>"" And $i>=2 Then
$newpacket = $newpacket&@CRLF&$packet[$i]
ElseIf $packet[$i]<>"" And $i=1 Then
$newpacket = $packet[$i]
EndIf
Next
$newpacket = $newpacket&@CRLF&@CRLF
FileWrite("newpacket.txt",$newpacket)
MsgBox(0,"",""""&$recvip&"""")
$socket = TCPConnect($recvip,"80")
MsgBox(0,"",$newpacket)
TCPSend($socket,$newpacket)
$gzippacketfromgoogle = ""
While 1
$recv = TCPRecv($socket, 2048)
If @error Then ExitLoop
$recv = BinaryToString($recv, 4)
If $recv <> "" Then
$gzippacketfromgoogle = $gzippacketfromgoogle & $recv
MsgBox(0,"",$recv)
EndIf
WEnd
TCPSend($cosl,$gzippacketfromgoogle)
ConsoleWrite("data send to IE.");FALSCH wurde wieder zu 127.0.0.1 geschickt. Muss erst CLientname zu IP auflösen??
MsgBox(0,"",$gzippacketfromgoogle)
EndIf
WEnd
Func SocketToIP($SHOCKET)
Local $sockaddr, $aRet
$sockaddr = DllStructCreate("short;ushort;uint;char[8]")
$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
Return $aRet
EndFunc ;==>SocketToIP
€geändert um folgefehler zu vermeiden