Internet rzeczy to zwykle wdzięczy temat do reverse engineeringu – standardowy Linux 2.6.32, dziurawe antyczne mini serwery HTTP, brak zabezpieczeń… TP-Link w swojej ofercie posiada smart żarówki sterowane za pomocą aplikacja na Androida i iOS. Jakiś czas temu kupiłem dwie sztuki – LB120 (z kontrolą temperatury bieli) i LB130 (full RGB). No i wszystko fajnie, ale można by sterować światłem z poza telefonu. Niezbyt zależało mi na integracji z Apple HomeKit, ale bardziej na podpięciu jakichś akcji pod stację roboczą, czy w przyszłości pod kolejną wersję budzika. A więc czas na research.
Projekt jest w zasadzie respinem cyklu zegarków które popełniłem bazując na arduino i raspberry pi, przechodząc wreszcie na tablet z przeglądarką i prostą aplikacją w JavaScript. Główne zadanie to wyświetlanie czasu w przyjemnej formie (wybrałem zegar kartkowy) i innych przydatnych informacji – takich jak pogoda czy stan maszyn – wykorzystując projekt sauron3. Nazwa kodowa to colorovo, ale tylko dlatego że tak nazywa się producent tabletu na którym ją uruchamiam.
2.5 roku temu podjąłem pierwszą próbę zrobienia czegoś ciekawego z tabletem Colorovo CityTab pracującego na Windows 8.1 – na próbie wgrania tam sensownego Linuksa poległem, udało mi się jakimś cudem wgrać Windows 10 który jednak ciut zamula. Ostatnimi czasy tablet służy mi jako dodatkowy wyświetlacz na którym trzymam drobną webaplikację pokazującą zegar kartkowy (zawsze ładnie wyglądały), stan maszyn (projekt sauron3) i dane pogodowe wyciągane z otwartych API. Ot taki dodatek do centrum sterowania wszechświatem. Problem zaczyna się kiedy Windows 10 upiera się że chce zrobić update i wymaga 8GB wolnego dysku podczas gdy sam zużywa jakieś 11 z 16 dostępnych. No i poza chromem nie za wiele da się odpalić żeby system nie umarł z braku ramu.
Moja dziwnie rozproszona architektura storage’u rzeczy (która w samej mojej stacji roboczej ma 3 tiery!) do tej pory nie potrzebowała cold storage. Ale migracja głównego serwera storage’owego na typowym dedyku – bez płacenia za H&E czy jechania do datacenter Hetnznera wymagała zgrania gdzieś danych na moment. A w sumie teraz doszedłem do wniosku że skoro znalazłem dość tanią usługę to czemu by nie wrzucać tam backupów backupów raz na miesiąc.
Niestety przyszła i na mnie konieczność użycia backupu. Użyty urbackup, którego opisywałem jakiś czas temu zachował dane i przyszedł czas na odtwarzanie. A to znowu nie takie trywialne…
Kiedy potrzeba ustawić czas w systemie na szybko można odpalić następujące:
date -s @`curl http://time.akamai.com`
time.akamai.com to serwer używany do synchronizacji streamów z dokładnością około sekundy więc na potrzeby ustawienia rozjechanego czasu systemowego nada się akurat. Można go odkryć przypadkiem podczas analizowania własnego ruchu sieciowego. Happy hacking!
Kiedy trzeba pomanipulować rootfs-em (na przykład trochę go pomniejszyć) to oczywiście najbezpieczniej i najprościej jest zabootować się do livecd i wykonać to wszystko poza systemem. Jednak nie zawsze jest to możliwe – głównym takim środowiskiem są VPSy wszelkiej maści nie pozwalające zabootować się do środowiska rescue. Jednak nic straconego – da się!
Jako że jednak potrzebuję windowsa jako głównego systemu na stacji roboczej od zawsze nasuwał się problemy – jak się podłączyć do serwerów linuksowych czy zbudować lokalnie jakąś paczkę. Po długich eksperymentach z cygwinem, mingw i innymi wynalazkami doszedłem do wniosku że jak potrzebuję mieć shella linuksowego żeby użyć grepa, seda i awka to wystarczy bash wbudowany w dowolnego klienta gita – na przykład cudowną aplikację Github Desktop. A jeśli chodzi o prawdziwe zainstalowanie prawdziwego pakietu to nie ma innej opcji jak maszyna wirtualna. Warto jednak dołożyć kilka kroków żeby było przyjemniej. Warto wspomnieć iż o słynnym Linuksie w Windowsie wydanym przez Microsoft nie warto wspominać. To cygwinowe ubuntu (lub SuSE) które nada się do basha, ale nawet emulatora terminala nie ma porządnego…
Fartem bo fartem ale zostałem odnotowany jako osoba zgłaszająca CVE 2017-1000082 które udowadnia że „systemd is not safe to run on a security critical machine. The developers are simply too lax about safety” (~Perry E. Metzger) bowiem kiedy wpadniemy na pomysł utworzenia usługi odpalanej przez zgodnego z POSIX użytkownika o nazwie zaczynającej się cyfrą (lub co odkryto później – zawierającego znak unicode) to systemd zfailbackuje do… roota. Bez zgłasznia tego faktu najmniejszym warningiem. A to już otwarte gwałcenie bezpieczeństwa.
Ludzie dzielą się na tych co robią backupy i na tych co je będą robili. A sposób ich wykonywania jest dość ważny. No i warto żeby móc odzyskać dane i mieć coś więcej niż backup z ostatnim błędem. Tym razem pochylę się nad rozwiązaniem urbackup – miłym i przyjemnym serwerem backupów, który jednak nie zawsze jest trywialny w obsłudze.