JDownloader Community - Appwork GmbH
 

Reply
 
Thread Tools Display Modes
  #1  
Old 10.04.2016, 10:37
Hober Mallow
Guest
 
Posts: n/a
Default [reconnect funktioniert] o2 Homebox 6441

Hallo, bin ganz neu hier, daher erst einmal ein freundliches Hallo von mir.

Ja, und ich habe gleich ein Problem.
Bei mir wurde vor kurzem der Netzzugang auf VDSL umgestellt und dafür habe ich natürlich auch einen neuen Router bekommen. Und zwar die Homebox 6641.
Dafür hatte ich hier im Forum auch ein Script gefunden, das lief.

Leider funktionierte aber mein DECT-Telefon mit diesem Router nicht. o2 hatte mir dann angeboten, es mal mit der 6441 zu versuchen und damit klappt es auch sehr gut.

Nur leider..... der Reconnect will nicht mehr.
Ich suche jetzt also ein Script für die o2 Homebox 6441 von Astoria.
Wäre toll, wenn mir jemand helfen könnte.

Last edited by Hober Mallow; 03.06.2016 at 00:04.
Reply With Quote
  #2  
Old 14.04.2016, 12:10
Hober Mallow
Guest
 
Posts: n/a
Default

Hmmmm....
Niemand eine Idee?
Reply With Quote
  #3  
Old 22.04.2016, 00:37
Hober Mallow
Guest
 
Posts: n/a
Default

Niemand da, der dieses Teil kennt? Oder mir einen Tipp geben kann, was ich machen kann?
Reply With Quote
  #4  
Old 22.05.2016, 12:14
rbybbl
Guest
 
Posts: n/a
Default

Quote:
Originally Posted by Hober Mallow View Post
... Und zwar die Homebox 6641.
ich dachte die 6441?

Dank Upgrade auf VDSL habe ich auch diesen Router (o2 Homebox 6441) bekommen. Im internet habe ich kein Reconnect-Script gefunden, daher habe ich mir eins gebaut.

Leider lässt sich der Reconnect nicht über LiveHeaders realisieren, da diverse Funktionen benötigt werden (md5 und aes512 hashing, base64).

Dies ist ein AutoIt-Script. Es kann als Standalone-EXE kompiliert werden und dann als externer Restart in JD eingestellt werden.

Benötigt wird AutoIt und die WinHttp-AutoIt UDF.

Kurzanleitung:
  • AutoIt installieren
  • Ein neues Script in AutoIt erstellen, mein Script dort einfügen und abspeichern
  • WinHttp-AutoIt UDF herunterladen und die au3-Dateien im gleichen Ordner speichern
    ( github.com/dragana-r/autoit-winhttp/releases/download/1.6.3.9/1.6.3.9.zip )
  • In AutoIt das Script kompilieren (Tools -> Build, oder F7-Taste)
  • Die im Scriptverzeichnis erstellte .exe-Datei zum reconnecten benutzen

Hinweis:
Falls Du ein Router-Passwort eingerichtet hast, braucht das Script es. Dieses kann per Parameter an die .exe-Datei übergeben werden oder Du kannst es direkt in die Datei mit einkompilieren.
Dazu diese Variable
Quote:
Local $g_sRouterPass = -1
ändern in
Quote:
Local $g_sRouterPass = 'mein passwort'
Um das Passwort per Parameter zu übergeben
Quote:
meine.exe pass meinpasswort
PHP Code:
######################################
## o2 HomeBox 6441 reconnect script ##
## tested on firmware 1.01.23v      ##
## by rbybbl                        ##
######################################

#include 'WinHttp.au3'
#include <Array.au3>
#include <Date.au3>
#include <Crypt.au3>
Global Const $CALG_SHA_512 0x0000800E

##################
###  SETTINGS  ###
##################
Local $g_sRouterHost 'o2.box'
Local $g_sRouterPass = -1
Local $g_sRouterMode 
'reconnect'

### DO NOT EDIT
If $CmdLine[0] > 0 Then
    
For $i 1 To $CmdLine[0Step 2
        
If $i >= $CmdLine[0Then ExitLoop
        $CmdLine
[$i] = StringLower($CmdLine[$i])
        
$CmdLine[$i+1] = StringLower($CmdLine[$i+1])

        If 
StringLeft($CmdLine[$i], 4) = 'host' Then
            $g_sRouterHost 
$CmdLine[$i+1]

        ElseIf 
StringLeft($CmdLine[$i], 4) = 'pass' Then
            $g_sRouterPass 
$CmdLine[$i+1]

        ElseIf 
$CmdLine[$i] = 'mode' And ($CmdLine[$i+1] = 'reconnect' Or $CmdLine[$i+1] = 'reboot'Then
            $g_sRouterMode 
$CmdLine[$i+1]
        EndIf
    
Next
EndIf

Local $g_hOpen _WinHttpOpen()
Local $g_hConnect _WinHttpConnect($g_hOpen$g_sRouterHost)
Local $g_sToken _RouterLogin()

If 
$g_sRouterMode 'reconnect' Then
    
perform reconnect
    ConsoleWrite
('reconnecting' & @CRLF)
    
_RouterReconnect()
    
_RouterLogout()
ElseIf 
$g_sRouterMode 'reboot' Then
    ConsoleWrite
('rebooting' & @CRLF)
    
_RouterReboot()
EndIf

_WinHttpCloseHandle($g_hConnect)
_WinHttpCloseHandle($g_hOpen)

Exit

#################
### FUNCTIONS ###
#################

Func _RouterLogin()
    If 
$g_sRouterPass <> '' And $g_sRouterPass <> False And $g_sRouterPass <> -1 Then
        Local $sRequest 
_WinHttpSimpleRequest($g_hConnect'POST''login.cgi', Default, 'pws=' _EncryptPassword($g_sRouterPass))
        If @
error Then Exit MsgBox(16'Error''Login request failed')
    EndIf

    
Local $sRequest _WinHttpSimpleRequest($g_hConnect'GET')
    If @
error Then Exit MsgBox(16'Error''Token request failed')

    
Local $aToken StringRegExp($sRequest'(?i)data:image/gif;base64,[a-z0-9+/]+///[a-z0-9+/]{31}([^"]+)"'1)
    
Local $sToken BinaryToString(_Base64Decode($aToken[0]))

    Return 
$sToken
EndFunc

Func _RouterLogout
()
    If 
$g_sRouterPass <> '' And $g_sRouterPass <> False And $g_sRouterPass <> -1 Then
        Local $sRequest 
_WinHttpSimpleRequest($g_hConnect'POST''logout.cgi')
        If @
error Then Exit MsgBox(16'Error''Logout request failed')
    EndIf
EndFunc

Func _RouterReconnect
()
    
Local $aCommandSequence[2] = ['wan_stop''wan_start']
    For 
$i 0 To UBound($aCommandSequence)-1
        Local $sRequest 
_WinHttpSimpleRequest($g_hConnect'POST''apply_abstract.cgi', Default, 'action=' $aCommandSequence[$i] & '&httoken=' $g_sToken)
        If @
error Then Exit MsgBox(16'Error''Reconnect request failed')
        If 
$i 0 Then Sleep(500)
    
Next
    
While Not _RouterIsConnected()
        
Sleep(500)
    
WEnd
EndFunc

Func _RouterReboot
()
    
Local $sRequest _WinHttpSimpleRequest($g_hConnect'POST''apply_abstract.cgi', Default, 'action=ui_reboot&httoken=' $g_sToken)
    If @
error Then Exit MsgBox(16'Error''Reboot request failed')
EndFunc

Func _RouterInfo
()
    
Local $sRequest _WinHttpSimpleRequest($g_hConnect'GET''cgi/cgi_diagnostic.js?_tn=' $g_sToken)
    If @
error Then Exit MsgBox(16'Error''Info request failed')
    
Local $aInfo StringRegExp($sRequest'(?i)"(WAN_IP4_Addr|LAN_IP4_Addr|nWANConnectStatus0|sys_uptime)",\s?"?\d+"?,\s?"([^"]+)"'3)
    ;
_ArrayDisplay($aInfo)
    ;
MsgBox(0,0,$sRequest)
EndFunc

Func _RouterIsConnected
()
    
Local $sRequest _WinHttpSimpleRequest($g_hConnect'GET''cgi/cgi_diagnostic.js?_tn=' $g_sToken)
    If @
error Then Exit MsgBox(16'Error''Info request failed')
    Return 
StringRegExp($sRequest'(?i)"nWANConnectStatus0",\s?"?\d+"?,\s?"Connected"')
EndFunc

Func _EncryptPassword
($sPassword)
    
Local $sTmpMd5 _Crypt_HashData($sPassword$CALG_MD5)
    
$sTmpMd5 StringLower(StringTrimLeft($sTmpMd52))
    
Local $sTmpSha512 =  _Crypt_HashData($sTmpMd5$CALG_SHA_512)
    
$sTmpSha512 StringLower(StringTrimLeft($sTmpSha5122))
    Return 
$sTmpSha512
EndFunc

Func _Base64Decode
($input_string)
    
Local $struct DllStructCreate('int')
    
$a_Call DllCall('Crypt32.dll''int''CryptStringToBinary''str'$input_string'int'0'int'1'ptr'0'ptr'DllStructGetPtr($struct1), 'ptr'0'ptr'0)
    If @
error Or Not $a_Call[0Then
        
Return SetError(10'')
    EndIf

    
Local $a DllStructCreate('byte[' DllStructGetData($struct1) & ']')
    
$a_Call DllCall('Crypt32.dll''int''CryptStringToBinary''str'$input_string'int'0'int'1'ptr'DllStructGetPtr($a), 'ptr'DllStructGetPtr($struct1), 'ptr'0'ptr'0)
    If @
error Or Not $a_Call[0Then
        
Return SetError(20'')
    EndIf

    Return 
DllStructGetData($a1)
EndFunc 
eine Funktion zum rebooten des Routers habe ich ebenfalls eingebaut!

ich habe auch eine PHP-Version erstellt (zum zeitgesteuerten Reboot/Reconnect per Cronjob/Remote) die ich bei Interesse posten kann..

Viele Grüße
rbybbl

Last edited by rbybbl; 05.07.2016 at 18:54.
Reply With Quote
  #5  
Old 28.05.2016, 21:22
Hober Mallow
Guest
 
Posts: n/a
Default

Quote:
Originally Posted by rbybbl View Post
ich dachte die 6441?
Sorry, da habe ich mich vielleicht etwas unklar ausgedrückt.

Zuerst hatte ich eine Homebox 6641. Dafür hatte ich hier auch ein Skript gefunden. Mit diesem Router funktionierte aber mein Telefon nicht. Deshalb hat o2 ihn gegen eine Homebox 6441 getauscht. Damit funktioniert zwar das Telefon aber der Reconnect nicht.

Also,
mein jetziger Router ist tatsächlich eine Homebox 6441.

Leider kann ich mit deiner Lösung nichts anfangen, da ich kein Windows benutze, sondern Linux.

Ich wage nicht zu offen, dass du auch dafür eine Lösung hast.

Last edited by Hober Mallow; 28.05.2016 at 21:27.
Reply With Quote
  #6  
Old 31.05.2016, 16:52
rbybbl
Guest
 
Posts: n/a
Default

Quote:
Originally Posted by Hober Mallow View Post
Sorry, da habe ich mich vielleicht etwas unklar ausgedrückt.

Zuerst hatte ich eine Homebox 6641. Dafür hatte ich hier auch ein Skript gefunden. Mit diesem Router funktionierte aber mein Telefon nicht. Deshalb hat o2 ihn gegen eine Homebox 6441 getauscht. Damit funktioniert zwar das Telefon aber der Reconnect nicht.

Also,
mein jetziger Router ist tatsächlich eine Homebox 6441.

Leider kann ich mit deiner Lösung nichts anfangen, da ich kein Windows benutze, sondern Linux.

Ich wage nicht zu offen, dass du auch dafür eine Lösung hast.
Naja, wenn Du Apache und PHP installierst, dann könntest Du mein PHP-Script benutzen
Aber extra einen Webserver nur für einen Router-Reconnect aufzusetzen ist vielleicht etwas übertrieben..

Bin mir nicht sicher, aber ich denke es sollte in Linux per Shellscript leicht zu lösen sein. Leider hab ich aber sehr wenig Linux-Erfahrung.

Eventuell könnte man doch ein Live-Headers-Script für JD schreiben (dazu müsste man das den Hashwert des Login-Passworts aber als Variable anlegen).
Ich versuche es mal bei Gelegenheit!

Edit: Mit Live-Headers-Script geht es leider nicht, da JD keine Möglichkeit bietet eine base64-Zeichenkette zu entschlüsseln :(

Edit 2:
Ok, habe ein Shell-Script erstellt. Es gibt bestimmt elegantere Wege das zu realisieren, hab praktisch keine Linux-Erfahrung, aber es funktioniert bei mir. Die Variable ROUTER_HOST erklärt sich von selbst, das Passwort muss als Hash-Wert vorliegen. Einen Hashwert kannst Du z.B. auf **External links are only visible to Support Staff**www.hashgenerator.de/ (hashgenerator punkt de) erstellen. Gib Dein Klartext-Passwort ein und erstelle einen MD5-Hash. Kopiere diesen (ohne Leerzeichen am Anfang und Ende) und benutze ihn als Input für ein SHA512-Hash. Das Ergebnis dann in die Variable ROUTER_PASS kopieren.

PHP Code:
#!/bin/sh
ROUTER_HOST="192.168.1.1"
ROUTER_PASS="b0f4337213779e16df1304962........................................................................."

# send login post request
curl --"pws=$ROUTER_PASS" "$ROUTER_HOST/login.cgi" > /dev/null

# get the token from index page and save as var
ROUTER_TOKEN=$(curl --silent "$ROUTER_HOST/" grep -ioP 'data:image/gif;base64,[a-z0-9+/]+///[a-z0-9+/]{31}\K([^"]+)' base64 --decode)

# send disconnect post request
curl --"action=wan_stop&httoken=$ROUTER_TOKEN" "$ROUTER_HOST/apply_abstract.cgi" > /dev/null

# to be sure
sleep 1

# send connect post request
curl --"action=wan_start&httoken=$ROUTER_TOKEN" "$ROUTER_HOST/apply_abstract.cgi" > /dev/null

# wait for connected state
while true
do
    if 
curl -"$ROUTER_HOST/cgi/cgi_diagnostic.js?_tn=$ROUTER_TOKENgrep -qiP '"nWANConnectStatus0",\s?"?\d+"?,\s?"Connected"'then
        
break
    
fi
    sleep 1
done
# send logout request
curl --"" "$ROUTER_HOST/logout.cgi" > /dev/null 

Last edited by rbybbl; 01.06.2016 at 22:06.
Reply With Quote
  #7  
Old 02.06.2016, 15:25
Hober Mallow
Guest
 
Posts: n/a
Default

rbybbl... Du bist super!

Das Skript funktioniert einwandfrei. Der Reconnect ist sogar überraschend schnell, gerade mal so um die 13 Sekunden.

Vielen, vielen Dank für deine Mühe!
Reply With Quote
  #8  
Old 02.06.2016, 21:04
rbybbl
Guest
 
Posts: n/a
Default

Gerne, schön das es funktioniert!

Kannst den Thread auch als [Reconnect funktioniert] markieren, nützlich für andere User!

Viele Grüße
Reply With Quote
  #9  
Old 03.06.2016, 00:06
Hober Mallow
Guest
 
Posts: n/a
Default

Hm....
... irgendwie bin ich zu blöd, den Thread-Titel zu ändern.
Reply With Quote
  #10  
Old 03.06.2016, 21:09
rbybbl
Guest
 
Posts: n/a
Default

Quote:
Originally Posted by Hober Mallow View Post
Hm....
... irgendwie bin ich zu blöd, den Thread-Titel zu ändern.
ach keine Ahnung, vielleicht machen das auch nur Moderatoren?
egal :D
Reply With Quote
  #11  
Old 26.06.2016, 17:07
BEWEWA
Guest
 
Posts: n/a
Default

Hallo,

ich habe jetzt auch die O2 Homebox 6641. Möchte nun mit dem jDownloader den Router auch Reconnecten.
Wollte das nun mit der Anleitung von rbybbl umsetzen. Aber leider scheitere ich schon am runter laden von WinHttp-AutoIt UDF. Wo kann ich das runter laden?
Habe leider keine Erfahrung mit Scripts.

@rbybbl Du hast geschrieben du hast auch eine PHP Version erstellt. Ist diese Version leichter für mich zum benutzen?
Ich benutze Windows.

Danke
BEWEWA
Reply With Quote
  #12  
Old 29.06.2016, 21:37
Knotte80 Knotte80 is offline
DSL Light User
 
Join Date: Jun 2012
Location: Munich
Posts: 32
Default "no router password set"

Hallo,

danke für die super Anleitung!
Die WinHttp-AutoIt UDF gibt es übrigens hier: **External links are only visible to Support Staff****External links are only visible to Support Staff**

Habe nun die EXE kompiliert. Da ich kein Router-Passwort benutze, habe ich nix geändert. Im JD kommt dann aber beim Starten des Scripts die Meldung "no router password set". Also hab ich ein Passwort eingestellt und dieses im Script ergänzt, aber es kommt wieder die Fehlermeldung.
Was nun?
Reply With Quote
  #13  
Old 30.06.2016, 20:49
BEWEWA
Guest
 
Posts: n/a
Default

Leider wird mir der Link für WinHttp-AutoIt UDF nicht angezeigt. Kannst du mir den Link als Private Nachricht schicken?Danke
Reply With Quote
  #14  
Old 05.07.2016, 18:51
rbybbl
Guest
 
Posts: n/a
Default

Quote:
Originally Posted by Knotte80 View Post
Hallo,

danke für die super Anleitung!
Die WinHttp-AutoIt UDF gibt es übrigens hier: **External links are only visible to Support Staff**...

Habe nun die EXE kompiliert. Da ich kein Router-Passwort benutze, habe ich nix geändert. Im JD kommt dann aber beim Starten des Scripts die Meldung "no router password set". Also hab ich ein Passwort eingestellt und dieses im Script ergänzt, aber es kommt wieder die Fehlermeldung.
Was nun?
Du könntest ein Router-Passwort einstellen? Wäre eine Lösung...

Habe mein Script aktualisiert (s. alten Beitrag), jetzt sollte es auch bei Routern ohne Passwort funktionieren..

Die UDF-Dateien gibt es hier: github.com/dragana-r/autoit-winhttp/releases/download/1.6.3.9/1.6.3.9.zip

Last edited by rbybbl; 07.07.2016 at 13:06.
Reply With Quote
  #15  
Old 30.07.2016, 00:38
vegamoon
Guest
 
Posts: n/a
Thumbs up funktioniert prima!

Einen Riesengroßen Dank!
Es funktioniert sehr gut und ist ziemlich fix!
Einfach Klasse.
Toll, dass es Leute gibt, die sowas coden (und ihr Wissen teilen) :-)
Reply With Quote
  #16  
Old 31.10.2016, 23:35
BEWEWA
Guest
 
Posts: n/a
Default

Hallo rbybbl, danke für das Script. Habe es nun auch ausprobiert und es klappt wunderbar und ist auch sehr schnell!!

Danke nochmal für deine Hilfe!!!
Reply With Quote
  #17  
Old 27.11.2016, 08:59
Beryus!
Guest
 
Posts: n/a
Question Bitte aktualisieren. Danke!

@rbybbl

Vielen Dank, dass du deine Informatik-Kenntnisse gemeinnützig gebraucht hast, um die obigen Skripte zu coden.
Leider gab es vor kurzem ein Firmware-Upgrade für die o2 Homebox 6441 auf 1.01.30v. Dadurch funktioniert das Reconnect-Skript leider nicht mehr(, aber das Reboot-Skript wohl schon). Könntest du daher vielleicht noch einmal einen Teil deiner kostbaren Zeit investieren, um das Skript zu aktualisieren? Vielen Dank im Voraus.

Beste Grüße
Beryus
Reply With Quote
  #18  
Old 31.01.2017, 19:19
Teorax
Guest
 
Posts: n/a
Default Shellskript zum reconnecten

Hi,

mit minimalen Änderungen funktioniert das Shellskript von rbybbl bei mir einwandfrei.

Evtl. geht auch das AutoIt skript von rbybbl wieder (falls es nicht geht momentan, ich kann das nicht testen), wenn man:

Code:
nWANConnectStatus0
durch

Code:
WANConnectStatus0
ersetzt. Die zugehörige Zeile aus "$ROUTER_HOST/cgi/cgi_diagnostic.js?_tn=$ROUTER_TOKEN" lautet zumindest

Code:
addCfg("WANConnectStatus0", "00000000000", "Connected");
Ich hoffe, das hilft weiter.

Hier meine komplette reconnect.sh zum kopieren. Gestestet auf FW 1.01.30
Router IP und Passworthash müssen nach wie vor angepasst werden.

Code:
#!/bin/sh
### O2 Homebox 2 (6441) Reconnect/Reboot script ###

ROUTER_HOST="192.168.1.X"
PWD_HASH="PASSWORD_HASH"

#### HOW TO CREATE PASSWORD_HASH ####
# Hash your router password with an MD5 function and the resulting sum with a sha512 function.
# shell command is
#
#
# echo PASSWORD | md5sum | cut -f 1 -d " " | sha512sum | cut -f 1 -d " "
#
#
####


# send login post request
curl -s -d "pws=$PWD_HASH" "$ROUTER_HOST/login.cgi" > /dev/null

# get the token from index page and save as var
ROUTER_TOKEN=$(curl -s "$ROUTER_HOST/" | 	grep -ioP 'data:image/gif;base64,[a-z0-9+/]+///[a-z0-9+/]{31}\K([^"]+)' | base64 --decode)

# send reboot
#curl -d "action=ui_reboot&httoken=$ROUTER_TOKEN" "$ROUTER_HOST/apply_abstract.cgi"

# send disconnect post request
curl -s -d "action=wan_stop&httoken=$ROUTER_TOKEN" "$ROUTER_HOST/apply_abstract.cgi" > /dev/null

# to be sure
sleep 1

# send connect post request
curl -s -d "action=wan_start&httoken=$ROUTER_TOKEN" "$ROUTER_HOST/apply_abstract.cgi" > /dev/null

# wait for connected state
while true
do
    if curl -s "$ROUTER_HOST/cgi/cgi_diagnostic.js?_tn=$ROUTER_TOKEN" | grep -qiP '"WANConnectStatus0",\s?"?\d+"?,\s?"Connected"'; then
		break
    fi
	sleep 3
done

# send logout request
curl -s -d "" "$ROUTER_HOST/logout.cgi" > /dev/null
Es sind von mir bloss ein paar Kommentare eingefügt und der regex für den Connection Status marginal angepasst worden. Geht bestimmt noch besser aber es läuft.

Gruß
Reply With Quote
  #19  
Old 07.02.2017, 22:02
bumsbomber
Guest
 
Posts: n/a
Default

Hallo,

danke für euren Einsatz. Bei mir funktioniert das AutoIt-Script leider auch nicht, ich bekomme die Fehlermeldung "Login request failed" bei gesetztem Passwort. Wenn ich mir den Errorwert ausgeben lasse ist es 3 (= "could not receive response").

Ohne Passwort bekomme ich die Fehlermeldung "Token request failed".

Auch wenn ich nWANConnectStatus0 mit WANConnectStatus0 ersetze bekomme ich weiter den Login-Fehler (aber macht ja Sinn da der Reconnect ja ohne Login garnicht aufgerufen wird). Als Firmware wird bei mir übrigens 1.00(AAJG.0)D9b angezeigt.

Last edited by bumsbomber; 07.02.2017 at 22:26.
Reply With Quote
  #20  
Old 16.10.2017, 18:21
Boerny
Guest
 
Posts: n/a
Default

leider komme ich damit gar nicht klar,
bräuchte ausführlicher Hilfe - danke
Gruß Boerny
Reply With Quote
  #21  
Old 24.10.2017, 20:01
Haustür
Guest
 
Posts: n/a
Default

Hallo,

leider komme ich auch nicht so recht mit der Anleitung zu recht.
Habe eine Homebox 2 6441 mit der Fimware 1.01.30w

Hatte vorher für den alten Router eine *.bat Datei.

Ich habe das Ganze mit dem reconnect Assistenten versucht, da mir der Rest eher wie bömische Dörfer vorkommt, was leider nicht geklappt hat.

Wenn ich es denn richtig verstanden habe, wird bei dem Shellskript von Teorax das Passwort erst in md5 und das Ergebnis in sha512 umgewandelt und im Skript "PASSWORD_HASH" durch das Ergebnis ersetzt.

Das macht man alles im Texteditor und Speicher es dann einfach als *.sh Datei ab?

Und wie sag ich dann JD, dass es beim reconnect darauf zugreifen soll? Denn bei Auswahl der *.sh Datei über Drittanwender-Reconnect kommt die Meldung mit welchem Programm die Datei ausgeführt werden soll.

Wie ihr seht bin ich da eher der Typ ratlos und überfordert.

Hilfe wäre klasse

EDIT:
Habe die Methode von rbybbl jetzt in verwendung und es klappt klasse :-) Danke an der Stelle

Last edited by Haustür; 25.10.2017 at 04:30. Reason: Frage erledigt
Reply With Quote
  #22  
Old 29.10.2017, 08:05
Haustür
Guest
 
Posts: n/a
Default

Wird bei euch auch für jeden reconnet die*.exe neu geladen, so dass man dann irgend wann die Taskleist mit x-mal *.exe voll hat?
Bei mir führt das auch immer wieder zu dem Problem, dass der reconnet dann irgendwann nicht mehr geht und eine token Fehlermeldung auftritt.

Last edited by Haustür; 29.10.2017 at 17:20. Reason: Leider findet die Telefonverbindung an der Box nach dem reconnet sich nicht mehr, bedeutet, dass das Telefon tot ist und nur
Reply With Quote
  #23  
Old 29.10.2017, 17:20
Haustür
Guest
 
Posts: n/a
Default

Leider findet die Telefonverbindung an der Box nach dem reconnet sich nicht mehr, bedeutet, dass das Telefon tot ist und nur durch Stromlosschaltung wieder eien Telefonverbindung herstellbar ist.
Reply With Quote
  #24  
Old 04.12.2017, 02:04
sumyungguy sumyungguy is offline
Linkgrabbing Monster
 
Join Date: Sep 2012
Posts: 82
Default Verbesserte 6441 Skript für Linux, jetzt auch für Mac

Hier findest du meine verbesserte Version von rbybbls Skript:
  • funktioniert jetz auch mit OS X / macOS , sowie Linux
  • Router IP, Passworthash, und Skript-bearbeiten, sind nicht mehr erforderlich. Einfach das Passwort deines Router in die Parameter-box in JDownloader einstellen.
  • Anleitung inbegriffen, wenn du mein Deutsch nicht verstehst, versuch doch auf English

Here's my improved version of rbybbl's script:
  • now works with OS X / macOS, as well as Linux
  • Router IP, password hashes, and script-editing no longer needed, just put your router password in JDownloader's Parameters box
  • instructions included in German and English

Code:
#!/bin/bash

# O2 Homebox 6441 reconnect script for Linux and macOS

### Anleitung - Instructions ###

# Speicher als Textdatei ab, z.B.:
# Home->Documents->JDownloader->reconnect-6441.sh
# Ausführbar in Terminal machen:
#   cd ~/Documents/JDownloader
#   chmod 755 reconnect-6441.sh
# Test mit:
#   ./reconnect-6441.sh 'routerpasswort'
# JDownloader:
# Einstellungen->Reconnect->Reconnect Methode: Drittanwender-Reconnect
# "Auswählen" Button anclicken, reconnect-6441.sh finden und auswählen.
# Router admin Passwort in die Parameter box einstellen.
# "Test" Button anclicken.

# Save as text file, for example:
# Home->Documents->JDownloader: reconnect-6441.sh
# Make executable in Terminal:
#   cd ~/Documents/JDownloader
#   chmod 755 reconnect-6441.sh
# Test with:
#   ./reconnect-6441.sh 'routerpassword'
# JDownloader:
# Settings->Reconnect->Reconnect Method: External Tool Reconnect
# Click "Select" button, navigate to reconnect-6441.sh and select.
# Enter the router admin password in the Parameter box.
# Click the "Test" button.

### History ###
# original author: rbybbl 2016-06-01
# https://board.jdownloader.org/showpost.php?p=372164&postcount=6
#
# modified by sumyungguy 2017-12-02:
#   made macOS compatible
#   working shell commands to generate hash, for Linux and macOS
#   no user configuration of script necessary:
#      use "o2.box" as router address
#      calculate password hash from argument
#   change for firmware 1.01.30, thanks to Teorax
#   added instructions
#   prints status information during reconnect

print_status () {
	# report current connection status and IP address
	echo "status:"
	ROUTER_STATUS=$(curl -s "$ROUTER_HOST/cgi/cgi_diagnostic.js?_tn=$ROUTER_TOKEN" | grep -o -e '"WANConnectStatus0.*"' -e '"WAN_IP4_Addr0.*"')
	echo "$ROUTER_STATUS"
}

if [ "$#" -gt 1 ]; then
	echo "Reconnect O2 Homebox - usage: reconnect-6441.sh 'routerpass'"
	exit
fi

ROUTER_HOST="o2.box"
CLEARPASS="$1"

if [ -n "$CLEARPASS" ]; then
	UNAMESTR=$(uname)
	if [ "$UNAMESTR" = "Darwin" ]; then
		ROUTER_PASS=$(printf "$CLEARPASS" | md5 | tr -d '\n' | shasum -a 512 | tr -d ' -')
	else
		ROUTER_PASS=$(printf "$CLEARPASS" | md5sum | tr -d '\n -' | shasum -a 512 | tr -d ' -')
	fi
	echo "Router Pass Hash: \n$ROUTER_PASS"
	echo "einloggen - logging in"
	if [ $(curl -s -d "pws=$ROUTER_PASS" "$ROUTER_HOST/login.cgi" | wc -c) -eq 0 ]; then
		echo "login gescheitert: falsches Passwort oder mit Webbrowser noch eingeloggt?"
		echo "login failed: wrong password or logged in with web browser?"
		exit 1
	fi
else
	echo "Warnung: kein Passwort - warning: no password"
fi

# get the token from index page and save as var
ROUTER_TOKEN=$(curl -s "$ROUTER_HOST/" | perl -nle 'print $& if m{data:image/gif;base64,[A-Za-z0-9+/]+///[A-Za-z0-9+/]{31}\K([^"]+)}' | base64 --decode)
echo "router token: $ROUTER_TOKEN"
print_status

# send disconnect post request
echo "WAN stop"
curl -s -d "action=wan_stop&httoken=$ROUTER_TOKEN" "$ROUTER_HOST/apply_abstract.cgi" > /dev/null
sleep 6
print_status

# send connect post request
echo "WAN start"
curl -s -d "action=wan_start&httoken=$ROUTER_TOKEN" "$ROUTER_HOST/apply_abstract.cgi" > /dev/null
sleep 6
print_status

# wait for connected state
while true
do
	if echo "$ROUTER_STATUS" | grep -Eqi '"WANConnectStatus0", "[0-9]+", "Connected"'; then
		break
	fi
	sleep 6
	print_status
done

if [ -n "$CLEARPASS" ]; then
	# send logout request
	echo "logout"
	sleep 2
	curl -s -d "" "$ROUTER_HOST/logout.cgi" > /dev/null
fi

Last edited by sumyungguy; 04.12.2017 at 02:33.
Reply With Quote
  #25  
Old 04.12.2017, 13:45
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 80,212
Default

@sumyungguy: Thanks for the script. It should be possible to use Liveheader script to do the same and not require any batch/curl.
I can see login request, parsing of token and then send requests.
You should be able to transform this into a Liveheader script easily
__________________
JD-Dev & Server-Admin
Reply With Quote
  #26  
Old 05.12.2017, 04:22
sumyungguy sumyungguy is offline
Linkgrabbing Monster
 
Join Date: Sep 2012
Posts: 82
Default

@Jiaz I was going by what the original author rbybbl said:
Quote:
Mit Live-Headers-Script geht es leider nicht, da JD keine Möglichkeit bietet eine base64-Zeichenkette zu entschlüsseln :(
In the past I've used the Reconnect Recorder, which was very easy. The problem is when I use my browser on the new router, there's no disconnect option in the web interface. Using curl in rbybbl's script, it seems to access some kind of "expertenmodus" page, but I don't know how to get that in my browser. So I'd have no idea how to manually write a Live Headers script for a page that I can't even see...??

I don't know how rbybbl figured it all out. Basically I just adapted his script to work on macOS (which doesn't support grep -P and some other things), and while I was at it I automated the password hash calculation. But otherwise I don't understand very well how it's all working. If there's something obvious I'm missing, please let me know, thanks.
Reply With Quote
  #27  
Old 02.04.2018, 01:46
IamALoony
Guest
 
Posts: n/a
Default working batch reconnect (Perl)

Thanks to rbybbl and others before, I wrapped the knowledge into a Perl script (reconnect_6441.pl).
On most systems Perl is either readily available or it can be easily installed.
  1. Place the code below into a file named reconnect_6441.pl and put it into any place you like.
  2. Configure JD reconnects to do
    method: external batch
    interpreter: 'cmd /c' (e. g. on windows)
    script: perl -- .\reconnect_6441.pl <password hash>
    start in: <path to reconnect_6441.pl>
See the code comments to obtain your <password hash>.

https: //pastebin.com/0ctzg1FY

Last edited by raztoki; 09.04.2018 at 01:33.
Reply With Quote
  #28  
Old 21.06.2018, 20:00
Haustür
Guest
 
Posts: n/a
Default

Bis vor kurzem hat bei mir das UPNP universal plug and play fritzbox funktioniert, ohne den Router so zu trennen, dass die Telefonverbindung annricht.
Jetzt habe ich die Firmware Version 1.00(AAJG.0)D14b und eine neue Homebox 2 6641 mit isdn-Anschluß und 3 Lan-Buchsen erhalten womit das leider so nicht mehr geht.
Per Liveheader wurde eine Möglichkeit gefunden, wobei wohl die Box vom Strom getrennt wird und neu startet., dauert recht lange mit 3,5 Min. und die Telefonverbindung trennt sich natürlich auch.
Gibt es da eine für einen Laien gut verständliche Alternative?

Gruß

Leider funktioniert keine der hier geposteten Möglichkeiten mit der Fimwareversion.
Mit AutoIT bricht es mit einer Fehlermeldung ab.
Das Shellscript und das Perlscript können leider auch keinen reconnect erzeugen, wobei ich mir da nicht ganz sicher bin ob ich das mal richtig gemacht habe da ich kein passwort an der Box verwende (hab auch mal die Eintragung mit dem Passwort aus den Scripts gelöscht, hatte aber auch keinen Erfolg).

Last edited by Haustür; 23.06.2018 at 19:17.
Reply With Quote
  #29  
Old 05.01.2019, 00:36
sumyungguy sumyungguy is offline
Linkgrabbing Monster
 
Join Date: Sep 2012
Posts: 82
Default

For some reason my shell script (above) stopped working today, I don't know what changed, but there seems to be a problem getting the status, though the other parts work.

But rather than spending time to debug it, I tried the perl script from IamALoony, which works well - thanks for that! I couldn't get it to work as an External Batch command on my Mac, so instead I made it executable with:

chmod u+x reconnect_6441.pl

Then I used External Tool Reconnect, and put the full path to the script (including the script name), eg. /Users/sumyungguy/Documents/scripts/reconnect_6441.pl
Then put the password hash, calculated as described, in the Parameter box.

Btw., you can also calculate the password hash with this command on the Mac:

printf 'yourrouterADMINpassword' | md5 | tr -d '\n' | shasum -a 512 | tr -d ' -'

Or on Linux:

printf 'yourrouterADMINpassword' | md5sum | tr -d '\n -' | shasum -a 512 | tr -d ' -'
Reply With Quote
  #30  
Old 21.07.2019, 09:55
calisto321
Guest
 
Posts: n/a
Default help compiling this script please

Hi, I found this c# script on the Internet **External links are only visible to Support Staff****External links are only visible to Support Staff** but when I try to compile it I get 3 error Messages. anyone know what is wrong?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HomeBox6441_Reboot
{
class Program
{

private static bool completed;
private static WebBrowser browser;

[STAThread]
static void Main(string[] args)
{
var start = DateTime.UtcNow;
browser = new WebBrowser();
browser.Navigate("**External links are only visible to Support Staff**);

browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);

while (!completed)
{
Application.DoEvents();
Thread.Sleep(1);
}

// override javascript window confirm function to return always true
var head = browser.Document.GetElementsByTagName("head")[0];
var script = browser.Document.CreateElement("script");
script.SetAttribute("type", "text/javascript");
script.SetAttribute("text", "window.alert = function () { }; window.confirm=function () { return true; }; ");
head.AppendChild(script);

// click the 'Neu starten' button
HtmlElementCollection elemenets = browser.Document.All;

foreach (HtmlElement e in elemenets)
{
if (e.GetAttribute("value") != null && e.GetAttribute("value").Equals(("Neu starten")))
{
e.InvokeMember("Click");
Console.WriteLine("Clicked");
break;
}
}

while(start.AddSeconds(10) > DateTime.UtcNow)
{
Application.DoEvents();
Thread.Sleep(1);
}

}

static void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
Console.WriteLine(browser.Document.Body.InnerHtml);
completed = true;
}

}
}
Reply With Quote
  #31  
Old 12.10.2021, 15:31
sumyungguy sumyungguy is offline
Linkgrabbing Monster
 
Join Date: Sep 2012
Posts: 82
Default

Since the latest firmware update a few weeks ago, the reconnect perl script no longer works :-( According to the message in the o2 forum from "o2_Giulia", the function to obtain a new IP number is no longer available:
Quote:
all o2 Homeboxes 2 with the designation 6441 have indeed recently received a new software update. I regret that the function you requested is no longer available. However, the IP can still be changed via the reset. Please let us know if you have any questions about this.
( The discussion is at hilfe (dot) o2online (dot) de / router-software-internet-telefonie-34/internet-reconnect-mit-o2-homebox-6441-574206 )

By "reset", she means power off and on, which takes several minutes, and can't be done automatically. So, things don't look good for using this router with JDownloader anymore. Unless Giulia is wrong, and someone can figure out how to reset the IP number from a script, probably a different modem/router would be needed. Does anyone have a suggestion for an off-the-shelf one that works with o2, and has a good reset script?

Last edited by sumyungguy; 12.10.2021 at 15:34.
Reply With Quote
  #32  
Old 12.10.2021, 16:04
pspzockerscene's Avatar
pspzockerscene pspzockerscene is online now
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 71,724
Default

Well you can always script it!

And if it seems to be 100% impossible, get a smart-plug (nasty workaround...) and restart that via script although I don't know if it is very good for the router to be hard-reset this way.

By the way our core team is from germany so you can also talk to us in german if preferred

-psp-
__________________
JD Supporter, Plugin Dev. & Community Manager

Erste Schritte & Tutorials || JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +2. The time now is 12:49.
Provided By AppWork GmbH | Privacy | Imprint
Parts of the Design are used from Kirsch designed by Andrew & Austin
Powered by vBulletin® Version 3.8.10 Beta 1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.