.jar erstellen

DVNO

DVNO

Aktives Mitglied
Thread Starter
Dabei seit
13.10.2010
Beiträge
127
Reaktionspunkte
1
Hallo! :muede:

Ich dachte, ich frage hier mal eben, bevor ich total zusammenbreche.

Es geht um diesen Code, der müsste als ausführbare .jar gespeichert werden, aber ich bekomme es einfach nicht hin.

Code:
import java.io.*;
import javax.net.ssl.*;

public class Reconnecter {

	public static void main(String[] args) throws Exception {
		String base64Password = args[0];
			
		SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
		SSLSocket socket = (SSLSocket) factory.createSocket("speedport.ip", 443);
		Writer out = new OutputStreamWriter(socket.getOutputStream());
		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

		// login
		out.write("POST /index/login.cgi HTTP/1.1\r\n");
		out.write("Host: speedport.ip\r\n");
		out.write("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0 Paros/3.2.13\r\n");
		out.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
		out.write("Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n");
		out.write("Accept-Encoding: gzip, deflate\r\n");
		out.write("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n");
		out.write("DNT: 1\r\n");
		out.write("Referer: https://speedport.ip/\r\n");
		out.write("Content-Length: 36\r\n");
		out.write("Content-Type: text/plain; charset=UTF-8\r\n");
		out.write("Connection: keep-alive\r\n");
		out.write("Pragma: no-cache\r\n");
		out.write("Cache-Control: no-cache\r\n");
		out.write("\r\n");
		out.write("Username=admin&Password=" + base64Password);
		out.flush();

		// second line is something like: Set-Cookie: SessionID_R3=qZbBvb4YS6Y; path=/
		in.readLine();
		String cookie = in.readLine();
		cookie = cookie.substring(cookie.indexOf("SessionID"));
		cookie = cookie.substring(0, cookie.indexOf(";"));
		String commaCookie = cookie.replace('=', ',');

		Thread.sleep(3000);

		// disconnect internet
		out.write("POST /auth/setcfg.cgi?x=InternetGatewayDevice.WANDevice.1.WANCommonInterfaceConfig&RequestFile=/auth/hcti_startseite.php&cookie="
				+ commaCookie + " HTTP/1.1\r\n");
		out.write("Host: speedport.ip\r\n");
		out.write("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0 Paros/3.2.13\r\n");
		out.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
		out.write("Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n");
		out.write("Accept-Encoding: gzip, deflate\r\n");
		out.write("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n");
		out.write("DNT: 1\r\n");
		out.write("Connection: keep-alive\r\n");
		out.write("Referer: https://speedport.ip/auth/hcti_startseite.php?cookie=" + commaCookie + "\r\n");
		out.write("Cookie: " + cookie + "\r\n");
		out.write("Content-Type: application/x-www-form-urlencoded\r\n");
		out.write("Content-Length: 22\r\n");
		out.write("\r\n");
		out.write("x.EnabledForInternet=0");
		out.flush();

		Thread.sleep(8000);

		// reconnect to internet
		out.write("POST /auth/setcfg.cgi?x=InternetGatewayDevice.WANDevice.1.WANCommonInterfaceConfig&RequestFile=/auth/hcti_startseite.php&cookie="
				+ commaCookie + " HTTP/1.1\r\n");
		out.write("Host: speedport.ip\r\n");
		out.write("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0 Paros/3.2.13\r\n");
		out.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
		out.write("Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n");
		out.write("Accept-Encoding: gzip, deflate\r\n");
		out.write("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n");
		out.write("DNT: 1\r\n");
		out.write("Connection: keep-alive\r\n");
		out.write("Referer: https://speedport.ip/auth/hcti_startseite.php?cookie=" + commaCookie + "\r\n");
		out.write("Cookie: " + cookie + "\r\n");
		out.write("Content-Type: application/x-www-form-urlencoded\r\n");
		out.write("Content-Length: 22\r\n");
		out.write("\r\n");
		out.write("x.EnabledForInternet=1");
		out.flush();

		Thread.sleep(5000);

		// end configuration menu
		out.write("POST https://speedport.ip/auth/logout.cgi?RequestFile=/pub/top_beenden.php&cookie=" + commaCookie
				+ " HTTP/1.1\r\n");
		out.write("Host: speedport.ip\r\n");
		out.write("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0 Paros/3.2.13\r\n");
		out.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
		out.write("Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n");
		out.write("Accept-Encoding: gzip, deflate\r\n");
		out.write("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n");
		out.write("DNT: 1\r\n");
		out.write("Connection: keep-alive\r\n");
		out.write("Referer: https://speedport.ip/auth/hcti_startseite.php?cookie=" + commaCookie + "\r\n");
		out.write("Cookie: " + cookie + "\r\n");
		out.write("Content-Type: application/x-www-form-urlencoded\r\n");
		out.write("Content-Length: 0\r\n");
		out.write("\r\n");
		out.flush();

		out.close();
		in.close();
		socket.close();
	}
}
Quelle: http://board.jdownloader.org/showpost.php?p=155351&postcount=5

Hilfe. Bitte. :hamma:
 
also es könnte hilfreich sein, erstmal mit javac zu kompilieren ;)
aber dann braucht es noch mehrere schritte um dann aus dem .class file ein jar zu machen...
 
Ich habe den Code als .java gespeichert, dann:

Mac:~ DVNO$ javac /Users/DVNO/Desktop/Reconnecter.java
Mac:~ DVNO$ jar cf /Users/DVNO/Desktop/Reconnecter.jar /Users/DVNO/Desktop/Reconnecter.class

Leider funktioniert die .jar danach nicht wie gewünscht. Kann es sein, dass die Manifest-Datei oder so fehlt? Ist die immer nötig?
 
Wird die nicht automatisch erstellt oder verstehe ich da etwas falsch?

Code:
Mac:~ DVNO$ jar tf /Users/DVNO/Desktop/Reconnecter.jar 
META-INF/
META-INF/MANIFEST.MF
Users/DVNO/Desktop/Reconnecter.class

Boah, ist das schlimm. :(
 
Wird es, aber das ist quasi leer
 
Ich habe es jetzt zwar ohne Probleme mit Eclipse geschafft, aber der Code scheint nicht zu funktionieren. Leider.
 
Klar, ich habe schon alles Mögliche versucht. Nichts funktioniert. Nach etwas fünf Stunden oder so, habe ich dann erstmal aufgegeben.

Ich bekomme immer folgende Meldung in der Konsole:

Code:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(String.java:1931)
	at java.lang.String.substring(String.java:1904)
	at Reconnecter.main(Reconnecter.java:36)
 
zeile 36 ist:
cookie = cookie.substring(cookie.indexOf("SessionID"));

also findet der SessionID nicht im cookie
 
Bin ich auch schon drauf gekommen. Ich habe nur keine Ahnung warum. :(
 
Weil vielleicht in der 2. Zeile vom Response nicht die Zeile steht, die der "Schöpfer" des Codes vermutet.
 
lass dir cookie doch mal ausgeben und pass es an ;)
 
Weil vielleicht in der 2. Zeile vom Response nicht die Zeile steht, die der "Schöpfer" des Codes vermutet.

Kannst du mir das genauer erklären?

lass dir cookie doch mal ausgeben und pass es an ;)

Ich kann nur ein wenig PHP und kein Java, aber mit "System.out.println(cookie);" bekomme ich nur:

Code:
Content-Type: text/plain

Auch ich weiß, dass so kein Cookie aussieht. :D

Nur warum funktioniert das nicht?
 
Ersetzte mal

Code:
		// second line is something like: Set-Cookie: SessionID_R3=qZbBvb4YS6Y; path=/
		in.readLine();
		String cookie = in.readLine();

Mit

Code:
		String lineContent=in.readLine();
		while(lineContent!=null){
			System.out.println(lineContent);
			lineContent=in.readLine();
		}
		String cookie=null;

Und poste mal das Ergebnis hier.
Anmerkung: Das Programm funktioniert mit dem Code gar nicht. Es geht nur um den Output.
 
Mhhh, dann kommt:

Code:
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 1

1
nullException in thread "main" java.lang.NullPointerException

	at Reconnecter.main(Reconnecter.java:40)

Bedeutet "HTTP 200" nicht, dass alles in Ordnung ist?
 
Also 200 verstehe ich auch als 'Alles OK' :D
Nur liefert dein Modem nur "1" zurück. Also versteht es die Eingabe nicht wirklich. Wahrscheinlich ist es eine andere Hardware oder eine andere Firmware läuft auf der Hardware. Jedenfalls ist da kein Cookie im 'Input'.
 
Also die Hardware ist 100% richtig, ich bin doch nicht blöd. :p

Ob das Programm für eine andere Firmware ist, weiß ich allerdings nicht.

Ich werde mir wohl einen anderen Router besorgen müssen. Leider.
 
Zurück
Oben Unten