IP-Changer

  • Hi ich mal wieder^^
    ich hab vorher nix zu tun gehabt und hab schnell diesen IP-Changer hier geschrieben
    Source:

    Spoiler anzeigen
    [autoit]


    #include <CMD.au3>
    #include <Inet.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #NoTrayIcon
    $getip = _GetIP()
    If $getip = 1 Then
    MsgBox(0, "Fehler", "Überprüfen Sie Ihre Internetverbindung oder schalten Sie Ihre Firewall aus. Das Programm kann nicht auf das Internet zugreifen.")
    EndIf
    $Form1 = GUICreate("IP-Changer", 437, 125, -1, -1)
    $Group1 = GUICtrlCreateGroup("", 8, 8, 417, 105)
    $IPAddress1 = _GUICtrlIpAddress_Create($Form1, 16, 48, 130, 21)
    _GUICtrlIpAddress_Set($IPAddress1, "0.0.0.0")
    $Label1 = GUICtrlCreateLabel("Aktuelle IP:", 16, 24, 58, 17)
    $Button1 = GUICtrlCreateButton("Erneuern", 16, 72, 131, 25, 0)
    $Button2 = GUICtrlCreateButton("Neue IP holen", 168, 24, 243, 33, 0)
    $Button3 = GUICtrlCreateButton("Aktuelle IP in Zwischenablage kopieren", 168, 64, 243, 33, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    _GUICtrlIpAddress_Set($IPAddress1, $getip)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $ip = _ip()
    MsgBox(0, "Erfolgreich", "Die IP-Adresse wurde erfolgreich erneuert")
    Case $Button2
    $pw = InputBox("Passwort", "Bitte das Passwort des Routers eintragen", "0000", "*")
    _CMDStart(0)
    _CMDWrite('curl http://192.168.2.1/cgi-bin/login.cgi -d "pws=' & $pw & '"')
    _CMDWrite('curl http://192.168.2.1/cgi-bin/disconnect.exe')
    _CMDWrite('curl http://192.168.2.1/cgi-bin/connect.exe')
    _CMDEnd()
    GUICtrlSetState($Button1, @SW_DISABLE)
    GUICtrlSetData($Button1, "6")
    Sleep(1000)
    GUICtrlSetData($Button1, "5")
    Sleep(1000)
    GUICtrlSetData($Button1, "4")
    Sleep(1000)
    GUICtrlSetData($Button1, "3")
    Sleep(1000)
    GUICtrlSetData($Button1, "2")
    Sleep(1000)
    GUICtrlSetData($Button1, "1")
    Sleep(1000)
    GUICtrlSetState($Button1, @SW_ENABLE)
    GUICtrlSetData($Button1, "Erneuern")
    Case $Button3
    $ip = _GetIP()
    If $ip = 1 Then
    MsgBox(0, "Fehler", "Überprüfen Sie Ihre Internetverbindung oder schalten Sie Ihre Firewall aus. Das Programm kann nicht auf das Internet zugreifen.")
    EndIf
    ClipPut($ip)
    EndSwitch
    WEnd

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

    Func _ip()
    $aktuelleip = _GetIP()
    _GUICtrlIpAddress_Set($IPAddress1, $aktuelleip)
    EndFunc

    [/autoit]

    Bitte gebt ein wenig Feedback und vielleicht bugs/verbesserungsvorschläge

    Im anhang ist der Sourcecode, die compilierte Exe und die benötigten dateien

    Padmak

    Edit: So die cmd.au3 ist nun auch mit dabei^^
    ich hatte gehofft dass dadurch wer meinen anderen thread damit anschaut (nur scherz :thumbup: ich habs einfach vergessen :whistling: )
    und an den anderen router arbeite ich
    welche hättet ihr gerne?
    die füg ich dann als erstes ein

    autoit.de/wcf/attachment/3625/

    2 Mal editiert, zuletzt von Padmak (3. Januar 2009 um 11:48)

  • für welchen router typ soll dass denn sein? Universal ist es bestimmt nicht :rolleyes:

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • oh verdammt :D:D:D:D:D
    daran hab ich nich gedacht^^
    des is nur für den Speedport W700V von T-Online mit der Firmware 1.22 oder so
    aber da gehts prima
    ich werd des mal einbauen dass man mehrere auswählen kann, des mach ich wenn ich wieder daheim bin :D

    Padmak

  • Hi,
    ich hätte da noch was.
    Das ist z.B. der String für eine Fritzbox 7150 Ich glaube aber das das für alle FritzBoxen ist.

    Spoiler anzeigen
    Code
    exec(`/opt/bin/curl "http://fritz.box:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination' -d '<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <u:ForceTermination xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" /> </s:Body> </s:Envelope>'`);

    Ist aus nen Perlscript was ich angepasst habe.

    MfG
    Der_Doc

  • Hi,
    ich hätte da noch was.
    Das ist z.B. der String für eine Fritzbox 7150 Ich glaube aber das das für alle FritzBoxen ist.

    Code
    exec(`/opt/bin/curl "http://fritz.box:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination' -d '<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <u:ForceTermination xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" /> </s:Body> </s:Envelope>'`);

    Ist aus nen Perlscript was ich angepasst habe.

    Geht das auch OHNE die 'curl.exe', direkt mit TCPSend ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hallo, für die Fritzbox habe ich mal was vor ewigkeiten umgeschrieben, da das Skript was ich gefunden habe nur direkt fritz.box anspricht, was bei meheren nicht so prima ist.

    [

    [autoit]

    $IP=iniRead(@ScriptDir&'\Config.ini','Config','IP','fritz.box')
    TrayTip("Fritz!Box","Die Internetverbindung wird jetzt getrennt ...", 30)
    RunWait(@ComSpec & " /c " & 'type data.box | "' & @ScriptDir & '\nc.exe" -w 1 '&$IP&' 49000 >nul', "", @SW_HIDE)
    TrayTip("Fritz!Box","Die Internetverbindung wurde getrennt und ist wiederhergstellt worden!", 30)
    Sleep(2000)

    [/autoit]

    Benötige Dateien:
    nc.exe (Wird öfter als "Böse" Datei von diversen Virenscannern erkannt, dem ist aber nicht so!
    Config.ini habe ich mal mitgepostet.

    Wie gesagt das Hauptscript ist nicht von mir, habe es jedeglich geändert, der Original Autor ist mir leider unbekannt

  • Hallo, für die Fritzbox habe ich mal was vor ewigkeiten umgeschrieben, da das Skript was ich gefunden habe nur direkt fritz.box anspricht, was bei meheren nicht so prima ist.

    Benötige Dateien:
    nc.exe (Wird öfter als "Böse" Datei von diversen Virenscannern erkannt, dem ist aber nicht so!
    Config.ini habe ich mal mitgepostet.

    Ist ja nicht schlecht, nur dann brauche ich nc.exe statt curl.exe ! Vom Regen in die Traufe...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Habe mich man daran probiert,..... es geht.
    Herausgekommen ist folgendes Reconnect-Tool mit VoIP-Prüfung, welches ohne andere CMD-Tools auskommt.

    FritzReCon.au3
    [autoit]

    ; FritzReCon.au3
    ; 03.01.2009
    ; FritzBox-Reconnect mit VoIP-Prüfung

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

    #include <INet.au3>
    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Dim $outtext = ""
    Dim $timeout = 30
    Dim $counter = 10
    Dim $socketId, $alteIP, $neueIP
    Dim $router = 'Fritz.box'
    Dim $port = '49000'
    Dim $command = ''
    $command &= 'POST /upnp/control/WANIPConn1 HTTP/1.1' & @CRLF
    $command &= 'SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination"' & @CRLF
    $command &= 'CONTENT-TYPE: text/xml ; charset="utf-8"' & @CRLF
    $command &= 'Content-Length: 293' & @CRLF & @CRLF
    $command &= '<?xml version="1.0" encoding="utf-8"?>' & @CRLF
    $command &= '<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">' & @CRLF
    $command &= ' <s:Body>' & @CRLF
    $command &= ' <u:ForceTermination xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" />' & @CRLF
    $command &= ' </s:Body>' & @CRLF
    $command &= '</s:Envelope>' & @CRLF

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

    $Form = GUICreate("FritzReCon",350,250)
    $Label = GUICtrlCreateLabel("",40,10,270,230)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUIClose")
    GUISetState(@SW_SHOW)

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

    $source = _INetGetSource ("http://" & $router & "/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home")
    $alteIP = StringLeft(StringMid($source,StringInStr($source,"IpAdrDisplay('")+14),StringInStr(StringMid($source,StringInStr($source,"IpAdrDisplay('")+14),");")-2)
    $outtext &= @CRLF & "alte IP-Adresse : " & $alteIP
    GUICtrlSetData($Label,$outtext)

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

    While StringRegExp($source,'"sip:status/sip\d/connect" value="3"') > 0
    $outtext &= @CRLF & "VoIP ist verbunden ! Wartezeit " & $timeout & "s. Noch " & $counter -1 & " Versuche."
    GUICtrlSetData($Label,$outtext)
    $counter -= 1
    If $counter = 0 Then
    $outtext &= @CRLF & "Reconnect abgebrochen !"
    GUICtrlSetData($Label,$outtext)
    Sleep(5000)
    Exit
    EndIf
    Sleep($timeout * 1000)
    $source = _INetGetSource ("http://" & $router & "/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home")
    Wend

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

    $outtext &= @CRLF & "VoIP ist nicht verbunden !"
    $outtext &= @CRLF & "DSL-Verbindung wird erneuert."
    GUICtrlSetData($Label,$outtext)

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

    TCPStartup()
    $socketId = TCPConnect(TCPNameToIP($router),$port)
    If $socketId = -1 Then
    $outtext &= @CRLF & "Fehler ! Es konnte keine Verbindung zu '" & $router & "' hergestellt werden !")
    TCPShutDown()
    Sleep(5000)
    Exit
    Else
    TCPSend($socketId,$command)
    TCPCloseSocket($socketId)
    TCPShutDown()
    EndIf
    Sleep(2000)

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

    $counter = 10
    do
    $source = _INetGetSource ("http://" & $router & "/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home")
    $neueIP = StringLeft(StringMid($source,StringInStr($source,"IpAdrDisplay('")+14),StringInStr(StringMid($source,StringInStr($source,"IpAdrDisplay('")+14),");")-2)
    $counter -= 1
    Sleep(500)
    Until StringLen($neueIP) >= 7 Or $counter <= 0

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

    If $neueIP = $alteIP Then
    $outtext &= @CRLF & "Fehler ! Es wurde keine neue IP-Adresse erhalten."
    GUICtrlSetData($Label,$outtext)
    Else
    $outtext &= @CRLF & "neue IP-Adresse : " & $neueIP
    GUICtrlSetData($Label,$outtext)
    EndIf
    Sleep(3000)

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

    Func GUIClose()
    Exit
    EndFunc

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (8. Mai 2009 um 10:07)

  • aha^^
    ich beiß mir grad die zähne aus wie man ein universal-reconnect-programm baut :D
    und was hast du eigentlich gegen zusatzdateien?
    mit fileinstall ist das alles kein problem :D

    Padmak

  • Ich habe nichts gegen das nutzen von fremden Tools aus Auoit heraus, wenn es anders nicht oder nur aufwändig realisierbar ist. Aber zum Senden von Daten per TCP ein externes Tool ? Wo Autoit so etwas ja bestens kann !

    Außerdem ist 'NetCat' immer wieder ein Problem bei den Virenkillern...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • mal vorsichtig gefragt haben die meisten router ncht anmeldun mit benutzer und passwort :huh:

  • Dann muss Du zu Beginn des Scripts die Authentifizierung automatisieren. Wird auch gehen, ist aber halt bei mir zur Zeit nicht notwendig.

    Google hilft....

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hi,
    besorg dir einen PaketSniffer.
    Mit dem zeichnest du den Reconnect auf (wenn nötig auch mit login) und dann kannst du später per TCP die Pakete senden und ggf. überprüfen.
    Aber es gibt schon tausende ziemlich gute reconnect tools (z.B. Routercontrol).