Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 20 von 42

Thema: automatisierte meinhotspot.com Anmeldung durch die Fritzbox.

  1. #1
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397

    automatisierte meinhotspot.com Anmeldung durch die Fritzbox.

    In der Hoffnung auf mehr Resonanz zu treffen, poste ich den Thread auch mal in dieser Kategorie, der Thread kann man löschen:
    http://www.ip-phone-forum.de/showthread.php?t=291980

    Folgendes:
    Meine FB 7490 hat ein freetz installiert über das es eine openvpn Verbindung aufbaut worüber auch die Telefonie läuft.

    Bin für etwas mehr als einen Monat geschäftlich untergebracht wo das Internet durch meinhotspot.com bereitgestellt wird.
    Alle 2 Stunden muss man erneut die Nutzungsbedingungen akzeptieren...

    Unter http://192.168.11.1/status kann man nachsehen wie viel Zeit noch vergeht bis man erneut akzeptieren muss.

    Code:
    <html>
    <head>
    <title>mikrotik hotspot > status</title>
    
    <meta http-equiv="refresh" content="60">
    
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="expires" content="-1">
    <style type="text/css">
    <!--
    textarea,input,select {
        background-color: #FDFBFB;
        border: 1px #BBBBBB solid;
        padding: 2px;
        margin: 1px;
        font-size: 14px;
        color: #808080;
    }
    
    .tabula{
     
    border-width: 1px; 
    border-collapse: collapse; 
    border-color: #c1c1c1; 
    background-color: transparent;
    font-family: verdana;
    font-size: 11px;
    }
    
    body{ color: #737373; font-size: 12px; font-family: verdana; }
    
    a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 12px; }
    a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; }
    img {border: none;}
    td { font-size: 12px; padding: 4px;}
    
    -->
    </style>
    <script language="JavaScript">
    <!--
    
        function openLogout() {
        if (window.name != 'hotspot_status') return true;
            open('http://192.168.11.1/logout', 'hotspot_logout',  'toolbar=0,location=0,directories=0,status=0,menubars=0,resizable=1,width=280,height=250');
        window.close();
        return false;
        }
    //-->
    </script>
    </head>
    <body bottommargin="0" topmargin="0" leftmargin="0" rightmargin="0"
    
    >
    <table width="100%" height="100%">
    
    <tr>
    <td align="center" valign="middle">
    <form action="http://192.168.11.1/logout" name="logout" onSubmit="return openLogout()">
    <table border="1" class="tabula">
    
        <br><div style="text-align: center;">Welcome MacAdresse!</div><br>
    
        <tr><td align="right">IP address:</td><td>192.168.11.15</td></tr>
        <tr><td align="right">bytes up/down:</td><td>14.1 MiB / 78.4 MiB</td></tr>
    
        <tr><td align="right">connected / left:</td><td>1h2m34s / 57m26s</td></tr>
    
    
        <tr><td align="right">status refresh:</td><td>1m</td>
    
    
    </table>
    
    </form>
    
    </td>
    </table>
    </body>
    </html>
    Ist die Zeit abgelaufen wird die Seite http://connect.meinhotspot.com/de/client/welcome aufgerufen.
    Dort muss man ein als Button getarntes Formular abschicken.
    Code:
    <!DOCTYPE html><html class="no-js">
    
    <head data-url="/welcome-page-prototype">
        <meta charset="utf-8">
    
        <title>MeinHotspot - Wireless Captive Portal</title>     <link href="/img/favicon/MeinHotspot.png" rel="shortcut icon"  type="image/vnd.microsoft.icon">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="HandheldFriendly" content="True">
    <meta name="cleartype" content="on">
    <meta name="robots" content="NOINDEX,NOFOLLOW">
    <meta name="copyright" content="meinhotspot.com">
    <meta name="publisher" content="meinhotspot.com">
    <meta name="keywords" content="meinhotspot.com">
    <meta name="Content-type" content="text/html; charset=UTF-8">
    <meta name="Content-style-type" content="text/css">
        <script>
            document.getElementsByTagName( 'html' )[0].className += ' js';
            document.getElementsByTagName( 'html' )[0].className =  document.getElementsByTagName( 'html' )[0].className.replace( 'no-js',  '' );
        </script>
    
        <link href="/img/favicon/MeinHotspot.png" rel="shortcut icon" type="image/vnd.microsoft.icon">
    <link href="/img/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon">
    <link href="/themes/meinhotspot/css/style.css" media="screen" rel="stylesheet" type="text/css">
                <style type="text/css">
            /**
         * background-color
         */
        html,
        body {
            background-color: #EEEEEE !important;
            color: #344938 !important;
        }
    
        /*.backgroundimage {*/
            /*display: none !important;*/
        /*}*/
    
        /**
         * branding color used for buttons etc.
         */
        .richtext a {
            border-bottom-color: #308330;
        }
    
        .richtext a:hover,
        .richtext a:focus {
            border-bottom-color: #11B711;
        }
    
        .form-item--terms > p > a {
            border-bottom-color: #308330;
        }
    
        .form-item--terms > p > a:hover,
        .form-item--terms > p > a:focus {
            border-bottom-color: #11B711;
        }
    
        .button--primary,
        .form-input--submit {
            background-color: #308330;
        }
    
        .nav-item--login.current::before {
            background-color: #11B711;
        }
    
        .box.box--secondary.box--security {
            background-color: #308330;
        }
    
        .form-input--submit.facebook {
            background-color: #3B5998 !important;
        }
    
    </style>    
        
        </head>
    
    <body class="
        has-image    "
    >
    
    
    <section class="head" role="banner" id="head">
        <div class="shell">
    
            <h1 class="custom">
                <a href="/de/client/welcome" title="MeinHotspot">
                    <img src="/img/mh-logo.png" class="header" title="MeinHotspot" alt="MeinHotspot">
                </a>
            </h1>
    
            
    <nav id="languageToggle" class="languageToggle nav--languages" data-toggle-target="true">
    
        <a href="#" class="nav-toggle--languages german" data-toggle="true">Deutsch</a>
        <div class="nav-dropdown--languages">
    
            
                <a href="/de/client/welcome" class="nav-item--languages german">Deutsch</a>
            
                <a href="/en/client/welcome" class="nav-item--languages english">Englisch</a>
            
                <a href="/fr/client/welcome" class="nav-item--languages french">Français</a>
            
                <a href="/cz/client/welcome" class="nav-item--languages czech">Čeština</a>
            
                <a href="/hr/client/welcome" class="nav-item--languages hungarian">Magyar</a>
            
                <a href="/po/client/welcome" class="nav-item--languages polish">Polskie</a>
            
                <a href="/ro/client/welcome" class="nav-item--languages romanian">Român</a>
            
                <a href="/it/client/welcome" class="nav-item--languages italian">Italiano</a>
            
                <a href="/ru/client/welcome" class="nav-item--languages russian">русский язык</a>
            
                <a href="/tr/client/welcome" class="nav-item--languages turkish">Türkçe</a>
                </div>
    </nav>
        </div>
    </section><!-- /.head -->
    <section class="content" role="main" id="content">
        <div class="shell">
            <div class="grid-container">
                
                    <div class="main grid-8of12 grid-right">
                        <div class="box box--userinput">
                
    
                        <div class="userimage has-image ">
        <img src="/img/mh_image.jpg" class="userimage-image">
    </div>
    
    <h2>
        Willkommen bei MeinHotspot
    </h2>
    
    <div class="box-content richtext">
        MeinHotspot bietet einen Zugang zum Internet an öffentlich  zugänglichen Plätzen wie z.B. Restaurants, Cafes, Bars, Hotels und  vielen anderen Orten an. Mit einem drahtlosen Gerät haben Sie über jeden  MeinHotspot kostenlosen Zugang zum Internet.
    </div>
                    </div>
                    </div>
                                    <div class="aside grid-4of12 grid-left">
                        <a href="#login"></a>
                        <div class="box box--secondary" id="login">
        <h3 class="box-title box-title--secondary">
            Kostenloses Internet
        </h3>
    
        <div class="box-content box-content--secondary richtext">
            <p>
                Mit dem Klick auf &quot;kostenfrei anmelden&quot; akzeptieren Sie die
                <a href="/de/client/policy">Nutzungsbedingungen</a>
            </p>
    
            <p>
                
    
    
    
        <form name="login" action="http://192.168.11.1/login" method="post" id="registerForFree">
            <input type="hidden" name="dst" value="http://connect.meinhotspot.com/de/client/redirect" />
            <input type="hidden" name="popup" value="true" />
            <input name="username" value="macadresse"  type="hidden" />
            <input value="macadresse" name="password" type="hidden"/>
            <input name="mac" type="hidden" value="macadresse"  />
            <button type="submit" class="form-input form-input--submit">
                kostenfrei anmelden        </button>
        </form>
    
            </p>
        </div>
    </div>
                        
                        <div class="box box--secondary box--security">
                            <h3 class="box-title box-title--secondary">
                                Hier surfen Sie sicher                        </h3>
    
                            <div class="box-content box-content--secondary">
                                <ul class="checklist checklist--security">
                                    <li class="checklist-item">
                                        Virenschutz                                </li>
                                    <li class="checklist-item">
                                        Firewall                                </li>
                                    <li class="checklist-item">
                                        Geräteschutz                                </li>
                                </ul>
                            </div>
                        </div>
                    </div>
                            </div>
        </div>
    </section><!-- /.content -->
    
    
    <section class="footer" id="footer">
        
            <div class="footer--1">
                <div class="shell">
                    <p>
                        mit <strong>MeinHotspot</strong> kostenlos und sicher ins Internet. <a href="http://meinhotspot.com" class="button button--footer">mehr erfahren</a>
                    </p>
                </div>
            </div>
            <div class="footer--2">
            <div class="shell">
                <nav class="nav--footer">
                    
                        <a href="http://meinhotspot.com" class="nav-item--footer">
                            Über MeinHotspot                    </a>
                                    <a href="/de/client/policy"  class="nav-item--footer">
                        Nutzungsbedingungen                </a>
    
                    <a href="/de/client/privacy"  class="nav-item--footer">
                        Datenschutz                </a>
    
                    <a href="/de/client/imprint"  class="nav-item--footer">
                        Impressum                </a>
    
                </nav>
            </div>
        </div>
    </section><!-- /.footer -->
    
    
        <img src="/img/mh_image.jpg" class="backgroundimage">
    
    
    
    <script type="text/javascript" src="/themes/meinhotspot/js/critical.min.js"></script>
    <script type="text/javascript" src="/js/jquery-2.2.0.min.js"></script>
    <script type="text/javascript">
        //<!--
        jQuery.noConflict();
        //-->
    </script>
    <script type="text/javascript" src="/js/mootools.js"></script>
    <script type="text/javascript" src="/js/compressed-js.js"></script><script type="text/javascript">
        //<!--
                if( !Modernizr.mq( Globals.get( 'mediaQuery' ) ) && location.hash !== '' ) {
                setTimeout( function() {
                    location.hash = '';
                    window.scrollTop = 0;
                }, 1 );
            }
        
        //-->
    </script>
    <script type="text/javascript">
        //<!--
        window.addEvent('keydown', function(oEvent) {
    
        if (oEvent.key == 'e' && (true == oEvent.meta || true == oEvent.control)) {
    
            reloadCss();
        }
    });
    
    function reloadCss() {
    
        document.getElements('link').each(function(el) {
    
            if(el.get('rel').toLowerCase().indexOf('stylesheet') >= 0 && null !== el.get('href')) {
        
                var href = el.get('href').replace(/(&|%5C?)forceReload=\d+/, '');
                el.set('href', href + ((href.indexOf('?') >= 0) ? '&' : '?' ) + 'forceReload=' + (new Date().valueOf()));
            }
        });
    };
    
        //-->
    </script></body>
    </html>
    Hat jemand eine Idee wie ich die Fritz!Box damit beauftragen kann das Formular automatisch abzuschicken? (leider post und kein get...)

  2. #2
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.257
    Zitat Zitat von JokerGermany Beitrag anzeigen
    (leider post und kein get...)
    Die Frage treibt mich zwar seit knapp einer Woche schon um, ich traute mich aber bisher nicht, da mal nachzufragen ... was macht das eigentlich genau für einen Unterschied?

    Erstens kann man ja auch problemlos selbst einen POST-Request erzeugen ... die Wege gehen von "curl" über die GNU-Version für "wget" bis zu "low level" mittels "nc", wie es z.B. juis_check macht.

    Zweitens gibt es genug Web-Applikationen, wo ohnehin die Parameter aus POST- und GET-Requests zusammengeworfen werden und im Anschluß "einheitlich" verarbeitet werden können. Solange so ein Formular also keinen speziellen "Content-Type" verwendet (wie es z.B. beim Upload von Dateien der Fall wäre), gibt es gute Chancen, daß man auch einen passenden GET-Request erzeugen kann ... das ist dann eine Frage des Versuchs. Wenn das tatsächlich nicht funktioniert, kann man sich immer noch weitere Gedanken machen und ggf. wieder auf "erstens" zurückkommen.

    Ohne Zugriff auf eine solche "meinhotspot.com"-Installation wird man das aber ohnehin kaum testen können ... zumindest sieht es nicht so aus, als würden dort dynamische Inhalte der Anmeldeseite berücksichtigt (Cookies oder Nonce-Values oder Captchas); das sollte es wirklich simpel machen, die Status-Seite regelmäßig aufzurufen, dort die verbleibende Zeit auszulesen und dann entweder das Login-Formular schon vor Ablauf der Zeit noch einmal aufzurufen (wenn das machbar ist, dafür braucht man auch wieder den Zugriff auf so einen Node, um das zu testen) oder sich per "crontab" einen Job zu generieren, der das in der Minute nach dem Ablauf der alten Verbindungszeit automatisch erledigt.

    Irgendwie sehe ich das Problem nicht so richtig ... das Ekligste dürfte der Test so einer Lösung sein, wenn man immer die zwei Stunden bis zum Ablauf einer Sitzung warten muß oder will.

  3. #3
    IPPF-Einsteiger
    Registriert seit
    08.03.2017
    Beiträge
    1

    Manueller Logout zum testen

    Das testen lässt sich vereinfachen:unter http://192.168.11.1/logout (in neuren Versionen login.meinhotspot.com/logout) kann der Logout manuell erfolgen.Das Force-Disconnect ist leider nötig, da sonst einige Nutzer munter Ihre Torrent-Clients laufen lassen. Ggf. kann man aber auch über eine Erhöhung des Zeitfensters nachdenken.Wir sind da sehr an Nutzermeinungen interesisert. Was wäre Ihrer Meinung nach denn noch akzeptabel?Max Pohl / MeinHotspot

  4. #4
    IPPF Fünftausend-Club
    Registriert seit
    28.10.2010
    Ort
    NRW
    Beiträge
    5.125
    Wie wäre es den Datenverkehr der User nicht zu manipulieren?

  5. #5
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    Zitat Zitat von PeterPawn Beitrag anzeigen
    Die Frage treibt mich zwar seit knapp einer Woche schon um, ich traute mich aber bisher nicht, da mal nachzufragen ... was macht das eigentlich genau für einen Unterschied?

    […]

    Irgendwie sehe ich das Problem nicht so richtig ... das Ekligste dürfte der Test so einer Lösung sein, wenn man immer die zwei Stunden bis zum Ablauf einer Sitzung warten muß oder will.
    Wie ja „meinhotspot“ schon geschrieben hat, kann man sich ausloggen.
    Kannte und habe dafür immer http://192.168.11.1/logout genutzt.
    In der Regel liegen nämlich 200Kbits an, manchmal geht es auch kurzzeitig auf 500Kbit/s an und wenn man dann ein Telefon Backup vom heimischen Nas mit 1,5GB Dateien (TWRP Backup) rüber ziehen muss, dann muss man das schon genauer timen, damit genau innerhalb der 2Stunden der Download auch fertig war…

    Also Logout, Login und dann rsync nochmal anstoßen XD.
    Hatte schon überlegt erstmal nen Greasemonkey Skript zu schreiben, aber wäre schon schön, wenn die Fritz!Box das könnte...
    Sitze nämlich seit Montag daran mein Backup aus der Heimat rüber zu schaufeln... -__-


    @ob POST und GET ist eigentlich egal:

    Ich habe von der ganzen CURL Geschichte leider wenig Ahnung, aber das denke bzw. dachte ich mir dabei:
    Bei GET kann könnte man ja einfach einmal ein logout initiieren und dann einfach einen http Befehl absetzen:
    http://192.168.11.1/login?dst="http://connect.meinhotspot.com/de/client/redirect"&popup="true"&username="macadresse"&macad resse="password"&mac="macadresse"
    (Quick and Dirty, ohne kontrolliert zu haben wie es tatsächlich müsste^^)
    Das so zu übergeben kommt dann beim Server als
    $_POST['dst']=http://connect.meinhotspot.com/de/client/redirect an.
    Bei Get kommt es als $_GET an. Das heißt den URL Befehl von oben kann man bei $_GET nicht absetzen.
    Aber wie gesagt, habe davon wenig Ahnung, bin aber am überlegen mich damit rum zu schlagen, weil ich mit der derzeitigen Situation noch mindestens einen Monat zurecht kommen muss…

    Wollte deswegen erstmal hier fragen, weil es dafür vielleicht schon Lösungen gibt oder ich Tipps bekomme, wie ich, als jemand der eigentlich nur html, php, und shell- und batchskripte halbwegs kann, die Sache am besten angehen sollte...

    Zitat Zitat von meinhotspot Beitrag anzeigen
    Das testen lässt sich vereinfachen:unter http://192.168.11.1/logout (in neuren Versionen login.meinhotspot.com/logout) kann der Logout manuell erfolgen.Das Force-Disconnect ist leider nötig, da sonst einige Nutzer munter Ihre Torrent-Clients laufen lassen. Ggf. kann man aber auch über eine Erhöhung des Zeitfensters nachdenken.Wir sind da sehr an Nutzermeinungen interesisert. Was wäre Ihrer Meinung nach denn noch akzeptabel?Max Pohl / MeinHotspot
    Also mal abgesehen, dass Echtzeitanwendungen wie VOIP oder Online-Gaming über ihren Hotspot eine Qual ist. Wäre es schon schön, wenn das Teil eine längere Nacht übersehen könnte, damit z.B. Telefoniefunktionen aufrecht erhalten werden könnte.
    -> 14 Stunden.

    Die Konkurrenz, z.B. Telekom schaltet übrigens erst nach 24 Stunden ab.

    Am schönsten wäre natürlich wenn nicht alle in Sippenhaft genommen werden würden.
    Einmal anmelden und fertig und sollte derjenige auffälligen Traffic* hat, dann fängt das System an genau diesen Nutzer nach und nach ein LogIn Formular vor zu setzen.

    *auffälliger Traffic:
    Kann man z.B. von den genutzten Ports abhängig machen, also 21, 80, 1194, 8080, 443 ist ok und beim Rest wird geschaut wie viel wird über diesen Port übertragen und wenn eine Schwelle mehrfach gerissen wird, wird er ausgeloggt.
    Aber selbst das finde ich grenzwertig, da z.B. selbst Torrents nicht unbedingt illegal sein müssen
    Geändert von JokerGermany (09.03.2017 um 15:18 Uhr)

  6. #6
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.257
    @JokerGermany:
    Unter PHP (ich nehme mal an, daß Du darauf hinaus wolltest mit $_GET und $_POST) gäbe es aber auch noch eine automatische globale Variable namens $_REQUEST, die dann eben genau den Inhalt von $_GET und $_POST (und $_COOKIE) aggregiert. Wenn das wirklich PHP-Seiten sein sollten bei meinhotspot.com (erste Annahme), dann wäre die zweite Unbekannte eben immer noch, über welche dieser globalen (assoziativen) Array-Variablen der Programmierer dort nun genau auf die Werte aus dem Request zugreift. Macht er das eben über $_REQUEST, gibt es gar keinen Unterschied ... das ist genau das, was ich unter "zweitens" beschrieben habe. Wobei diese "einheitlichen Wege" des Zugriffs auf solche Variablen (egal ob die nun per POST- oder per GET-Request gesetzt wurden) auch in anderen Umgebungen als PHP machbar sind und häufig genug von irgendwelchen Frameworks auch entsprechend implementiert werden.

    Es braucht auch - wie bereits geschrieben - kein "curl" (das ist ja ein Client für HTTP (und andere Protokolle) und keine Programmierumgebung oder gar ein Server), um einen POST-Request zu erzeugen (so denn wirklich einer vonnöten wäre) ... das geht auch anders und hat zumindest den Vorteil, daß man sich nicht noch erst ein passendes "curl" (zusammen mit den passenden Libs bzw. als statisch gelinktes Binary, was dann (wegen des großen Funktionsumfangs) auch wieder eine recht erhebliche Größe aufweist) für die FRITZ!Box besorgen muß ... so ein simpler POST-Request ist mit ein paar Zeilen Text in einer HTTP-Verbindung erledigt (noch mal: ein Beispiel wäre juis_check, das setzt sogar einen SOAP-Request per POST ab - weil es eben nur den einen braucht und eigentlich vom Inhalt - von SOAP bis XML - gar keine Ahnung hat).

  7. #7
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    Danke, werde mir mal juis-Check anschauen

    - - - Aktualisiert - - -

    Zitat Zitat von meinhotspot Beitrag anzeigen
    (in neuren Versionen login.meinhotspot.com/logout) kann der Logout manuell erfolgen.
    login.meinhotspot.com existiert nicht

    @juis-Check:
    Das wird harte Arbeit für mich da durch zu steigen, hut ab vor deinen shell Kenntnissen...

    - - - Aktualisiert - - -

    So, ich hab mal was zusammengefuscht:

    Code:
    #! /bin/sh
    minute=`wget -q -O- 192.168.11.1 | grep "s</td" | sed 's/<[^>]*>//g' | sed 's/\t//g' | cut -f2 -d"h" | cut -f1 -d"m"`
    #echo $minute
    if [ $minute -lt 10 ]
    then
    echo "weniger als 10 Minuten"
    wget -qO- 192.168.11.1/logout &>/dev/null
    else
    echo "mehr als 10 Minuten"
    fi
    Jetzt fehlt noch das schwierigste, der login^^

    Was sollte am besten passieren, wenn es bis zum disconnect noch länger als 10 Minuten sind?

    - - - Aktualisiert - - -

    @PeterPawn:
    Mein nc Befehl funktioniert nicht, kannst du mir helfen?

    Heute gab es auch nen paar Änderungen bei mir im Netzwerk.
    Das mein Netz ist jetzt nen anderes, als dass des status Servers und login.meinhotspot.com/status bzw logout funktioniert jetzt.

    Wenn ich mich mit Firefox einlogge gebe ich folgenden Header weiter:
    Code:
    POST /login HTTP/1.1 
    Host: login.meinhotspot.com 
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    Accept-Language: en-US,en;q=0.5 
    Accept-Encoding: gzip, deflate, br 
    Referer: https://connect.meinhotspot.com/en/client/welcome 
    Connection: keep-alive 
    Upgrade-Insecure-Requests: 1 
    Content-Type: application/x-www-form-urlencoded 
    Content-Length: 183
    dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%XXXX%XXXX%XXXX%XXXX%XXXX&password=XX%XXXX%XXXX%XXXX%XXXX%XXXX&mac=XX%XXXX%XXXX%XXXX%XXXX%XXXX
    Das was ich gebastelt habe:
    Code:
    #!/bin/sh
    BODY="dst=http%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&&username=XX%XXXX%XXXX%XXXX%XXXX%XXXX&password=XX%XXXX%XXXX%XXXX%XXXX%XXXX&mac=XX%XXXX%XXXX%XXXX%XXXX%XXXX"
    echo -ne "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 182\r\n\r\n\${BODY}" | nc -i 1 login.meinhotspot.com 80
    Die Webseite ist auf einmal https verschlüsselt, muss ich also über den Port 443 gehen?

    Wenn ich über Port 80 gehe:
    Code:
    HTTP/1.0 503 unknown method
    Connection: close
    Content-Length: 119
    Date: Fri, 10 Mar 2017 17:01:34 GMT
    Expires: 0
    
    <html>
    <head><title>Error 503: unknown method</title></head>
    <body>
    <h1>Error 503: unknown method</h1>
    </body>
    </html>
    Wenn ich über Port 443 gehe, bekomme ich keine Antwort...
    Aber ich glaube da muss ich dann anders rangehen, oder? ist TLS 1.2
    Geändert von JokerGermany (10.03.2017 um 18:13 Uhr)

  8. #8
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.257
    @JokerGermany:
    Lies Dir mal einfach noch einmal das von Dir Geschriebene durch und versuche bitte, Dich in meine Lage zu versetzen.

    Ich verstehe überhaupt nicht, was Du da gerade veranstaltest ... für die "CODE"-Boxen fehlt irgendwie jeder Kontext (für jemanden, der den Beitrag nicht geschrieben hat), was das eigentlich sein soll bzw. was da gerade passiert.

    Warum und was bei Deinem "nc" da nicht funktionieren soll (Ist es das aus der BusyBox oder ein gesondertes? Was geht denn genau nicht, d.h. welche Fehlermeldung erhältst Du?), kann ich auch nicht einfach erraten.

    Wenn da jetzt tatsächlich TLS verwendet wird (Wie kommt das von einem Tag auf den anderen?), dann brauchst Du entweder ein passendes Binary als Wrapper (die Möglichkeiten gehen von "OpenSSL" mit "s_client"-Funktion bis "stunnel") oder Du nimmst dann doch gleich ein passend übersetztes "curl", das kann TLS von Hause aus.

  9. #9
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    Zitat Zitat von PeterPawn Beitrag anzeigen
    @JokerGermany:
    Warum und was bei Deinem "nc" da nicht funktionieren soll (Ist es das aus der BusyBox oder ein gesondertes? Was geht denn genau nicht, d.h. welche Fehlermeldung erhältst Du?), kann ich auch nicht einfach erraten.
    Der Skript läuft momentan unter unter Ubuntu Mate 16.04 im Terminal eingegeben.
    Also erstmal nur der Login.

    Das ist das Skript, dass ich ausführe:
    Code:
    #!/bin/sh BODY="dst=http%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&&username=XX%XXXX%XXXX%XXXX%XXXX%XXXX&password=XX%XXXX%XXXX%XXXX%XXXX%XXXX&mac=XX%XXXX%XXXX%XXXX%XXXX%XXXX"
    echo -ne "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 182\r\n\r\n\${BODY}" | nc -i 1 login.meinhotspot.com 80
    Ich habe den Anmeldevorgang mit dem Firefox auch mit dem Addon Live HTTP Header mitgeschnitten:
    Code:
    POST /login HTTP/1.1 
    Host: login.meinhotspot.com 
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    Accept-Language: en-US,en;q=0.5 
    Accept-Encoding: gzip, deflate, br 
    Referer: https://connect.meinhotspot.com/en/client/welcome 
    Connection: keep-alive 
    Upgrade-Insecure-Requests: 1 
    Content-Type: application/x-www-form-urlencoded 
    Content-Length: 183
    dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%XXXX%XXXX%XXXX%XXXX%XXXX&password=XX%XXXX%XXXX%XXXX%XXXX%XXXX&mac=XX%XXXX%XXXX%XXXX%XXXX%XXXX

    Die letzte Zeile habe ich in das oben genannte Skript übernommen.

    Wenn ich das Skript, wie im Quellcode zu sehen über Port 80 ausführe, sehe ich im Terminal folgende Rückmeldung:
    Code:
    HTTP/1.0 503 unknown method
    Connection: close
    Content-Length: 119
    Date: Fri, 10 Mar 2017 17:01:34 GMT
    Expires: 0
    
    <html>
    <head><title>Error 503: unknown method</title></head>
    <body>
    <h1>Error 503: unknown method</h1>
    </body>
    </html>
    Diese Meldung hatte ich gestern schon, als es noch nicht http verschlüsselt war.

    Hoffe jetzt verständlicher.

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Wenn da jetzt tatsächlich TLS verwendet wird (Wie kommt das von einem Tag auf den anderen?), dann brauchst Du entweder ein passendes Binary als Wrapper (die Möglichkeiten gehen von "OpenSSL" mit "s_client"-Funktion bis "stunnel") oder Du nimmst dann doch gleich ein passend übersetztes "curl", das kann TLS von Hause aus.
    Tja, frag das mal Max...
    Gestern stand da z.B. statt
    Code:
    dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect
    da noch
    Code:
    dst=http%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect
    Also doch Curl nutzen? -__-
    Ich dreh durch, gerade dachte ich, dass ich kurz vorm Ziel wäre...
    Geändert von JokerGermany (10.03.2017 um 19:32 Uhr)

  10. #10
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.257
    Das dürfte schon an der Stelle falsch werden, wo die Variablenzuweisung für BODY in derselben Zeile steht wie das SheBang (1. CODE-Kasten in #9) ... das ist ein Kommentar, damit wird der Rest der Zeile ignoriert. Im Ergebnis dürfte die "Content-Length" für den POST-Request nicht stimmen und wenn dann gar kein Body im Request zu finden ist (obwohl für den eine Länge von 182 Zeichen angesagt wird), wäre ich als Server auch sauer.

    Von dem doppelten Trennzeichen (Ampersand) in den Parametern ganz zu schweigen (zwischen "popup" und "username"), womit dann die "errechnete" Länge des Bodies (ich nehme mal an, daß Du da einfach zu faul zum automatischen Berechnen warst und einfach das "s" in "https" abgezogen hast) auch wieder nicht mehr stimmt und damit das letzte Zeichen der MAC-Adresse auch wieder fehlt, usw, usf. - irgendwie versuchst Du, es Dir extrem leicht zu machen.

    Wenn ich geschrieben habe, daß es einfach ist, meinte ich damit das Prinzip, wie man solche Requests "low level" ausführen kann ... von "mit ohne Aufwand" habe ich sicherlich nichts geschrieben und - sei nicht sauer - die gezeigten zwei Zeilen Shell-Skript sind schon als "Versuch" eher ein Abtörner.

    Woher Du das Gefühl beziehst, kurz vor dem Erfolg zu stehen, kann ich aber auch nicht nachvollziehen ... wenn ich das richtig verstehe, hast Du bisher außer der Abfrage der verbleibenden Connection-Zeit noch gar nichts erreicht.

  11. #11
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    Zitat Zitat von PeterPawn Beitrag anzeigen
    Das dürfte schon an der Stelle falsch werden, wo die Variablenzuweisung für BODY in derselben Zeile steht wie das SheBang (1. CODE-Kasten in #9) ... das ist ein Kommentar, damit wird der Rest der Zeile ignoriert.
    Das ist im eigentlichen Skript separiert^^

    [/quote]
    Von dem doppelten Trennzeichen (Ampersand) in den Parametern ganz zu schweigen (zwischen "popup" und "username"), womit dann die "errechnete" Länge des Bodies (ich nehme mal an, daß Du da einfach zu faul zum automatischen Berechnen warst und einfach das "s" in "https" abgezogen hast) auch wieder nicht mehr stimmt und damit das letzte Zeichen der MAC-Adresse auch wieder fehlt, usw, usf.[/quote]

    Das ist im Skript auch nicht doppelt oO, die Länge habe ich aus dem Header den Firefox gesendet hat übernommen.

    Code:
    #!/bin/sh
    BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%XXXX%XXXX%XXXX%XXXX%XXXX&password=XX%XXXX%XXXX%XXXX%XXXX%XXXX&mac=XX%XXXX%XXXX%XXXX%XXXX%XXXX"
    echo -ne "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 183\r\n\r\n${BODY}" | nc -i 1 login.meinhotspot.com 80
    Zitat Zitat von PeterPawn Beitrag anzeigen
    Woher Du das Gefühl beziehst, kurz vor dem Erfolg zu stehen, kann ich aber auch nicht nachvollziehen ... wenn ich das richtig verstehe, hast Du bisher außer der Abfrage der verbleibenden Connection-Zeit noch gar nichts erreicht.
    Ich bin froh überhaupt so weit gekommen zu sein XD
    Hatte angenommen, da sind vielleicht noch kleine Fehler im netcat script...

    Du machst mir echt Hoffnung...^^
    Geändert von JokerGermany (10.03.2017 um 20:57 Uhr)

  12. #12
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.257
    Jetzt setzt Du den "dst"-Parameter wieder auf "https"?

    Ich blicke einfach nicht mehr durch, was Du nun eigentlich erreichen willst ...

    Das geht schon bei der Frage los, warum Du bei der MAC-Adresse auch unbedingt noch das "%3A" (das ist nichts weiter als ein Doppelpunkt in URL-Encoding) "maskieren" mußt und das gilt auch zumindest für die ersten drei Stellen der MAC-Adresse. Anhand der OID kann Dich garantiert niemand "erkennen".

    Wenn Du an die Stelle der fest kodierten Zahl bei "Content-Length" einfach die tatsächliche Länge der Variablen $BODY setzt, hast Du auch schon ein weiteres Problem weniger - ich würde fast darauf wetten, daß die Länge hier nicht wirklich mit dem zugewiesenen Wert übereinstimmt. Außerdem kannst Du ja in "juis_check" problemlos sehen, wie man zumindest mal überprüfen kann, was man da eigentlich sendet ... Du schickst offenbar irgendwelche Daten los (von denen Du gar nicht genau weißt, wie die aufgebaut sind) und versuchst dann anhand irgendwelcher "Antworten" seitens des Servers die Ursache für ein Problem aus dem Kaffeesatz zu lesen.

    Hast Du eine Vorstellung, wofür der Parameter "-i 1" beim "nc" gut ist? Warum verwendest Du den hier überhaupt? Ich hatte den Parameter zwar früher auch mal benutzt, ihn dann aber auch recht schnell wieder zu den Akten gelegt ... was gibt es hier denn für einen Grund, zwischen den einzelnen Zeilen (das geht ja schon mit dem Request-Header los und ergibt hier schon mal eine "Verzögerung" von mind. 6 Sekunden vom Start der Verbindung bis zur kompletten Übermittlung des POST-Requests) jeweils eine Sekunde zu warten?

    So, wie Du das (nach dem, was ich bisher zu lesen bekam) betreibst, wird das eher nichts werden ... ich habe mich auch nicht einfach hingesetzt und das "juis_check" niedergeschrieben und dann versucht zu "erraten", was da vielleicht schiefgehen könnte. Da gehört ein Packet-Dump der tatsächlich gesendeten Daten genauso dazu wie das (automatische) Vermeiden allzu simpler Fehler, wie es z.B. eine "falsch vorhergesagte Länge" des Request-Bodies wäre.

    Du kannst ja noch nicht einmal sicher sein, ob das von Dir Gesendete am Ende tatsächlich mit dem übereinstimmt, was Du da mit irgendeinem Firefox-AddOn (warum eigentlich nicht direkt mit den Developer-Tools des Firefox?) ermittelt hast.

    Ich finde z.B. einen HTTP-1.1-Request "gewöhnungsbedürftig", in dem der "Connection"-Header fehlt und wo der Server damit gar nicht weiß, wie er mit der Verbindung umgehen soll (er antwortet auch mit einer HTTP-1.0-Fehlermeldung, wenn das bisher gezeigte stimmt und schließt dann wohl selbst die Verbindung), nachdem der erste Request verarbeitet wurde.

    Aber das ist alles auch nur geraten und ich komme eigentlich immer mehr zu der Annahme, daß es für Dich vielleicht doch kein gangbarer Weg ist, das selbst zu lösen ... wenn Du das wirklich in Angriff nehmen willst, mußt Du Dir (nach meinem Eindruck und der kann sich nun einmal nur aus dem speisen, was Du hier schreibst) vermutlich etwas mehr Mühe geben.

  13. #13
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    Zitat Zitat von PeterPawn Beitrag anzeigen
    Jetzt setzt Du den "dst"-Parameter wieder auf "https"?
    Ich dachte, da es eine Weiterleitung ist, ist es sowieso egal. Habe die Zeilen aus dem FireFox Request genutzt.

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Wenn Du an die Stelle der fest kodierten Zahl bei "Content-Length" einfach die tatsächliche Länge der Variablen $BODY setzt, hast Du auch schon ein weiteres Problem weniger - ich würde fast darauf wetten, daß die Länge hier nicht wirklich mit dem zugewiesenen Wert übereinstimmt.
    Code:
    #!/bin/sh
    BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%3AXX%3AXX%3AXX%3AXX%3AXX&password=XX%3AXX%3AXX%3AXX%3AXX%3AXX&mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX"
    BODY_LEN=$( echo -n ${BODY} | wc -c )
    echo $BODY_LEN
    echo -ne "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nConnection: keep-alive\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${BODY_LEN}\r\n\${BODY}" | nc -i 5 login.meinhotspot.com 80
    =>
    Code:
    183
    HTTP/1.0 503 unknown method
    Connection: close
    Content-Length: 119
    Date: Fri, 10 Mar 2017 21:10:15 GMT
    Expires: 0
    
    <html>
    <head><title>Error 503: unknown method</title></head>
    <body>
    <h1>Error 503: unknown method</h1>
    </body>
    </html>
    Du hast die Wette verloren...

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Außerdem kannst Du ja in "juis_check" problemlos sehen, wie man zumindest mal überprüfen kann, was man da eigentlich sendet ...
    Du kannst das vielleicht, ich blicke aber nicht durch juis_check durch...

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Hast Du eine Vorstellung, wofür der Parameter "-i 1" beim "nc" gut ist? Warum verwendest Du den hier überhaupt?
    Ich habe mit und ohne rumprobiert, ich habe im Internet gelesen, dass er sonst angeblich nicht auf eine Antwort wartet...

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Du kannst ja noch nicht einmal sicher sein, ob das von Dir Gesendete am Ende tatsächlich mit dem übereinstimmt, was Du da mit irgendeinem Firefox-AddOn (warum eigentlich nicht direkt mit den Developer-Tools des Firefox?) ermittelt hast.
    Weil ich es nicht besser weiß...

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Ich finde z.B. einen HTTP-1.1-Request "gewöhnungsbedürftig", in dem der "Connection"-Header fehlt und wo der Server damit gar nicht weiß, wie er mit der Verbindung umgehen soll (er antwortet auch mit einer HTTP-1.0-Fehlermeldung, wenn das bisher gezeigte stimmt und schließt dann wohl selbst die Verbindung), nachdem der erste Request verarbeitet wurde.
    Hatte ein HTTP-1.0 Post Vorlage genommen und gehofft es funktioniert so, habe nun aber mal den kompletten Header (laut "irgendeinem Firefox-Addon") genommen.

    Zitat Zitat von PeterPawn Beitrag anzeigen
    wenn Du das wirklich in Angriff nehmen willst, mußt Du Dir (nach meinem Eindruck und der kann sich nun einmal nur aus dem speisen, was Du hier schreibst) vermutlich etwas mehr Mühe geben.
    Vielleicht macht das ganze auch einfach keinen Sinn, weil Mühe ist für einen Laien etwas anderes als für jemanden, der sich damit auskennt.

    Aber ich hab sowieso noch nen anderen HTTP POST gesehen, von daher ist das Problem vielleicht sowieso anderer Natur.
    Das einzig positive momentan ist, dass er auch, wenn man Cookies ablehnt funktioniert, denn in diesem Request schiebt er eigentlich nen Cookie unter...
    Code:
    https://login.meinhotspot.com/login 
     
    POST /login HTTP/1.1 
    Host: login.meinhotspot.com 
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    Accept-Language: en-US,en;q=0.5 
    Accept-Encoding: gzip, deflate, br 
    Referer: https://connect.meinhotspot.com/en/client/redirect 
    DNT: 1 
    Connection: keep-alive 
    Upgrade-Insecure-Requests: 1 
    Content-Type: application/x-www-form-urlencoded 
    Content-Length: 383 
    dst=http%3A%2F%2Fmeinhotspot.com%2Fportalseiteos2%2F%3Fmeta%3DeyJsb2NhdGlvbl9pZCI6MTk5MCwiY3VzdG9tZXJfaWQiOjE2NzAsInByby1wYWtldCI6dHJ1ZSwicGx6IjoiMjA1MzciLCJjb3VudHJ5IjoiREUiLCJjbGllbnRfaWQiOjI3NzgyMDksImxvY2FsLWluZm8iOmZhbHNlLCJyYXRpbmctbW9kdWwiOmZhbHNlfQ%253D%253D&popup=true&username=XX%3AXX%3AXX%3AXX%3AXX%3AXX&password=XX%3AXX%3AXX%3AXX%3AXX%3AXX&mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX
    
    HTTP/1.1 200 OK 
    Cache-Control: no-cache 
    Connection: close 
    Content-Length: 2007 
    Content-Type: text/html 
    Date: Fri, 10 Mar 2017 21:23:14 GMT 
    Expires: 0

  14. #14
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.257
    Sorry, die Länge des Wertes einer Variablen ermittelt man (eigentlich in jeder POSIX-kompatiblen Shell) mit "${#variable}" - eine Ausgabe mittels "echo" kann (nicht muß) bereits die Länge der resultierenden Zeichenkette verändern. Wenn ich die Länge des Bodies in "juis_check" mittels "stat" ermittele, liegt das auch daran, daß ich eben nicht mittels "echo" die Daten in eine Pipe schicke, sondern sie zuvor in einer (temporären) Datei ablege, deren Größe ermittele und dann auch genau diese Datei mittels "cat" in die Pipe kopiere.

    Das Problem des frühzeitigen Schließens der TCP-Verbindung (weil "nc" bei EOF auf STDIN nicht weiter wartet, sofern es nicht mind. eine von zwei passenden Optionen kennt) kann man auch mit passenden FIFOs umgehen ... genau das passiert ja in "juis_check". Solange niemand den mit STDIN des "nc"-Kommandos verbundenen FIFO schließt, wartet das "nc"-Kommando auf weitere Daten von dort und empfängt in der Zwischenzeit problemlos die Daten von der Gegenseite und gibt sie auf STDOUT aus. Wenn dort ebenfalls ein FIFO verwendet wird und man die Daten z.B. mittels "read" ausliest, kann man auch den Zeitpunkt ermitteln, wann die Gegenseite ihrerseits die Verbindung beendet hat (dann schlägt das "read" fehl) bzw. man kann auch die Absicht in dieser Richtung (die "Connection: close"-Zeile in der Antwort) schon frühzeitig erkennen. Trotzdem weiß man eben noch anhand des "Content-Length"-Headers der Antwort, wieviele Daten man noch erwarten darf, bevor die Verbindung geschlossen wird.

    Ich bleibe weiterhin dabei, daß da der Aufbau des Requests nicht stimmt ... gerade bei HTTP/1.1 ist es eben essentiell, daß die angegebene "Content-Length" 100%iig stimmt - es gibt keine andere Möglichkeit, einen Request vom nächsten in derselben Verbindung (das ist ja bei HTTP/1.1 möglich) sauber abzugrenzen. Wenn das wirklich funktioniert, muß der Server ja an irgendeinem anderen Merkmal erkennen, daß der Request anders aufgebaut ist (und er deshalb mit dem 503-Fehler um die Ecke kommen muß) ... bevor man so etwas auf das wirklich Notwendige zusammenstreicht, muß man dann eben mit einer 1:1-Kopie beginnen und Stück für Stück ermitteln, welche Header der Server halt braucht und welche nicht.

    Abgesehen davon muß man eben den Netzwerk-Mitschnitt des Browser-Requests und den des "nc"-Requests miteinander vergleichen, wenn man den Unterschied feststellen will ... nur auf den Text zu starren, bringt nicht wirklich viel. Außerdem könnte man dann wenigsten mal die komplette Konversation sehen ... bisher bist Du ja extrem geizig mit solchen Daten. Daher braucht man auch schon fast eine Lupe, damit man den überzähligen Backslash vor dem Dollarzeichen am Ende des letzten "echo"-Kommandos findet ... das führt nun mal dazu, daß anstelle des Inhalts von ${BODY} die Zeichenkette "${BODY}" im Request landet. Wenn das auch wieder nur ein "Kopierfehler" ist (wie die beiden anderen zuvor), dann gebe ich es allerdings auf, mir Deine Skripte anzusehen. Das macht dann nämlich keinen Spaß mehr ... eigentlich zeigt aber jeder Editor mit Syntax-Highlighting bereits solche Probleme an und ein Mitschnitt des Netzwerkverkehrs bzw. die Anzeige der tatsächlich gesendeten Daten (etwas in der Richtung habe ich in #12 ja bereits geschrieben) hätte das ebenfalls sofort sichtbar machen müssen.



    Bei der neuen Verwendung von "-i 5" dauert es ja sogar mind. 30 Sekunden, bis dieser einzelne Request (der besteht immerhin aus mind. 6 Zeilen und das sind jeweils 5 Sekunden Pause zwischen diesen Zeilen, was man mit "-i 5" erhält) endlich beim Server eingetroffen ist. Das ist doch ziemlicher Unsinn ...

    Ja, es ist nicht so simpel, eine "nc"-Instanz bei EOF auf STDIN zur Fortsetzung der Arbeit zu überreden, wenn diese die Option "-d" oder "-q" nicht kennt ... aber es ist möglich und allemal schlauer, als zwischen jeder Zeile eine Pause von 5 Sekunden einzuschieben. Ein "empfindlicher" Server sieht das schon als DoS-Angriff, wenn so ein simpler Request 30 Sekunden braucht, bis er halbwegs komplett übertragen wurde.

    Solange es nicht gute Gründe für die Verwendung von HTTP/1.1 gibt, kann man sich durch die Verwendung von HTTP/1.0 auch einiges an Ärger ersparen ... ich dachte, das wäre bereits vorher deutlich geworden. Der Ansatz mit "Connection: Close" geht zwar auch, aber Du machst ja das genaue Gegenteil. Du teilst dem Server mit, daß sich Dein Client mit den Besonderheiten von HTTP/1.1 auskennen würde und daß er gerne mehr als einen Request in derselben Verbindung ausführen würde (Connection: keep-alive) ... ich habe keine Idee, warum (und vor allem wie) Du das machen willst, wenn Du nicht einmal FIFOs verwendest und schon arge Probleme hast, die "nc"-Instanz so lange am Leben zu erhalten (nach EOF auf STDIN), daß die überhaupt noch etwas empfangen kann.

  15. #15
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    Zitat Zitat von PeterPawn Beitrag anzeigen
    Sorry, die Länge des Wertes einer Variablen ermittelt man (eigentlich in jeder POSIX-kompatiblen Shell) mit "${#variable}" - eine Ausgabe mittels "echo" kann (nicht muß) bereits die Länge der resultierenden Zeichenkette verändern. Wenn ich die Länge des Bodies in "juis_check" mittels "stat" ermittele, liegt das auch daran, daß ich eben nicht mittels "echo" die Daten in eine Pipe schicke, sondern sie zuvor in einer (temporären) Datei ablege, deren Größe ermittele und dann auch genau diese Datei mittels "cat" in die Pipe kopiere.
    done
    Zitat Zitat von PeterPawn Beitrag anzeigen
    Das Problem des frühzeitigen Schließens der TCP-Verbindung (weil "nc" bei EOF auf STDIN nicht weiter wartet, sofern es nicht mind. eine von zwei passenden Optionen kennt) kann man auch mit passenden FIFOs umgehen ... genau das passiert ja in "juis_check". Solange niemand den mit STDIN des "nc"-Kommandos verbundenen FIFO schließt, wartet das "nc"-Kommando auf weitere Daten von dort und empfängt in der Zwischenzeit problemlos die Daten von der Gegenseite und gibt sie auf STDOUT aus. Wenn dort ebenfalls ein FIFO verwendet wird und man die Daten z.B. mittels "read" ausliest, kann man auch den Zeitpunkt ermitteln, wann die Gegenseite ihrerseits die Verbindung beendet hat (dann schlägt das "read" fehl) bzw. man kann auch die Absicht in dieser Richtung (die "Connection: close"-Zeile in der Antwort) schon frühzeitig erkennen. Trotzdem weiß man eben noch anhand des "Content-Length"-Headers der Antwort, wieviele Daten man noch erwarten darf, bevor die Verbindung geschlossen wird.
    Bahnhof^^

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Abgesehen davon muß man eben den Netzwerk-Mitschnitt des Browser-Requests und den des "nc"-Requests miteinander vergleichen, wenn man den Unterschied feststellen will ... nur auf den Text zu starren, bringt nicht wirklich viel. Außerdem könnte man dann wenigsten mal die komplette Konversation sehen ... bisher bist Du ja extrem geizig mit solchen Daten.
    Sag was du brauchst und ich liefere es, du meinst also mit wireshark den Netzwerkverkehr mitschneiden?

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Daher braucht man auch schon fast eine Lupe, damit man den überzähligen Backslash vor dem Dollarzeichen am Ende des letzten "echo"-Kommandos findet ... das führt nun mal dazu, daß anstelle des Inhalts von ${BODY} die Zeichenkette "${BODY}" im Request landet. Wenn das auch wieder nur ein "Kopierfehler" ist (wie die beiden anderen zuvor), dann gebe ich es allerdings auf, mir Deine Skripte anzusehen.
    Nein, der Fehler existierte tatsächlich...

    Zitat Zitat von PeterPawn Beitrag anzeigen
    Solange es nicht gute Gründe für die Verwendung von HTTP/1.1 gibt, kann man sich durch die Verwendung von HTTP/1.0 auch einiges an Ärger ersparen ... ich dachte, das wäre bereits vorher deutlich geworden. Der Ansatz mit "Connection: Close" geht zwar auch, aber Du machst ja das genaue Gegenteil. Du teilst dem Server mit, daß sich Dein Client mit den Besonderheiten von HTTP/1.1 auskennen würde und daß er gerne mehr als einen Request in derselben Verbindung ausführen würde (Connection: keep-alive) ... ich habe keine Idee, warum (und vor allem wie)
    Weil ich nicht genau weiß, was der Server erwartet und keine Ahnung habe?^^

    Code:
    #!/bin/sh
    BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%3AXX%3AXX%3AXX%3AXX%3AXX&password=XX%3AXX%3AXX%3AXX%3AXX%3AXX&mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX"
    BODY_LEN=$( echo -n ${BODY} | wc -c )
    echo $BODY_LEN
    echo ${#BODY}
    echo -ne "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n${BODY}" | nc login.meinhotspot.com 80
    =>
    Code:
    183
    183
    HTTP/1.0 503 unknown method
    Connection: close
    Content-Length: 119
    Date: Sat, 11 Mar 2017 11:09:09 GMT
    Expires: 0
    
    <html>
    <head><title>Error 503: unknown method</title></head>
    <body>
    <h1>Error 503: unknown method</h1>
    </body>
    </html>

  16. #16
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.257
    Hast Du jemals selbst nachgesehen, was Du da eigentlich sendest?

    Ich will gar keinen Wireshark-Mitschnitt sehen, wenn Du den nicht selbst zumindest als "interessant" erachtest. Ich habe auch nicht den Ehrgeiz, das auf die Reihe zu kriegen und wollte eigentlich nur mit Hinweisen helfen, wenn Du nicht weiterkommen solltest.

    Wenn Du Dir hier einfach einmal ansiehst, was Du da "verbrochen" hast, dann findest Du sicherlich auch den weiterhin bestehenden Fehler - der ist mir zuvor auch nicht aufgefallen, weil eben "${BODY}" gar nicht ersetzt wurde und damit ohnehin der Request schon an dieser Stelle falsch und der wirklich resultierende Text gar nicht zu sehen war.

    Dein derzeitiges Problem liegt an dieser Stelle begründet:

    https://www.w3.org/Protocols/rfc2616...c4.html#sec4.1

    Schau Dir die BNF-Notation für einen Request an, vergleiche das mit dem, was Du dort zu senden versuchst und Du findest den Unterschied (BTW: juis_check macht das ebenfalls richtig).

  17. #17
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    Zitat Zitat von PeterPawn Beitrag anzeigen
    Wenn Du Dir hier einfach einmal ansiehst, was Du da "verbrochen" hast, dann findest Du sicherlich auch den weiterhin bestehenden Fehler - der ist mir zuvor auch nicht aufgefallen, weil eben "${BODY}" gar nicht ersetzt wurde und damit ohnehin der Request schon an dieser Stelle falsch und der wirklich resultierende Text gar nicht zu sehen war.
    Wieso sollte ${BODY} nicht ersetzt haben?

    Was mir aufgefallen ist, dass er die echo Parameter, warum auch immer, mit in den Request packt.
    Code:
    #!/bin/sh
    BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%3AXX%3AXX%3AXX%3AXX%3AXX&password=XX%3AXX%3AXX%3AXX%3AXX%3AXX&mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX"
    BODY_LEN=$( echo -n ${BODY} | wc -c )
    echo $BODY_LEN
    echo ${#BODY}
    echo "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n${BODY}" |  nc login.meinhotspot.com 80
    =>
    Code:
    183
    183
    HTTP/1.0 400 Bad Request
    Connection: close
    Content-Length: 113
    Date: Sat, 11 Mar 2017 16:23:22 GMT
    Expires: 0
    
    <html>
    <head><title>Error 400: Bad Request</title></head>
    <body>
    <h1>Error 400: Bad Request</h1>
    </body>
    </html>

  18. #18
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.257
    Zitat Zitat von JokerGermany Beitrag anzeigen
    Wieso sollte ${BODY} nicht ersetzt haben?
    Ich schrieb, daß "${BODY}" bisher nicht ersetzt wurde ... das war solange der Fall, wie das Dollarzeichen am Beginn dieses Namens durch den zusätzlichen Backslash "maskiert" wurde (BTW: Damit hatte ich meine Wette dann eben doch gewonnen - zumindest bzgl. der Differenz zwischen "Content-Length" und dem tatsächlich gesendeten Body).

    Was mir aufgefallen ist, dass er die echo Parameter, warum auch immer, mit in den Request packt.


    Keine Ahnung, was Du damit sagen willst ... die zwei Zeilen mit "183" sind ja selbstverschuldet (und auch nur in der Konsolenausgabe zu sehen und nicht Bestandteil des Requests); so etwas kann ich als "trace" ja noch nachvollziehen, wenngleich es ja auch einmal gereicht hätte und nachdem Du nun auch weißt, daß bei Dir "$BODY_LEN" und "${#BODY}" identisch sind, könnte ja der ganze Teil mit $BODY_LEN auch komplett raus - er wird ja nicht mehr verwendet.

    Da der Fehler vermutlich in Deinem komischen AddOn gar nicht richtig zu sehen ist, habe ich auch auf die HTTP-Spezifikation verwiesen und nicht geschrieben, daß Du die Ausgabe des AddOns (von der ich mal annehme, daß Du sie tatsächlich 1:1 hier hineinkopiert hast, aber ich kenne das AddOn nicht) mit Deinem Zeug vergleichen sollst.

    Den Fehler würdest Du vermutlich nur in einem echten Mitschnitt über Wireshark sehen - aber anhand der verlinkten BNF-Notation (und des Textes rundherum) ist er mehr als deutlich zu erkennen. Du mußt eben nur mal überlegen, was Du da wirklich sendest ... wenn Du das nicht sofort in die Pipe zum "nc" stecken würdest, könnte man das ja problemlos auch irgendwo anders ausgeben (von solchen Sachen wie "tee" mal gänzlich zu schweigen) und sich "ansehen".

  19. #19
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    Im Terminal tritt das nicht auf, aber wenn man es als Skript laufen lässt passiert folgendes:
    Aus dem hier:
    Code:
    echo -ne "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n${BODY}"
    wird:
    Code:
    -ne POST /login HTTP/1.1
    Host: login.meinhotspot.com
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate, br
    Referer: https://connect.meinhotspot.com/en/client/welcome
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 183
    dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%3AXX%3AXX%3AXX%3AXX%3AXX&password=XX%3AXX%3AXX%3AXX%3AXX%3AXX&mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX
    deswegen ohne -ne

  20. #20
    IPPF-Fan
    Registriert seit
    07.08.2007
    Beiträge
    397
    So,
    dank https://forum.ubuntuusers.de/topic/n...f-http-header/ , funktioniert jetzt auch der Login.
    Code:
    #!/bin/sh
    BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%3AXX%3AXX%3AXX%3AXX%3AXX&password=XX%3AXX%3AXX%3AXX%3AXX%3AXX&mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX"
    BODY_LEN=$( echo -n ${BODY} | wc -c )
    echo $BODY_LEN
    echo ${#BODY}
    echo "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
    ->
    Code:
    183
    183
    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Connection: close
    Content-Length: 1425
    Content-Type: text/html
    Date: Mon, 13 Mar 2017 17:34:53 GMT
    Expires: 0
    
    <html>
    <head>
    <title>MeinHotspot > redirect</title>
    <meta http-equiv="refresh" content="2; url=https://connect.meinhotspot.com/de/client/redirect">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="expires" content="-1">
    <style type="text/css">
    <!--
    textarea,input,select {
        background-color: #FDFBFB;
        border: 1px #BBBBBB solid;
        padding: 2px;
        margin: 1px;
        font-size: 14px;
        color: #808080;
    }
    
    body{ color: #737373; font-size: 12px; font-family: verdana; }
    
    a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 12px; }
    a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; }
    img {border: none;}
    td { font-size: 12px; color: #7A7A7A; }
    
    -->
    </style>
    <script language="JavaScript">
    <!--
        function startClock() {
        location.href = 'https://connect.meinhotspot.com/de/client/redirect';
        }
    //-->
    </script>
    </head>
    <body onLoad="startClock()">
    <table width="100%" height="100%">
    <tr>
        <td align="center" valign="middle">
        <img src="img/logo.png" alt="MeinHotspot" title="MeinHotspot"/>
        <br><br>
        Sie wurden soeben auf dem Hotspot eingeloggt und werden weitergeleitet.
        <br><br>
        <img src="img/load.gif" alt="Lade" title="Lade"/>
        <br><br>
        Falls keine Weiterleitung stattfindet bitte <a href="https://connect.meinhotspot.com/de/client/redirect">hier klicken</a></td>
    </tr>
    </table>
    </body>
    </html>
    Wie implementiere ich die jetzt am besten in die Fritz!Box und was muss ich beachten?
    Geändert von JokerGermany (14.03.2017 um 18:29 Uhr)

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. [Gelöst] Asterisk hinter Fritzbox automatisierte Anrufe
    Von OberstvonGatow im Forum Asterisk Allgemein
    Antworten: 13
    Letzter Beitrag: 27.11.2013, 07:45
  2. Automatisierte Anrufe durch Software
    Von lretter im Forum Spaßzeugs bitte hier rein!
    Antworten: 16
    Letzter Beitrag: 31.03.2013, 19:00
  3. Automatisierte telefonate führen
    Von thisismyname im Forum Asterisk Allgemein
    Antworten: 6
    Letzter Beitrag: 25.09.2008, 17:08
  4. Antworten: 10
    Letzter Beitrag: 17.08.2006, 19:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •