TGI station



Назад

pipe.2032 :: Политика, экзамены и картография
=============================================

subject: Политика, экзамены и картография
03.02.2021 15:35
vit01 (mira, 1)  
 
С новым годом никого поздравлять не буду, смысла в этом мало, да и время уже вышло. Но зато расскажу, что за это время успело произойти.


А произойти успело много, надо сейчас просто подвести итоги, к некоторому уже не возвращаться, а некоторое отложить на будущее

## Продолжаем автоматизацию

У предыдущего поста про автоматизацию было много отзывов мне лично, поэтому не лишним будет упомянуть, что было улучшено со времени создания той автоматизированной конфигурации:

1. Наконец-то получилось заставить работать интерпретатор языка программирования GDL под ArchLinux. PKGBUILD [доступен]( https://aur.archlinux.org/packages/gnudatalanguage-gdlkernel ) в Arch User Repository, и им можно свободно пользоваться. Эта сборка GDL свежая, из их официального репозитория. К сожалению, так и не получилось заставить GDL-kernel для Jupyter строить графики внутри окна браузера, но ничего страшного, в отдельном окне графики нормально отображаются.

2. В научной конфигурации добавлен модуль GDL-kernel для Jupyter и пакет IDLAstro для солнечников. Поскольку я фанат Jupyter, этого стоило ожидать

3. Добавил инструкции для установки [JHelioViewer]( http://www.jhelioviewer.org/ ) - программы для просмотра трёхмерной карты Солнца, которая использует данные нескольких спутников в разных диапазонах. Она позволяет не только скачивать изображения и строить видеоряды, но и получать данные о солнечных вспышках и активных областях за какой-то период, используя данные Heliophysics Events Knowledgebase. А ещё я завёл эту программу на Archlinux, сделав [пакет для AUR]( https://aur.archlinux.org/packages/jhelioviewer4-bin ). Так что это означает, что Арч готов для физики Солнца

4. В конфиге Archlinux устаревший пакетный менеджер yaourt заменён на yay. Ещё я добавил конфиги тачпада и вентиляторов для макбуков.

5. В README.md своего [репозитория]( https://github.com/vit1-irk/lazyinstall-puppet ) по автоматизации я добавил будущие планы и размышления по поводу апгрейда своих скриптов. Настройка серверов остаётся в силе и постепенно будет допиливаться.

## Экзамены и каникулы

Так, ну чё всё о техническом да о техническом. В каникулы я готовился к трём экзаменам:

* Физика конденсированного состояния
* Физика Солнца
* Физическая кинетика

Все их сдал на 5, чему, конечно, очень рад. Сдача проходила по удалёнке, мы писали ответы на вопросы, фотографировали и показывали+рассказывали через демонстрацию экрана. К сожалению, у меня есть такая особенность, что всё делаю в последний момент, поэтому я готовился тоже в последний момент, очень стрессовал и поломал себе режим. Но всё обошлось.

Новый семестр начался с 1 февраля. Будут практикумы по астрофизике и лабораторные работы по программированию, о них расскажу позже. А ещё будет политология :)

К сожалению, я так и не сдал отчёты по выездной практике и некоторые лабораторные работы (отчёты по ним есть, но их просто не отправил). Конечно, сдам их обязательно, но стипендию я походу уже потерял.

Диплом надо писать, уже выбрал тему, но пока не приступал к выполнению, потому что там кое-что нужно подцепить из экспериментальных данных. Но, думаю, нужно как можно скорее приступать и делать по частям. Про содержание диплома будет в следующих постах.

## Выход на улицу и зачем это делается

Наверное, многие мои читатели знают, что я поддерживаю российскую оппозицию пролиберального толка. Ситуация с Навальным, с отравлением, с его расследованиями и с попытками власти по беспределу упечь его ещё за решётку не оставила меня равнодушным.

На митинги я частенько хожу, и не для того чтобы абстрактно "побунтовать", а для того чтобы выразить поддержку тем или иным политикам, в том числе Алексею. Ведь власти очень любят говорить, что оппозиция - это меньшинство, что никто не поддерживает и так далее. Первоочередная задача мирно выходящих на улицы состоит в том, чтобы своим количеством показать, что это не так. Другими словами, это прорыв информационной блокады.

Выход на улицу в России всегда сопряжён с некоторыми рисками. В нашей стране пусть и прописано в законах, что любые граждане имеют право на мирные собрания, шествия и митинги, но власть свои же законы соблюдать не спешит. И даже если ты ничего не нарушал, тебя всё равно могут загрести в ментовку, выписать штраф и.т.п. Поэтому у нас даже просто взять и выйти уже проявление смелости, хотя чисто статистически опасность задержания сильно преувеличена, вероятность не больше 5 процентов.

Так вот, целями выхода на улицу в поддержку какого-то политика (или против действующей власти) являются:

- показать своим числом реальный рейтинг или антирейтинг политиков
- мобилизовать сторонников и привлечь новых через средства массовой информации (люди смотрят стримы на ютубе и на других сервисах, пишет пресса и так далее)
- спровоцировать ветви власти на конфликт друг с другом, чтобы требования протеста выполнились
- спровоцировать забастовки и другие процессы, которые приводят к выполнению требований протеста или к смене власти

## Как сходил на шествия и провёл фото-трансляцию

В эти разы я решил не просто сходить на шествия здесь в Иркутске, но и активно фотографировать. Во-первых, в случае произвола со стороны ментов фотки помогут их идентифицировать (в Беларуси это успешно применялось), во-вторых, это даст понять, где я в данный момент нахожусь и что со мной всё в порядке.

Android-приложение Nextcloud, которым я пользуюсь, поддерживает так называемую **автоматическую загрузку**. Это значит, что после того как ты сделаешь фото, оно сразу же улетает в облако. Каталог с фотками можно сделать публичным и отправить ссылку на него товарищам. То есть получается такой вот почти мгновенный фоторепортаж.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/H30cumSQtFPOkHA…

Ещё в Nextcloud есть приложение **PhoneTrack**, которое представляет собой GPS-трекер. На одной из акций я решил ради теста им воспользоваться, чтобы, если вдруг меня задержат, то товарищи (сидящие в этот момент дома) сразу знали, куда ехать и где меня спасать. PhoneTrack состоит из [андроид-приложения]( https://f-droid.org/ru/packages/net.eneiluj.nextcloud.phonetrack/ ) и карты в Nextcloud, ссылкой на которую можно поделиться. К сожалению, на 20-градусном морозе у меня замерзал и вырубался телефон, да и GPS съедал много батареи, поэтому толку от GPS-трекинга было мало. А ещё на вебморде PhoneTrack интерфейс очень плохо отображается на мобильных устройствах, и карту с метками нормально можно смотреть только с компьютера.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/A5M7tfSaF3ZeeMa…

Мгновенное оповещение подписчиков через уведомления я делал через **JupyterLab и ipywidgets**. Там написан скрипт-подпрограмма, которая рассылает сообщения от моего имени в разные сервисы. А через ipywidgets сделано текстовое поле и кнопка отправки. Конечно, интерфейс Jupyter недостаточно идеален на мобильных устройствах, но с каждой версией он улучшается и позволяет гибко писать скрипты и интерфейсы под любые потребности.

![]( https://miro.medium.com/max/700/1*K24B_sxJ6Y-PHeLTURyRTw.gif )

## 23 января

* [Ссылка на фотографии]( https://alicorn.tk/dashie/s/28qtoAsdmfFYXBj )

В Иркутске поведение у ментов на публичных мероприятиях всегда было достаточно спокойное. Они посмотрят, поснимают, а потом через несколько дней назначат штраф в пару десятков тысяч рублей. Да и то рассчитывают на штраф только медийные личности, которых все знают. Так же было и 23 числа. Народу было очень много, тысячи 4 (или даже больше), шествие растянулось с улицы Урицкого до здания администрации на сквере Кирова и там уже закончилось митингом. На табличке у здания администрации повесили синие трусы, сделали пару надписей и повесили плакатик. Самый главный из звучащих лозунгов был "Путин - вор".

Всё прошло достаточно спокойно и без происшествий, хотя организаторов из местного штаба Навального заранее упекли в клетку, ещё до начала акции.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/97FmeZHv3X1cVxX…

## 31 января

* [Ссылка на фотографии]( https://alicorn.tk/dashie/s/wtxmDqaSNHZYjDc ) (возможно, будут дополнения)

Поскольку в прошлый раз всё прошло достаточно спокойно, то бункерного деда это не устроило, и он решил нагнать страха у людей. У здания администрации и у сквера Кирова заранее выставили заборы-ограждения, а на улицу Урицкого завезли снег и соорудили сугробы, чтобы мешать передвижению людей.

Шествие должно было пройти по прежнему маршруту, но как только всё началось, то пригнали "мальчиков по вызову", которые своими щитами перекрыли улицу с двух сторон, чтобы у людей не было возможности выбраться. Я тоже был внутри оцепления и ждал, пока всё рассосётся, и можно будет продолжить движение (пусть и другим путём). Народу в этот раз в целом было меньше, потому что было очень холодно.

Позже я пришёл к зданию администрации, куда через некоторое время согнали и ментов под прикрытием с камерами, и омон в огромных количествах. Почуяв неладное (а именно паркующиеся машины без опознавательных знаков), я вовремя свалил и делал съёмку из безопасного места. Кроме омона в конце концов пригнали ещё и военных, и кучу длинных автобусов, в один из которых сажали задержанных людей, а в других омон потом отогревался. Классические автозаки тоже пригнали.

В Иркутске такое первый раз, и у меня вызвало это недоумение, однако я уже нечто подобное ожидал, потому что в новостях уже проскакивали заголовки о кадровых перестановках в МВД после первой акции. Вместо гражданского туда поставили вояку, вот и начали жестить.

Ещё в телеграм-каналах проскочил слух, что силовиков свозят из других регионов, чтобы никому из них не пришлось бить своих земляков. Неплохой психологический приём, однако любой, кто работает в омоне, уже прекрасно себе представляет, что пошёл на сделку с совестью.

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/1ebQVPjzEClN2oE…

Мне не хочется впадать в уныние, и я активно придумываю, что можно сделать даже в той ситуации, которая нынче происходит у нас в стране. Поэтому по поводу протестов сейчас рано делать выводы, надо брать и раскапывать проблему изнутри. А уехать за границу мы всегда успеем.

## Прикручиваем карты к Jupyter

А знаете что, товарищи? Раз теперь Навального упекли надолго в тюрьму, а многих сотрудников Фонда Борьбы с Коррупцией пересажали, то нам с вами надо потихоньку учиться самим обрабатывать данные и делать расследования так же, как делают они. Это работа пусть и кропотливая, и требует много ресурсов (для вытаскивания баз данных), но сама по себе выполнимая и по силам любому, кто умеет программировать.

У себя в блоге я уже обозревал некоторые инструменты для работы с данными, но не касался одного очень важного способа представления информации - геоданных. Картография и геоинформационные системы занимают серьёзное место в любом расследовании.

Поэтому предлагаю вам познакомиться с библиотекой **ipyleaflet**, которая позволяет построить собственную интерактивную карту, на которой можно располагать разные объекты и визуализировать те или иные явления. ipyleaflet работает на базе Jupyter Notebook или JupyterLab и позволяет строить карты прямо внутри документов-блокнотов Jupyter. Карту можно двигать мышкой, уменьшать и увеличивать, включать и выключать различные слои и помещать туда разные виджеты.

[Документация ipyleaflet]( https://ipyleaflet.readthedocs.io/en/latest/ )

Продемонстрирую небольшой пример, где мы строим карту с центром в одном месте и помещаем туда надпись

====
import ipywidgets
from ipyleaflet import *

center = [44.4195, 38.2053]

s = Map(center=center, basemap=basemaps.Esri.WorldImagery, zoom=16)
marker = Marker(location=center, draggable=False)
s.add_layer(marker)

message1 = ipywidgets.HTML("h3Дворец Путина/h3")
popup = Popup(location=center, child=message1, close_button=False,\
auto_close=False, close_on_escape_key=False)

s.add_layer(popup)
marker.popup = popup
display(s)
====

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/yMPWRAOnw7seBS4…

Ну что, скучно, девочки? Как бы не так...

## Смотрим ботов на карте

Вместо того чтобы выводить уже известные данные на карту (а про дворец Путина уже все знают), давайте сделаем своё мини-расследование. Каждому держателю своего сервера приходится сталкиваться с периодическим наплывом ботов и злоумышленников, которые пытаются подбирать логины и пароли на SSH-сервер.

*для справки: существует расширение fail2ban, которое при нескольких неуспешных попытках входа навсегда банит ip-адрес, здесь для чистоты эксперимента я им не пользуюсь*

Мы можем взять лог запросов и проанализировать, из каких городов и стран приходит больше всего вредоносного трафика. Вот этой командой можно вытащить IP-адреса, с которых были неуспешные попытки входа на сервер:

====
grep "Failed" /var/log/auth.log | grep "ssh" | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" > ~/ips.txt
====

Используя базу данных **geoip**, можно узнать примерные географические координаты сети нужного IP-шника и построить их на карте. Воспользуемся библиотекой python-geoip и построим карту уникальных IP-адресов ботов.

====
from geoip import geolite2

f = open("ips.txt").read().splitlines()
lookups = [geolite2.lookup(i) for i in set(f)]
locations = [i.location for i in lookups if i is not None]

m = Map(center=(0, 0), basemap=basemaps.OpenStreetMap.Mapnik, zoom=2)

heatmap = Heatmap(locations=locations, radius=5, min_opacity=0.2, blur=2)
m.add_layer(heatmap)
display(m);
====

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/6eiaA6sfAcBQkgd…

Как можно увидеть, боты, подбирающие пароли, есть на всех континентах. Больше всего такого трафика идёт из Европы, США и Китая. Теперь сменим карту и посмотрим уже статистику не по количеству адресов ботов, а по количеству запросов: какие хакеры самые настойчивые и подбирают пароли до последнего.


====
lookups_ddos = [geolite2.lookup(i) for i in f]
locations_ddos = [i.location for i in lookups_ddos if i is not None]

m1 = Map(center=(0, 0), basemap = basemaps.Stamen.Terrain, zoom=2)

heatmap1 = Heatmap(locations=locations_ddos, radius=8, min_opacity=0.2, blur=2)

opacity_slider = ipywidgets.FloatSlider(description='Видимость:', min=0.01, max=0.5, value=0.2, step=0.01)
ipywidgets.jslink((opacity_slider, 'value'), (heatmap1, 'min_opacity'))
widget_control1 = WidgetControl(widget=opacity_slider, position='topright')
m1.add_control(widget_control1)
m1.add_layer(heatmap1)

display(m1);
====

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/7lXGw16lN2vUNpu…

Итого: самые настойчивые хакеры ломают из Пекина. Также в лидерах по количеству запросов был Лондон. При желании можно взять и вычислить конкретную подсеть, но в завершение данного мини-расследования давайте построим статистику IP-адресов по каждой стране. Для этого понадобится база с географическими координатами стран, которую можно взять [вот здесь]( https://developers.google.com/public-data/docs/canonical/countries_csv ) и загрузить через библиотеку **Pandas**. В программе ниже я подсчитываю количество активных адресов ботов из каждой страны и наношу на карту в порядке возрастания

====
import pandas as pd

countries = {}

for ip in lookups:
if ip == None:
continue
if not ip.country in countries.keys():
countries[ip.country] = 1
else:
countries[ip.country] += 1

countries_rank = sorted(countries.keys(), key=lambda id: countries.get(id))
countries_loc = pd.read_csv("countries.csv", sep=" \t", engine="python")

m2 = Map(center=(0, 0), basemap = basemaps.Stamen.Toner, zoom=3)

for country in countries_rank:
query_number = countries.get(country)
info = countries_loc[countries_loc["country"] == country].values[0]
text = "{1}: {0}".format(query_number, country)

popup = Popup(location=(info[1], info[2]), child=ipywidgets.Label(text),\
close_button=False, auto_close=False, close_on_escape_key=False)
m2.add_layer(popup)

display(m2);
====

https://ii-net.tk/ii/ii-point.php?q=/f/f/alicorn.blog/ahOGgSuRZ9ARXEV…

Пример с китайскими ботами - это просто пример. На вашей карте может быть любая другая полезная информация, будь то биллинги сотовой связи или авиаперелёты. ipyleaflet позволяет выводить маршруты, строить векторные карты скоростей, выделять границы той или иной местности, наносить слои друг на друга и многое другое. А ещё можно наносить информацию в реальном времени.

В заключение я хочу сказать, что мы уже живём в таком мире, где данные о нас с вами собирают все, кому только не лень. Данные утекают и перепродаются на раз-два, и даже злоумышленникам во власти уже сложнее скрывать следы своих преступлений, потому что их действия уже становятся достоянием общественности. Мы, как люди, умеющие программировать и работать с данными, должны пользоваться своими знаниями, чтобы контролировать власть имущих и следить за ситуацией в стране и мире.

Будьте сильными и смелыми, поняши!

Этот пост в блоге: https://blog.alicorn.tk/posts/exams-politics.html
--------------------------------------------------------------------------------