Debrick routera Tenda W311R+

W ramach pewnego projektu, o którym może usłyszycie wkrótce, kupiłem za jakieś śmieszne pieniądze rzędu 20 zł router Tenda W311R+. Miał nieco stary firmware, więc postanowiłem zaktualizować. Nie wszystko poszło dobrze i skończyło się tzw. cegłą. Na szczęście znalazłem opis, jak zrobić debrick routera Tenda W311R+.

Sytuacja jest nieco zabawna, więc opiszę jak doszło do sceglenia. Otóż producent routerów Tenda ma niefajną tendencję do paru rzeczy nie ułatwiających znalezienia właściwego oprogramowania. Po pierwsze, produkują routery o bardzo podobnych nazwach. Po drugie, oprogramowanie do zupełnie różnych modeli potrafi mieć tę sam numer wersji. Po trzecie, w ramach jednego modelu routera istnieją różne wersje hardware. Dopiski w informacji o oprogramowaniu w stylu to oprogramowanie wymaga wersji sprzętu 3.0 są normą. No i na koniec wspomniana Tenda W311R+ to sprzęt sprzed dekady, więc nie do końca wszystko jest dostępne, a strony działają czy przekierowują, nazwijmy to, różnie.

W każdym razie podłączyłem się do routera kabelkiem i zmieniłem firmware V5.07.15_en_02 na znaleziony V5.07.47_en_02. Flashowanie przebiegło poprawnie, router się zrestartował. Ku mojemu zdziwieniu, po restarcie okazało się, że mocno zmieniła się szata graficzna. Jeszcze bardziej zdziwiłem się, gdy spostrzegłem, że wersja sprzętu zmieniła się z 1.0 na 3.0. Ups! Niemniej sprzęt działał. Tzn. ethernet działał. WiFi nie bardzo. Szybko poszukałem innego oprogramowania, wgrałem i…

No teraz to dopiero się pomyliłem. Router po restarcie nie wstał. Dioda się zapalała, ale żadnej odpowiedzi. Odłączanie zasilania i reset oczywiście nie pomogły. Cegła jak się patrzy.

Skoro sprzęt jest zepsuty i bardziej zepsuty nie będzie, to należy go oczywiście rozebrać i poszukać złącza JTAG. Niestety, po otwarciu obudowy okazało się, że nie tylko nie ma JTAG, ale nawet niczego co by go przypominało od biedy. Bebechy wyglądają solidnie, ale minimalistycznie.

Filmy YouTube

Zacząłem szukać w internecie czy jest gdzieś opisane, jak zrobić debrick routera Tenda W311R+ i nie wyglądało to dobrze. Opisu nie znalazłem ani jednego. Za to znalazłem dwa interesujące filmy na YouTube, które z tytułu się zgadzały. Obejrzałem pierwszy z nich. Niestety nie był po angielsku. I działy się tam dantejskie sceny. Autor bowiem zwiera śrubokrętem nóżki chipa podczas włączania, co rzekomo powoduje uruchomienie trybu serwisowego chipsetu Broadcom. Dokładniej Broadcom – CFE miniWeb Server. Rozumiecie, nie dedykowana zworka, nie oznaczone miejsce na płytce drukowanej, tylko weź śrubokręt i zewrzyj odpowiednie nóżki chipa. Oczywiście chip nie jest czytelnie opisany.

Znalazłem też drugi film, tym razem z niezbyt zrozumiałym angielskim. Przedstawiał dokładnie tę samą procedurę. Ponieważ – jak wspomniałem – router był zepsuty, więc stwierdziłem, że w najgorszym razie będą jeszcze iskry[1], dymek i nieprzyjemny zapach – mówi się trudno.

Zlokalizowałem chip, upewniłem się, że powinny to być te dwie nóżki i zacząłem nierówną walkę. Ponieważ oba filmy są niezbyt zrozumiałe i niezbyt czytelne. Jakość wideo też pozostawia sporo do życzenia, dodatkowo autorzy uznali za niezbędne zmniejszenie pola widzenia przez zamieszczenie podglądu ekranu komputera. Opiszę więc w formie tekstowej, co trzeba zrobić, żeby wprowadzić router w tryb serwisowy. Nie jestem pewien, czy działa za każdym razem – próbowałem wielokrotnie i w końcu się udało. Postaram się więc jak najdokładniej opisać, co wydaje mi się, że zrobiłem, nim zadziałało. Ani za efekty ani żadne szkody wynikłe z zastosowania poniższego sposobu nie odpowiadam. W moim przypadku debrick routera W311R+ zakończył się powodzeniem.

Instrukcja

  • odłącz zasilanie od routera
  • podłącz kabel ethernet do portu LAN położonemu najbliżej gniazda zasilania[2]
  • ustaw statyczny adres IP 192.168.1.2/24 na komputerze
  • uruchom na komputerze ping na adres 192.168.1.1[3]
  • naciśnij i trzymaj przycisk reset
  • podłącz zasilanie, cały czas trzymając reset
  • zewrzyj odpowiednie, dolne skrajne wewnętrzne, nóżki chipa (zaznaczone czerwoną kropką i strzałką na screenshocie poniżej) i trzymaj zwarte
  • zwolnij przycisk reset
  • po chwili ponownie zewrzyj na chwilę nóżki chipa
  • jeśli router uruchomił się w trybie serwisowym, adres 192.168.1.1 zacznie odpowiadać na ping
  • wejdź przeglądarką na http://192.168.1.1, z poziomu WWW, gdzie możesz wgrać prawidłowe oprogramowanie
Wnętrze routera Tenda W311R+ z zaznaczonym miejscem zwarcia w celu uruchomienia trybu serwisowego
Wnętrze routera Tenda W311R+ z zaznaczonym miejscem zwarcia Źródło: fot. włąsna

Najśmieszniejsze w tym wszystkim jest to, że jeden z filmów jest sprzed roku. Drugi sprzed dwóch lat. Sam sprzęt jest sprzed dekady i z różnych względów niekoniecznie polecam korzystanie z niego w 2023. Uważni czytelnicy pamiętają być może wpis o routerze Pentagram Cerberus P6361, bo pod taką marką także były sprzedawane produkty Tenda w Polsce.

Póki co router zreanimowany do firmware bez WiFi. Szukam właściwego firmware dla niego…

[1] No dobra, bądźmy poważni. Przy tak niskich napięciach raczej na iskry szans nie ma.
[2] Nie wiem czy jest to konieczne, teoretycznie porty powinny być takie same. Niemniej nie zaszkodzi, a na pewno zadziałało mi właśnie w tym porcie.
[3] Taki adres będzie miał router w trybie serwisowym

Ubuntu – płatne bezpieczeństwo

Ubuntu LTS kojarzy się nam z dystrybucją stabilną i bezpieczną, prawda? Otóż niezupełnie tak jest. Bowiem nie wszystkie pakiety w Ubuntu LTS (np. 20.04 LTS czy 22.04 LTS) otrzymują aktualizacje bezpieczeństwa. Przynajmniej nie za darmo. Od strony technicznej, które pakiety otrzymują aktualizacje (main), a które niekoniecznie (universe) przeczytacie w artykule na nfsec.pl, podobnie jak o genezie szumu wokół Ubuntu i repozytorium ESM (Expanded Security Maintenance).

Zarys sytuacji

Zamiast na stronie technicznej, skupię się na stronie etycznej i prawnej. Sytuacja wygląda bowiem na dość skomplikowaną. Tytułem wprowadzenia niezbędny skrót. Ubuntu w ramach Ubuntu Pro daje między innymi dostęp do repozytorium ESM, które zawiera łatki bezpieczeństwa do tych pakietów z repozytorium universe, do których zostały one przygotowane przez opłaconych przez Ubuntu maintainterów, zamiast przez maintainerów ze społeczności. Osoby fizyczne (personal) mogą bezpłatnie korzystać z Ubuntu Pro na maksymalnie 5 systemach. Natomiast firmy (enterprise) powinny zapłacić za dostęp, albo… nie korzystać z załatanych pakietów. Jest jeszcze trzecia kategoria – edukacja (education, research, and academia). Też powinni kupić, ale dostaną zniżkę w niejawnej wysokości.

Abonament na bezpieczeństwo

Mam mocno mieszane uczucia w stosunku do tego podejścia. Z jednej strony nie ulega wątpliwości, że maintainerzy, którzy wykonali na zlecenie pracę, której nikt nie chciał podjąć się za darmo, powinni otrzymać wynagrodzenie. Z drugiej strony, jest to podcinanie gałęzi, na której się siedzi i z której Ubuntu wyrasta. Bowiem maintainterzy społeczności mogą dojść do wniosku, że nie ma sensu robić za darmo tego, za co inni otrzymują wynagrodzenie. To z czasem może przełożyć się na gorsze wsparcie wolnego oprogramowania, w szczególności dystrybucji opartych o pakiety deb.

Kolejny aspekt to pewnego rodzaju szantaż w stosunku do użytkowników. Niby system i oprogramowanie są za darmo, ale jak chcesz mieć bezpiecznie, to zapłać… Płatne bezpieczeństwo to skomplikowane zagadnienie. Co powiecie na abonament na ABS, poduszki powietrzne czy pasy bezpieczeństwa w aucie? Albo jeszcze lepiej: hamulce w wersji zwykłej i pro, te drugie zapewniające krótszą drogę hamowania? I wszystko to rzecz jasna w formie abonamentu, czyli wszędzie jest zamontowane, ale trzeba zapłacić, by było aktywne.

Opłata za udostępnianie

No i ostatnia sprawa – czy Ubuntu może w ogóle brać pieniądze za udostępnianie oprogramowania na wolnych licencjach? Ograniczę się do licencji GPL. Zarówno wersja druga, jak i trzecia GPL wprost mówi, że akt udostępnienia oprogramowania może być zarówno darmowy, jak i płatny. Czyli Ubuntu może żądać wynagrodzenia za udostępnienie oprogramowania.

Jednak jednocześnie GPL zabrania zmiany licencji[1], a licencjonobiorca nabywa wszystkie prawa. W szczególności prawo do dalszej dystrybucji. Czyli czy dowolna osoba może skorzystać z Ubuntu Pro w wersji personal, pobrać z repozytorium ESM pakiety lub kod źródłowy i udostępnić je na swoim serwerze każdemu chętnemu? IANAL, ale wygląda na to, że tak. Przynajmniej te pakiety/patche wydane na licencji GPL.

O sprawie zaczęło się robić głośno dopiero teraz i sam jestem ciekaw, czy jakoś bardziej się to rozwinie i jak się ostatecznie skończy. Trzeba pamiętać, że Ubuntu Pro to znacznie więcej, niż tylko dostęp do załatanych pakietów z repozytorium universe w ramach ESM. To także możliwość aktualizacji kernela bez konieczności restartu systemu, support 24/7. Być może lepszą strategią dla Canonical byłoby udostępnienie patchy społeczności za darmo? Tym bardziej, że z prawnego punktu widzenia raczej są na przegranej pozycji, przynajmniej w kontekście licencji GPL.

[1] Pomijam tu przypadki oprogramowania wydawanego równolegle na kilku licencjach. Wówczas można wybrać, którą licencję się wybrało i modyfikować tylko kod na tej wybranej, dystrybuując go zgodnie z jej – i tylko jej – postanowieniami.

Połam to jeszcze raz

Niedawno sekurak.pl zorganizował kolejny konkurs z łamaniem hashy. Tym razem dowiedziałem się o nim przypadkiem – ot, wpadło powiadomienie z Discorda, które akurat zauważyłem. Rzuciłem okiem, jest link do wpisu, są hashe, więc warto spróbować, bo do wygrania był kolejny dostęp do Akademii Sekuraka 2024.

Miałem w zasadzie gotowca na podstawie poprzedniego wpisu i writeupu, więc liczyłem, że kilka sztuk wpadnie. I faktycznie, nie zawiodłem się. Opisane wcześniej metody pozwalały złamać 7 do 9 hashy. Skąd rozbieżność? Zależy jak liczyć i jaki się utworzyło dedykowany słownik.

Zajmijmy się trzema hashami, z którymi mógł być problem. Pierwszy to db13ca089eb4860896567399a30558f2c1fc69e7:sekurak.academy.
Przyznaję, że zwyczajnie miałem szczęście. W słowniku zagościł bowiem ciąg sekurakacademy, a OneRuleToRuleThemAll zrobiło resztę. Aż się zdziwiłem, czemu to wpadło, więc sprawdziłem.

Sprawdzenie, która reguła spowodowała dopasowanie robi się zgodnie z opisem z dokumentacji hashcata poprzez dodanie parametrów

--debug-mode=1 --debug-file=matched.rule

Okazuje się, że OneRuleToRuleThemAll ma takie cudo jak

l i7.

Przekładając na bardziej zrozumiały język: zamień wszystkie litery na małe i wstaw kropkę po siódmym znaku. Chwilę po godzinie dziewiętnastej odesłałem 8 złamanych hashy.

Kolejne hasło, które mogło sprawić trudność to złożenie nie dwóch, ale trzech wyrazów. Czułem, że będzie, bo tego typu pojawiały się w poprzednich edycjach. Schemat był zawsze ten sam – dwa wyrazy oddzielone krótkim spójnikiem. Sprawdziłem, ile jest krótkich spójników w moim słowniku. Samych dwuznakowych było aż 428. Uznałem, że to zbyt wiele. W dodatku większość się nie nadawała – zz czy yy po prostu mi nie pasowały.

Postanowiłem spróbować z dwuliterowymi. Ręcznie przejrzałem wszystkie dwuliterowe słowa, wybrałem 25, które wydały mi się najbardziej prawdopodobne, zapisałem do pliku. Dorzuciłem jeszcze 3 jednoliterowe spójniki: i, o, a. Na koniec dodałem 19 wyrazów trzyznakowych. Tak powstał plik laczniki.txt.

Stwierdziłem też, że dla pełnego słownika języka polskiego i tak wyszłoby wiele kombinacji. Hasła z poprzednich edycji były umiarkowanej długości. Postanowiłem wziąć na warsztat tylko wyrazy od 2 do 9 znaków. Nazwałem go 29_slownik_all_nopl.txt. Liczył 845 tys. wierszy.

Krótkim skryptem w Pythonie utworzyłem słownik z wszystkimi kombinacjami wyrazów z 29_slownik_all_nopl.txt oraz 57 łączników. Wynikiem był spory, ale nadal akceptowalny słownik zawierający 48 mln wierszy.

Potem już standardowo – operacja na dwóch słownikach. Pierwszym był 29_slownik_all_nopl_laczniki.txt zaś drugim 29_slownik_all_nopl.txt. Tak udało się złamać 61d54fe02ce6edcde2f5762f2677b3c83d876417:trudnotozgadnac
i kwadrans po dwudziestej pierwszego dnia odesłałem 9 haseł.

Wersja z tworzeniem słownika na dysku nie jest może najefektywniejszym podejściem do haseł zbudowanych z trzech słów, ale jak widać wystarczyła.

Warto w tym miejscu odnotować, że słowo to pojawiało się wcześniej i gdyby człowiek pomyślał, to mógł przyjąć, że będzie i tym razem. Cóż, po fakcie każdy mądry.

Ostatnie hasło jest ciekawą i pouczającą sprawą. Na discordowym kanale pojawiła się informacja, że już dwie osoby mają 9 haseł, w dodatku gdyby połączyć ich odpowiedzi, to będzie komplet, czyli wszystkie hasła z konkursu zostały złamane. Dopuszczałem możliwość, że coś przeoczyłem, bo jak wspominałem do konkursu przystąpiłem w pośpiechu. Na innym kanale Patryk (jego writeup z łamania haseł znajdziecie na tutaj – polecam) też pochwalił się złamaniem 9 hashy.

Po krótkiej rozmowie czego komu brakuje i ustaleniu, że faktycznie chodzi o nas, Patryk rzucił podpowiedzią, że brakujący hash jest podobny do już złamanego, ale po polsku. Cóż, wielkiego wyboru nie było i wkrótce, po dosłownie czterech próbach wykonanych ręcznie, do złamanych dołączył:
283d5cb401e9de6a2e56f97166a639479fb86aee:akademiasekuraka
Komplet haseł odesłałem o 20:23 drugiego dnia konkursu.

Zarówno słowo akademia jak i sekurak oczywiście miałem w słowniku. Zabrakło wersji z deklinacją. Mam zatem pewne wnioski dotyczące słownika na przyszłość…

UPDATE: Artykuł z oficjalnym rozwiązaniem konkursu i statystykami rozwiązań.