Szczepienia po raz pierwszy

Kolejna fala pandemii to dobry pretekst do wpisu o tym, jak społeczeństwo się polaryzuje. W tej chwili jest tak, że zaszczepieni są zaszczepieni, niezaszczepieni szczepić się nie chcą, wprowadzane są kolejne obostrzenia, które… raczej nie zmienią sytuacji.

Pamiętam, że na na samym początku pandemii rozmawiałem z jedną osobą z pracy. Moim stanowiskiem było, że „teraz zamkniemy się na 3-4 tygodnie i wyeliminujemy chorobę (globalnie)”. Znajomy natomiast stał na stanowisku, że „mleko się rozlało, to poszło za szeroko, będziemy z tym żyć”. Czas pokazał, że byłem naiwny i nie miałem racji.

Mam wrażenie, że podobną naiwnością wykazują się obecnie tzw. proszczepionkowcy[1]. Argumentują, że to przez nieszczepiących się wirus mutuje, że to im zawdzięczamy kolejne fale itd. Czyli klasyczne „mamy winnego/wroga” i podział na „my i oni”. Tyle, że praktyka pokazuje, że mimo szczepień nie udało się globalnie wyeliminować chorób, na które od dziesięcioleci przeprowadzane są powszechne szczepienia. Odra, różyczka, gruźlica, polio – wszystko to występuje nadal. Mimo szczepienia praktycznie całej populacji, kilkukrotnie w ciągu życia.

Jest jedna choroba, którą udało się wyeliminować globalnie – ospa prawdziwa. I oczywiście powszechne szczepienia miały w to swój wielki wkład. Jednak jest to wyjątek, pozostałe patogeny nadal funkcjonują, mutują, zarażają. Mimo szczepień i leczenia. Albo i dzięki nim, jak w przypadku lekoopornej gruźlicy.

Co nie znaczy, że szczepionki nie działają czy nie mają sensu. Generalnie jest to jedna z lepszych metod minimalizacji wpływu choroby na ludzkość. Tyle, że nie działają zerojedynkowo. Ani zaszczepienie nie daje gwarancji odporności, ani nie jest w 100% bezpieczne. Każda szczepionka to jakieś ryzyko i jakaś odporność. Dlatego niektóre szczepionki podaje się tylko w miarę potrzeb, np. przy wyjazdach do krajów, w których dana choroba jest obecna.

Tymczasem proszczepionkowcy próbują przymusić sceptyków do szczepienia, na przykład próbując ograniczyć dostęp do usług. Wydaje mi się, że mocno przy tym zapominając o rzeczach ważniejszych, takich jak równość obywateli, ochrona prywatności i okolice. Przykładem są lokale, które wymagają okazania certyfikatu szczepienia przy wejściu.

Czemu uważam, że to złe? Ano dlatego, że certyfikat zawiera i dane osobowe[2], i informację o przebytych chorobach. OK, jednej chorobie. Nadal, nic właścicielowi lokalu czy pracodawcy do tego. Dodatkowo, przetwarzanie tych danych odbywa się – wnioskując po zdjęciach – na losowych urządzeniach, być może nawet prywatnych smartfonach pracowników firm. Jeśli komuś wydaje się, że „to tylko odczytanie QR-code, na chwilę” to… niekoniecznie. Absolutnie nic nie stoi na przeszkodzie, by te dane zapisać. Choć może to tylko moje zboczenie zawodowe.

Nie miałem okazji testować osobiście, więc nie wiem, czy dodatkowo należy się wylegitymować dowodem tożsamości. Z jednej strony, bez tego okazywanie certyfikatu nie ma sensu, bo może być ważny i poprawny ale… w zasadzie czyjkolwiek, byle z grubsza wiek i płeć się zgadzały. Z drugiej, rodzi kolejne problemy, bo czy losowa osoba ma prawo nas wylegitymować? Dane z okazywanego dowodu łatwo skopiować choćby ukrytą kamerą i mogą posłużyć do późniejszych nadużyć.

Na sam koniec dodam, że fakt bycia zaszczepionym rodzi fałszywe poczucie bezpieczeństwa. Znacie „po co nam maseczki, przecież jesteśmy zaszczepieni”, albo „skoro pracownicy są zaszczepieni, to niech pracują na miejscu”? Ja znam. Tymczasem zaszczepieni także chorują i przenoszą chorobę, zaś skuteczność szczepionek przeciw covid-19 nie jest ani dobrze zbadana, ani rzetelnie komunikowana. Ale o tym może w kolejnym wpisie…

Mam wrażenie, że zaczynamy – jako społeczeństwo – gubić poczucie solidarności, wspólnoty, tolerancję i głębszy sens. Zamiast tego następują próby narzucania światopoglądu i polaryzacja.

[1] I bardziej chodzi tu o pewną postawę światopoglądową, nie o sam fakt szczepienia lub nie, czy „wiarę” w działanie szczepionek lub jej brak.
[2] Imię, nazwisko, datę urodzenia. Tu można przeczytać, co i jak zapisane zawiera dokładnie certyfikat covidowy.

Szczepienia

Szczepienia i rejestracja na nie to ostatnio modny temat. Przynajmniej w mojej bańce. A to ktoś się szczepi, a to szuka terminu, a to udało mu się znaleźć wcześniejszy. Nie bez znaczenia jest fakt, że obecnie codziennie jakieś roczniki zaczynają się kwalifikować do szczepienia. W stosunku do początków szczepień, gdy szczepiono tylko wybrane grupy oraz seniorów to duża zmiana.

Szczepienia
Źródło: Thumbnail.ai

Jak wygląda rejestracja przez internet? Można/trzeba wybrać województwo i termin, czyli zakres dat. Także czy punkt stacjonarny, czy mobilny. Duży szacun za możliwość wyboru szczepionki. Wszytko to da się zrobić online przy pomocy profilu zaufanego. Ale jest też możliwość rejestracji przez internet dla tych, którzy profilu nie mają (nie testowałem).

Tyle dobrego. Klikanie na stronie przypomina wyścig. Kumpel uprzedził mnie, że nie ma czasu na sprawdzanie kalendarza itp. Trzeba wiedzieć zawczasu i od razu wybierać. Wtedy może zdążymy. Jeśli klikniemy źle, to niby jest opcja rezygnacji i wybrania ponownie. Nie testowałem.

Biada tym, którzy mieszkają na skraju województw. Muszą sprawdzać każde województwo osobno. Poza tym, wybór województwa jest za szeroki. Jako zmotoryzowany nie mam problemu z podjechaniem nawet powiedzmy 50 km. Ale miejscowości, zwłaszcza mniejszych i czasów dojazdu nie znam na pamięć. Na sprawdzanie na mapie gdzie jest Pcim Dolny czasu, jak wspominałem, nie ma. Zdecydowanie brakuje mi opcji „punkty szczepień w promieniu do N km”.

Sporym ułatwieniem jest strona szczepienia.github.io. Niestety, dane są tam odświeżane stosunkowo rzadko i dotyczą tylko wybranych miast. To projekt amatorski i w pewnym momencie pobieranie danych na potrzeby strony zostało zablokowane. Z pomocą tej strony może nie znajdziemy punktu, ale korzystanie z niej pozwala się zorientować w dostępności i terminach w danym województwie czy mieście.

Ponadto, wyżej wymieniona strona się rozwija. W momencie pisania wpisu nie było takiej możliwości, a obecnie pozwala ona na wyszukanie punktów i terminów w zadanym promieniu (10, 25, 50 oraz 100 km).

W całym systemie brakuje mi też opcji „dyspozycyjny”. Typu: daj mi znać min. 4h wcześniej, a w obrębie mojego miasta po dany typ szczepionki podjadę. Tak, niektórzy są w stanie przeorganizować sobie dzień na tę godzinę czy dwie. Zresztą w ogóle nie ma opcji push, gdzie system sam proponuje najbliższy termin dla wybranych parametrów.

Niemniej, da się zarejestrować przez internet i nie potrzeba do tego specjalnej wiedzy. Mogłoby to być zrobione lepiej, ale jest całkiem używalne. Wg statystyk ze strony, w ostatnich siedmiu dniach wykonywanych jest niemal 220 tys. szczepień dziennie. Biorąc pod uwagę, że od początku programu wykonano jedynie 12,6 mln szczepień, to ogromy przyrost. I więcej, niż zapowiadane pierwotnie przez rząd 850 tys. tygodniowo. We wpisie z okazji rozpoczęcia szczepień odnotowałem ówczesne dane. Robiliśmy 208 tys. szczepień. Tyle, że tygodniowo, nie dziennie.

Na koniec garść porad dla tych, którzy będą się rejestrować.

Przez panel nie da się zrobić wszystkiego tego, co potrafią obsługujący infolinię. W szczególności przyspieszyć terminu bez wcześniejszej rezygnacji z wybranego. Przydatne zwłaszcza dla tych mniej mobilnych, przywiązanych do miasta. Wystarczy wybrać jakiś termin w wybranej lokalizacji, a następnie parokrotnie spróbować znaleźć wcześniejszy. Można powtarzać.

Wcześniejsza rejestracja nie oznacza wcześniejszego terminu. W panelu pojawiają się nowe terminy, warto sprawdzać. Może być warto poczekać, bo coś się zwolni.

Jeśli komuś zależy na wcześniejszym terminie i konkretnej szczepionce, a jest mobilny, warto sprawdzić inne województwa. Różnice są znaczne. Jedyne o czym warto pamiętać w takiej sytuacji, to że będzie trzeba przyjechać w to samo miejsce także na drugą dawkę.

Pfizer i Moderna to praktycznie to samo. Ten sam typ szczepionki (mRNA), też dwie dawki, skuteczność taka sama.

UPDATE Dodatkowy akapit o szczepienia.github.io, rozszerzeone info o przyspierzaniu terminów.

Sprawdzanie DNS sinkhole

W poprzednim wpisie o phishingu w Polsce pisałem, że chcę zbadać jak wygląda adopcja listy hole.cert.pl wśród ISP do DNS sinkhole zapytań o domeny używane do phishingu. Odzew był mniejszy, niż się spodziewałem, ale coś udało się zrobić. Trochę się nauczyłem i może się to przydać także do względnie łatwego, samodzielnego sprawdzania np. cenzury w sieci, nie tylko w Polsce.

Wyniki

Jeśli kogoś interesują wyniki DNS sinkhole na podstawie hole.cert.pl wśród ISP, to znajdzie je w repo. Jak widać próbka jest mała, ale pewien trend daje się zauważyć. Nawet duzi ISP kablowi nie wykorzystują listy od CERT Polska. Na pewno – co oczywiste – wykorzystują ją sygnotariusze porozumienia. CERT trafnie zauważa, że lista może być wykorzystywana nie tylko na DNS operatorów, ale także na innych poziomach (Pi-hole, filtry AdBlock). Przypomnę jednak, że chodziło mi o sprawdzenie jaka jest adopcja listy na poziomie infrastruktury ISP. Czyli bez wymagania dodatkowych urządzeń czy działań po stronie użytkowników.

Pierwotny pomysł, czyli skrypty uruchamiane przez osoby trzecie w zasadzie ląduje w koszu. Wykorzystanie sond z projektu RIPE Atlas probe pozwala sprawdzić wszystko samodzielnie, bez angażowania innych ludzi. Wyniki się pokrywają, więc w repo zostawiłem zebrane ręcznie. Przy okazji widzę, że przy wynikach przydała by się data pomiaru. Do wyciągnięcia z commitów, ale lepsza byłaby podana jawnie.

RIPE Atlas probe

Dawno temu pisałem już o RIPE Atlas probe. Ogólnie są to małe pudełka dystrybuowane przez RIPE i uruchamiane przez ochotników (zarówno firmy jak i osoby fizyczne) w swoich sieciach na całym świecie. Pozwalają na wykonywanie pomiarów zlecanych przez panel RIPE. Istnieje też wersja programowa.

Użycie RIPE Atlas probe daje całkiem spore, zwłaszcza jeśli chodzi o zasięg pomiarów, możliwości ale… nie jest proste. Po pierwsze, trzeba mieć konto i kredyty. O ile założenie konta to moment, o tyle zebranie kredytów chwilę trwa – trzeba mieć uruchomioną sondę. No chyba, że dostaniemy je od kogoś, kto już je zgromadził (dziękuję!).

Po drugie, parametrów jest dużo i podobnie jak zwracane wyniki nie są do końca oczywiste. Np. w JSON szczegółowa odpowiedź jest zakodowana w base64, przez co początkowo uznałem (nie tylko ja…), że jej tam nie ma. Dekodowanie odpowiedzi DNS jest proste i opisane w dokumentacji, z przykładami w różnych językach. Niemniej, bariera wejście jest większa, niż się spodziewałem.

Sytuacji nie poprawiał fakt, że panel RIPE jest właśnie aktualizowany czy też przerabiany i nie wszystko wydaje się działać poprawnie. Np. wyszukiwania sond zwracają różne wyniki po API i przez stronę WWW.

RIPE Atlas Tools

Ostatecznie stanęło na tym, że korzystałem z API za pośrednictwem RIPE Atlas Tools. Do prototypowania i sprawdzeń ręcznych całkiem użyteczne. Nie jest to narzędzie idealne, na przykład status jest podawany numerycznie i… nie znalazłem opisu, który co oznacza. TBH szybciej było mi sprawdzić metodą porównania z wynikami z panelu. W każdym razie status connected to 1. Opis użycia w CLI:

Usage: ripe-atlas probe-search [-h] [--asn asn] [--asnv4 asnv4] [--asnv6 asnv6] [--prefix prefix] [--prefixv4 prefixv4] [--prefixv6 prefixv6]
[--location location | --center center | --country country] [--radius radius] [--tag tag] [--limit limit]
[--field {id,asn_v4,asn_v6,country,status,prefix_v4,prefix_v6,coordinates,is_public,description,address_v4,address_v6,is_anchor}]
[--aggregate-by {country,asn_v4,asn_v6,prefix_v4,prefix_v6}] [--all] [--max-per-aggregation max_per_aggregation] [--ids-only] [--status {0,1,2,3}]

Pora na parę przykładów użycia. W zasadzie wystarczają one do sprawdzenia jak z sieci danego ISP na określonym serwerze DNS jest resolvowana domena, czyli tego, co było przedmiotem projektu. Znalezienie aktywnych sond w sieci Orange (AS5617):

ripe-atlas probe-search --asn 5617 --country pl --ids-only --status 1

Sprawdzenie rozwiązywania domeny (tu: example.com) na wskazanym serwerze DNS (tu: 8.8.8.8) i sondzie (ID 1234):

ripe-atlas measure dns --query-argument example.com --from-probes 1234 --target 8.8.8.8

Powyższe zwróci w konsoli wynik w postaci już zdekodowanej. Dodatkowo będzie tam link do wyniku w panelu RIPE, który można pobrać w postaci JSON. Wtedy trzeba zdekodować odpowiedź DNS samodzielnie w sposób linkowany wyżej.

Na koniec wystarczy porównać, czy oczekiwany wynik jest taki sam, jak z serwera co do którego mamy pewność, że nie zmienia odpowiedzi i już wiemy, czy mamy do czynienia z DNS sinkhole. No prawie, bo domena może mieć np. zróżnicowane rozwiązywania nazwy na podstawie geolokalizacji. Można oczywiście sprawdzać większe ilości sond itp., ale do sprawdzania ew. cenzurowania stron lepsze mogą być zapytania HTTP – blokada bowiem może być na innym poziomie niż rozwiązywanie nazw domen.

Co dalej?

Ustalić adresy IP serwerów DNS przydzielanych klientom przez największych polskich ISP. Sądziłem, że będzie trywialne. Niestety myliłem się. Kiedyś można było bez problemu znaleźć je w sieci na stronach poszczególnych ISP. Teraz często nie chwalą się oni tą informacją. Np. nie udało mi się znaleźć tej informacji np. dla operatorów Vectra i Toya[1]. Tu liczę na pomoc czytelników w postaci podania nazwy ISP i przydzielonych przez niego adresów serwerów DNS.

Pełny automat. Powyższe przykłady są dobre do ręcznego wykorzystania. Mam wrażenie, że odpytywanie przy pomocy RIPE Atlas Tools słabo nadaje się do oskryptowania. Obsługa timeoutów, parsowanie odpowiedzi, zapisywanie wyników – wydaje mi się, że lepiej będzie napisać wszystko w Pythonie.

Badanie czasu od pojawienia się domeny na liście do czasu zablokowania u danego ISP. Bez pełnego automatu nie ma co podchodzić do tematu. I pewnie do przemyślenia jak to potem sensownie interpretować, pewnie trzeba będzie wspomóc się statystyką.

Motywacja mi nieco siadła, więc pewnie zejdzie dłuższa chwila nim coś nowego się pojawi.

[1] Dla Netii z kolei znalazłem serwery DNS, ale nie było ochotnika do zrobienia testu wersją ze skryptem. Przy pomocy sond RIPE Atlas ustaliłem, że nie korzystają z listy CERT Polska, ale z publikacją tego poczekam na zmianę flow zamieszczania danych.