Portforwarding / NAT Tool

  • Moin,

    ich habe in meinem Setup ein kleines Netzwerkproblem, das es erfordert einem Windows 7 Rechner als Port forwarder / NAT zu benutzen.

    Also ich würde gerne ein AutoIT script schreiben, das nur einfach macht:

    Höre auf port xxxxx wenn irgendwas hierauf von aussen reinkommt leite dies an ip xxx.xxx.xxx.xxx port xxxxxx weiter.

    Natürlich muss auch, der rückwärtstraffic wieder an die andere geleitet werden.

    Meine Frage, kann ich dies überhaupt mit autoIT abbilden ?
    Und wie unfangreich würde dies werden, oder hat jemand schon eine Lösung ?

  • wenn du weist welche Protokoll würd ichs
    mal mit TCP funktionen versuchen....
    d.h. du hängst in einer dauerschleife die hört auf dem port
    und durch die den jeweiligen absender an den anderen
    weiterleitet. Hatte mal so ne idee das man im netzwerk über jemand anderen
    Surven kann - habs aber verworfen weil ich mich zu wenig mit
    den Netzwerkfunktionen auskenne

    -

  • Dann schau dir die Grundlegenden TCP funktionen an

    TCPStartUp
    TCPSend
    TCPRecv


    und von denen 2

    TCPSend
    TCPRecv


    jeweils ganz genau die Hilfedatei. Danach solltest du sowas in 2-3h hinbekommen

    -

  • Ich möchte hier eigentlich meinen Code nicht rausrücken,
    aber für dich....

    durch kleine änderungen wird daraus das was du brauchst :D

    Spoiler anzeigen

    ALL RIGHTS RESERVED (C) !


    Server

    [autoit]

    ;Server by Nachid
    $ip = IniRead("config.ini","Config","IP","X")
    $port = IniRead("config.ini","Config","Port","X")
    $max = IniRead("config.ini","Config","Max","100")
    If $ip="X" Or $port="X" Then Exit(1)
    TCPStartup()
    $main = TCPListen($ip,$port,$max)
    Dim $socket[$max+1]
    $socketnummer = 0
    waitconnect()

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

    Func waitconnect()
    While 1
    $socket[$socketnummer] = TCPAccept($main)
    If $socket[$socketnummer] >= 0 Then
    $socketnummer = $socketnummer +1
    EndIf
    For $i=0 To $socketnummer Step +1
    $var = TCPRecv($socket[$i],2048)
    If $var <> "" Then sendall($var)
    Next
    WEnd
    EndFunc

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

    Func sendall($var)
    For $i=0 To $socketnummer Step +1
    TCPSend($socket[$i],$var)
    Next
    EndFunc

    [/autoit]


    Client

    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here
    #NoTrayIcon
    $name = RegRead("HKLM\Software\Nachid\chat","name")
    If $name="" Then $name = InputBox("Chatname","Dein Nickname :","","",250,250)
    RegWrite("HKLM\Software\Nachid\Chat","name","REG_SZ",$name)
    $ip = IniRead("config.ini","Config","IP","X")
    $port = IniRead("config.ini","Config","Port","X")

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

    GUICreate("Chat by Nachid",300,280)
    $edit = GUICtrlCreateEdit("Chatprogramm by Nachid",5,5,290,230)
    $input = GUICtrlCreateInput("",5,245,290,30)
    GUISetState()

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

    TCPStartup()
    $main = TCPConnect($ip,$port)
    If @error Then _
    MsgBox(4112, "Fehler", "TCP-Connect schlug mit folgendem WSA-Fehler fehl: " & @error)

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

    While 1
    $msg = GUIGetMsg()
    If $msg = -3 Then Exit(1)
    $rec = TCPRecv($main,2048)
    If @error Then Exit(1)
    If $rec <> "" Then
    $var = StringSplit($rec,"|",1)
    GUICtrlSetData($edit,GUICtrlRead($edit)&@CRLF&$var[1]&" : "&$var[2])
    EndIf
    If $msg = $input Then
    TCSend()
    EndIf
    WEnd

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

    Func TCSend()
    TCPSend($main,$name&"|"&GUICtrlRead($input))
    GUICtrlSetData($input,"")
    EndFunc

    [/autoit]

    -

    Einmal editiert, zuletzt von Nachid (13. August 2011 um 11:24)