TCP "NUL" Senden

  • Und so?

    [autoit]

    Func _InsertNULL($_sText)
    Local $_sRet
    Local $_aSS = StringSplit($_sText, "")
    For $i = 1 To $_aSS[0]
    $_sRet &= $_aSS[$i] & Chr(0)
    Next
    Return StringToBinary($_sRet)
    EndFunc

    [/autoit]


    Kannst du mal dein Script zeigen?

  • [autoit]

    $connect = TCPConnect($ip,860)
    TCPSend($connect,_InsertNULL("VERSiON0")

    [/autoit][autoit][/autoit][autoit]

    Func _InsertNULL($_sText)
    Local $_sRet
    Local $_aSS = StringSplit($_sText, "")
    For $i = 1 To $_aSS[0]
    $_sRet &= $_aSS[$i] & Chr(0)
    Next
    Return StringToBinary($_sRet)
    EndFunc

    [/autoit]
  • Da fehlt aber was.


    Musst du vielleicht am Ende noch ein CRLF senden? oder ETX bzw am Anfang STX?

    Hast du das ganze mal im Wireshark beobachtet?

  • Mann, ihr gebt ganz schön Gas mit Antworten ;)

    Zitat

    Mit dem langen Hex gehts wieoben jemand geschrieben hat nicht wegen des parsing Fehlers


    Ich habe mich doch korrigiert. Also so sollte es schon gehen:

    [autoit]

    TCPSend($Socket, Binary("0x560045005200530069004f004e003000"))

    [/autoit]


    Wenn das Ganze variabel bleiben soll, funktioniert es natürlich nicht mehr. Dann würde ich m-obi's Variante nehmen.

  • Also das hier ist meine Lösung. So richtig schön ist die nicht, aber es funktioniert :D Ich hatte schonmal dasselbe Problem...

    Spoiler anzeigen
    [autoit]

    MsgBox(0, "hi", "warten...") ;diese MessageBox dient dazu, damit man Zeit hat WPE Pro einzuhängen
    TCPStartup()
    $socket = TCPConnect("173.194.69.94", 80) ;zu google connecten (HTTP-Port)
    If @error Then MsgBox(0, "hi", "Fehler Nr. " & @error & " @ ws2_32.connect")
    SendNull($socket)
    TCPCloseSocket($socket)
    TCPShutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func SendNull($socket)
    $nullByte = DllStructCreate("byte") ;ein Byte reservieren
    DllStructSetData($nullByte, 1, 0) ;das Byte mit Null belegen
    DllCall("Ws2_32.dll", "int", "send", "int", $socket, "ptr", DllStructGetPtr($nullByte), "int", 1, "int", 0) ;die null direkt über den puffer senden
    If @error Then MsgBox(0, "hi", "Fehler Nr. " & @error & " @ ws2_32.send") ;standardfehlerbehandlung
    EndFunc ;===>siehe für weitere Infos http://bug-fix.info/dll/dll_tut.html (sehr nice)

    [/autoit]
  • Ich weiß es nicht iwie klappts auf einmal :D

    [autoit]

    TCPStartup()
    $connect = TCPConnect("173.194.69.94",80)
    TCPSend($connect,_InsertNULL("VERSiON0"))
    Func _InsertNULL($_sText)
    Local $_sRet
    Local $_aSS = StringSplit($_sText, "")
    For $i = 1 To $_aSS[0]
    $_sRet &= $_aSS[$i] & Chr(0)
    Next
    Return StringToBinary($_sRet)
    EndFunc

    [/autoit]