Bystroushaak's blog / Czech section / Programování / mmkv.cz-free

mmkv.cz-free

Pokud někdy zavítáte do Karlových Varů, pravděpodobně zjistíte, že město platí vlastní wifi síť, do které se může kdokoliv zdarma připojit. Z nepochopitelného důvodu je však doba připojení omezena na 30m, po jejímž uplynutí vám síť utne všechny probíhající spojení a musíte se opět přihlásit pomocí naprosto trapného webloginu. Štvalo mě to, tak jsem vytvořil krátký program v D, který to dělá za vás.

Jak to funguje

Stará Role, kde se teď pohybuji je docela dobře pokryta. Projevuje se to AccessPointy s názvem mmkv.cz-X-free, kde X je číslo.

Jakmile se na AP připojíte, všechny vaše HTTP požadavky jsou znásilněny a přesměrovány na stránku, kde se musíte pro pokračování zalogovat. To probíhá tak, že myší přejíždíte nad prázdnými čtverečky tak dlouho, dokud netrefíte ten s logem města, které je i v záhlaví. Jakmile se vám to povede, jste přesměrováni skoro tam kam jste chtěli, s tím že někdy jsou zahozeny všechny GET požadavky (stává se mi, že když jdu na google z firefoxího vyhledávání, hodí mě to na mainpage místo výsledků).

Jak už je napsáno na přihlašovací stránce, můžete využívat porty 80 a 443. Firewall není moc chytrý, takže sleduje skutečně jen čísla portů, pokud si přez to natáhnete TOR, nebo SSH, je mu to jedno.

Připojení můžete využívat po 30m, poté je utnuto ze strany routeru naprosto nemilosrdně. Dá se to obejít, pokud se odhlásíte a přihlásíte sami, potom se spojení nemusí přerušit, ale ne vždy to stihnete.

Pokud se manuálně odlogujete na adrese http://ip_routeru/logout, vyskočí na vás takováto tabulka:

Jakmile se zalogujete pomocí tlačítka pod tabulkou (opět přes výběr loga), jste přesměrováni na http://ip_routeru/status, kde se vám zobrazí toto:

Povšimněte si username full, ještě se o něm zmíním.

"Login"

Login, pokud tomu tedy tak lze říkat, je fakt nepochopitelná kravina. Po kliknutí na tlačítko s logem města se aktivuje následující funkce v javascriptu:

function doLogin() {
    document.sendin.username.value = document.login.username.value;
    document.sendin.password.value = hexMD5('\130' + document.login.password.value + '\135\137\034\202\372\303\227\333\044\341\132\370\132\326\042\116');
    document.sendin.submit();
    return false;
}

Položky document.login.username.value a document.login.password.value jsou přitom po načtení stránky dalším JavaScriptem předvyplněny na slavný string "full". Salt ve funkci hexMD5 v podobě oktetů je vkládán náhodně (pokaždé jinak), nebo na základě nějakého klíče, který jsem nepochopil.

Form sendin má tento tvar:

<form name="sendin" action="http://ip_routeru/login" method="post">
    <input type="hidden" name="username" />
    <input type="hidden" name="password" />
    <input type="hidden" name="dst" value="http://presmerovavany_link.tld/params" />
    <input type="hidden" name="popup" value="true" />
</form>

Demence

Teď k pravému důvodu, proč tohle všechno píšu. Analýzou návrhu, jsem odhalil, že systém vytvořili schopní technici, kteří však ve svém kruhu mají nějakého dementa (možná šéfa). Celý výše uvedený systém totiž působí dementně a nepochopitelně. To neříkám proto, abych si zanadával, ale proto že to skutečně je nepochopitelně zkryplený systém.

Proč jsou povoleny jen porty 80 a 443? To nikdy neslyšeli o lidech kteří by chtěli používat ICQ, Jabber, SSH či EMAIL? Mě to takový problém nedělá, dokážu se tunelovat dle chuti, ale co ostatní?

Proč je proboha maximální doba připojení 30m? To má být nějaká ochrana proti nadměrnému stahování? Slyšeli už někdy o "wget -c"? Proč potom není omezené maximální množství dat, které člověk může přenést?

Proč ten naprosto směšný, nesmyslný a dementní login? Každý kdo dokáže pochopit jak funguje mi jistě dá za pravdu, že je tam úplně k ničemu. Ten login neslouží k tomu k čemu login běžně slouží, tedy k identifikaci uživatele. Jméno i heslo jsou vždy "full", uživatel to dokonce nemá ani možnost jednoduše změnit. Kdyby ten login byl mechanická věc, jednalo by se o jasné kurvítko a zesložiťovátko, takhle je to jen nepochopitelná blbost, ke které navíc potřebujete JavaScript.

Proč vůbec nějaký login? To si vážně myslí že někoho baví se logovat? Jaký to má smysl? Jediné co mě napadá je buzerace. Prostě chtěli aby si lidé byli vědomi, komu vděčí za ten požitek internetu zdarma. Taky se vám to zdá dětinské?

Je to smrtelné pane doktore?

Mám pro vás dobrou zprávu, na tenhle druh demence existuje lék.

Napsal jsem program v D (mohl jsem to napsat i v pythonu, ale v rámci propagace D..) který vás po spuštění automaticky zaloguje a co víc, dokud běží, tak vás každých 10m (zkoušel jsem 25, ale to se neosvědčilo) automaticky odloguje a zase zaloguje, aby nedošlo k přerušení spojení.

Nefunguje to 100%, protože některá spojení spadnou, jiná běží. U webu to poznáte na downloadu, který se přeruší (resp. je prohlášen za hotový), SSH a TOR to vydejchají bez potíží.

Download:

Tipy & triky

Pokud chcete používat TOR jako proxy pro SSH, přidejte do ~/.ssh/config následující řádek:

ProxyCommand /bin/nc -x localhost:9050 %h %p

Je to docela vtipné a jednoduché, dlouho jsem hledal a googli, zkoušel všelijaké opičiny a nakonec to umí samotný netcat..

Pro případy stahování z internetu jsem dal dohromady tyto dva scripty:

doitfaggot:

#!/bin/sh
while ! $*; do
    :;
#   sleep 5;
done

downer.sh:

#! /usr/bin/env bash
while [ 1 ]; do doitfaggot wget --no-check-certificate -c $1; done

Stahování provádějte přes downer.sh, protože wget při padlém spojení hlásí že soubor je již stažený, což není. Downer se narozdíl od doitfaggot zacyklí, dokud ho manuálně nevypnete.

Doitfaggot je velice užitečný na spoustu věcí. Funguje tak, že vezme zadané parametry a spouští je do té doby, dokud daný program nevrátí 0.

V knihovně například zavedli že lze stáhnout jen ~2MB, načež rychlost stahování spadne na 10kB/s z původních 500kB/s. Obejít to můžete pomocí './doitfaggot timeout 5s wget -c http://link'. Zakomentovaný sleep se někdy hodí, jindy zas ne..

Závěr

Blogpost možná mohl vyznít trochu negativně, což bylo částečně úmyslem, ale nechápejte mě špatně. Jsem rád že tu ta síť je. Líbí se mi idea, že město platí připojení pro své občany a návštěvníky a přijde mi to jako bohulibá činnost.

Naprosto nepochopitelné mi přijde provedení. Podobá se to fotkám baráků s nesmyslnou architekturou a prostě nedává smysl, jak takovou blbost někdo mohl spáchat.

Become a Patron