Java Problem: URLConnection

  • Ich versuche gerade nen sinnloses kleines programm zu schreiben, das sich auf meinen router einloggt, reconnected und wieder ausloggt, hab dafür auch nen vbs script gefunden, das funktioniert:



    aber in java kackt das irgendwie nur ab. scheint auch keine so schön einfache befehle zu geben.

    Code
    [size=12]
    [align=left]URL url = [/size][b][size=12][color=#7f0055][size=12][color=#7f0055]new[/b][/color][/size][/color][/size][size=12] URL([/size][size=12][color=#2a00ff][size=12][color=#2a00ff]"http://"[/color][/size][/color][/size][size=12] + ip+ [/size][size=12][color=#2a00ff][size=12][color=#2a00ff]"/start.login"[/color][/size][/color][/size][size=12]);
    URLConnection conn = url.openConnection();
    conn.setDoOutput([/size][b][size=12][color=#7f0055][size=12][color=#7f0055]true[/b][/color][/size][/color][/size][size=12]);
    conn.setRequestProperty([/size][size=12][color=#2a00ff][size=12][color=#2a00ff]"connection"[/color][/size][/color][/size][size=12],[/size][size=12][color=#2a00ff][size=12][color=#2a00ff]"Keep-Alive"[/color][/size][/color][/size][size=12]);
    OutputStreamWriter wr = [/size][b][size=12][color=#7f0055][size=12][color=#7f0055]new[/b][/color][/size][/color][/size][size=12] OutputStreamWriter(conn.getOutputStream());[/align]
    wr.write([/size][size=12][color=#2a00ff][size=12][color=#2a00ff]"P1="[/color][/size][/color][/size][size=12]+passwort);
    [size=12]wr.flush();
    [/size][/size]



    damit krieg ich schon mal nen POST zugriff auf den router, der loggt auch eine erfolgreiche anmeldung. aber wie gehts jetzt weiter??

    Code
    [size=12]
    [align=left]url2 = [/size][b][size=12][color=#7f0055][size=12][color=#7f0055]new[/b][/color][/size][/color][/size][size=12] URL([/size][size=12][color=#2a00ff][size=12][color=#2a00ff]"http://"[/color][/size][/color][/size][size=12] + ip+ [/size][size=12][color=#2a00ff][size=12][color=#2a00ff]"/pppctl.cmd?action=0"[/color][/size][/color][/size][size=12]);[/align]
    conn2 = url2.openConnection();
    [/size]



    so soll angeblich nen GET befehl funktionieren, es passiert aber nichts. hab schon alles mögliche probiert, total nervig. gandro, weißt du rat?

  • Greift deine Variable auf Port 80 zu? Wenn ja liegt es wahrscheinlich an falschen Headern, die sagen, dass nur POST-Variablen übertragen wurden.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Zitat von Dirk

    das heißt?


    In dem VB-Script wird ja eine XMLHTTP-Verbindugn benutzt. Das bedeutet, dass zwischen dem Programm und dem Socket der Verbindung noch ein HTTP-Protokoll liegt. In HTTP muss geregelt werden, ob Variablen per POST oder GET übergeben werden, da bei POST ein zusätzlicher Header mitgesendet werden muss. Es kann sein, dass Java beim URL-Objekt nur Post implementiert bzw. sich einstellen lässt, ob der zusätzliche POST-Header mitgesendet wird. Wenn der nicht gesendet wird wird die Abfrage als GET interpretiert.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Ich krieg ne macke, ich habs jetzt wirklich mal basic probiert:



    ergebnis: Der router reagiert garnicht mehr auf port 80, totale blokade...

  • Mögliche Lösungen:
    1. Am Ende zwei Leerzeilen einfügen um zu signaliesieren, dass der Header fertig gesendet ist
    2. Vor den Variablen (also P1=xxx) zwei Leerzeilen einfügen, um den Variablenblock zu trennen
    3. Firewallausnahme hinzufügen

    Was für ein Basic ist das? Sieht immernoch mehr nach Java aus.
    Ich verbinde das immer so:

    Spoiler anzeigen


    Der Code ist btw ein Teil aus meinem Remotedesktop, der auf Port 739 läuft, aber für 80 sollte es auch gehen

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Zitat von winfreak


    Dürfte sich um VB.NET handeln.


    Ich rede von diesem Post: https://www.winhistory-forum.net/161847-post5.html
    Das ist doch kein VB.Net. Das was ich gepostet hab ist VB.Net

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Das ist visual basic SCRIPT, kannte ich auch nicht, aber das zeug braucht man nur in ne textdatei fügen, endung vbs, und unter windows doppelklicken. fertig. der interpreter ist wohl mindestens seit 2000 datei, liegt im %windir%/system32/cscript.exe

  • Zitat von Dirk

    Das ist visual basic SCRIPT, kannte ich auch nicht, aber das zeug braucht man nur in ne textdatei fügen, endung vbs, und unter windows doppelklicken. fertig. der interpreter ist wohl mindestens seit 2000 datei, liegt im %windir%/system32/cscript.exe

    Darauf baute doch ILoveYou auf?

  • VBScript war meine erste Progrogrammiersprache, deswegen nehm ich heut am liebsten noch VB.
    Das war mal im IE die Scriptsprache als Konkurrenz zu JS, was ja von Netscape ist. MS hat bisheut noch nich JS akzeptiert, die nennen ihre Sprache immer noch JScript. Für Offline-Scripting oder Netzwerkadministration ist es aber immer noch gut, weil man quasi die gesamte VB-Classic-Sprache hat ohne dass man Compiler etc braucht.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • das kann gut sein. trotzdem scheint der immer noch standardmäßig aktiv zu sein. dafür wohl die virenscanner. ich glaube aber die vbs zeigt kein mailprogramm mehr an. da war ja damals iloveyou.txt.vbs

    egal. ich hatte nochmal mit httpurlconnection experimentiert, wo ich auch die response codes vom server mir geben konnte. der post hatte stets 200, die gets immer -1, ergo total daneben gegangen, interessantes detail, hat man auf ne webseite geleitet gabs auch 200. konnte auch kein zugriffsproblem gewesen sein. ergo totaler murks, wer da wo streikt findet man nicht raus.

    java braucht echt mehr pseudoklassen die basics auch mal als basics darstellen. ist ja schon nen geschenk das man nen string nicht als zeichenkette selber bauen muss.

  • nNet.exe (17,41 KB)
    Ein kleines selbstgecodetes Tool, mit dem du "rohe" TCP/IP-Verbindungen zu nem Server aufbauen kannst.
    1. mit "connect [ip] [port]" verbinden
    2. send eintippen und dann den zu sendenen String
    3. nochmal send, um den String zu schicken.
    4. receive, um die Serverantwort anzuzeigen.

    Könnte helfen einen Fehler in deinem Request zu finden.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Ich würde mal sagen ohne den Logger passt das in eine Funktion.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Zitat von winfreak

    Hab mal nen Java-Dev gefragt, das ist sein Ergebnis:
    C code - 104 lines - codepad




    sieht schon mal imposant aus, aber habs nicht getestet, ziel war es wirklcih ne kleine funktion zu schreiben, wollte nicht irgendwelche großen jar imports mitschleppen. habs jetzt auch nicht testen können, weil ich scheinbar nicht die passenden imports gefunden hatte.

    aber wie gesagt hab jetzt einfach um das vbs script rumgebaut.

  • Zitat von Dirk




    sieht schon mal imposant aus, aber habs nicht getestet, ziel war es wirklcih ne kleine funktion zu schreiben, wollte nicht irgendwelche großen jar imports mitschleppen. habs jetzt auch nicht testen können, weil ich scheinbar nicht die passenden imports gefunden hatte.

    aber wie gesagt hab jetzt einfach um das vbs script rumgebaut.

    Du brauchst die apache commons, aber egal...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!