ДержХак 2014 + Х = eGoverment. Поиск переменной
На хакатон мы пошли втроем: я (Женя) и мои товарищи Максим и Андрей. Мы с Максимом учимся на 4м курсе факультета прикладной математики в КПИ, Андрей — старший научный сотрудник Института кибернетики им. Глушкова НАН Украины.
Задача хакатона была разбита на 2 направления:
1. Информационная безопасность (обойти защиту поиска в едином госреестре).
2. Создание новых сервисов с использованием предоставленного API.
API предоставляло поиск по единому госреестру юр. и физ. лиц — предпринимателей.
Мы решили создавать новый сервис. Надо было выяснить, как выглядит API наших реестров, и проверить свои силы в создании проекта за сутки. Для большего интереса решили поменяться ролями с Максимом: он занялся написанием необходимого функционала на JS (хотя обычно пишет под .NET), я взялся за парсинг данных, получаемых по API на Java (хотя обычно пишу frontend), а Андрей эти данные вытаскивал.
Но все не так просто, как звучит!
Первый день — API. Придя на место, мы первым делом решили ознакомиться с любезно предоставленными нам распечатками, содержавшими описание API. На этом моменте наступил первый шок: то, что гордо именовалось «прототип системи конвертації даних пошуку в Єдиному державному реєстрі юридичних осіб та фізичних осіб-підприємців у формат, придатний для сприйняття автоматизованими системами», оказалось простейшей вещью. Система позволяла найти физ. лицо по номеру паспорта или юр. лицо по восьмизначному коду (ID) в реестре. В ответ сервер плевал XML. Всё.
То, что компанию нельзя искать по названию, — только по коду (узнать который можно, только найдя ее в реестре), Максим сразу обозвал безумием. Тогда он и подозревать не мог, что на этом проблемы не закончатся.
Пока мы собирали в кучу потенциальные идеи для будущего сервиса, постепенно подтягивались другие участники, а организаторы подключали видеосьемку и тестировали большой центральный экран (метра 3×7 в размерах). Половину времени на нем шел видеоряд с красиво подсвеченными кусками кода в перемешку с кадрами с турниров по Dota 2. Также — видимо, чтобы участники не скучали — постоянно играла музыка, громкость которой можно было оценить как «отвлекающая».
Где-то через час собрались все официальные лица, и провели торжественное открытие. Так как, простигосподи, документацию выдали на входе, к моменту открытия все команды уже усердно трудились. Мы уже определились с идеей и создали программную базу для нашего проекта, но еще не начали работать с API.
Вскоре, когда API стал барахлить, люди осознали, что те, кто создает сервисы, и те, кто пытается обойти защиту, сидят на одном интерфейсе. И когда одна из команд-взломщиц добилась какого-то успеха, об этом узнали все.
Жюри и Менторы. Тут сразу стоит отметить, что жюри, которое позже будет распределять места, в первый день если и присутствовали на мероприятии, то только на его торжественной части. А те пару менторов, которые были, ушли сразу после обеда, хотя идейно должны были провести эти сутки кодинга с нами в одном помещении.
Экосистема. На любом подобном мероприятии одной из основных и неотъемлемых составляющих является наличие свободного доступа к интернету. На «ДержХаке» интернет был качественный, но не у всех. К примеру, среди членов нашей команды интернет отлично работал только у Максима, у Андрея — с переменным успехом, а у меня — практически не работал вообще. Организаторы пытались исправить ситуацию, но не всегда получалось.
Еда. Как известно, для продуктивной работы, кроме ясной головы, необходим полноценный рацион питания. В этом плане хакатон более чем порадовал. Ожидали печеньки и пиццу, а получили роскошный ресторан с отличным обслуживанием, который оценили бы даже самые привередливые гурманы. После этого настроение, конечно же, поднялось.
Реализация сервиса. Хорошо подкрепившись и распределив задачи за обедом, мы вернулись к работе, и каждый занялся своей задачей:
— Андрей занялся вытаскиванием данных с их сервера.
— Я приступил к парсингу получаемых
— Максим начал работу над графической визуализацией.
Что сложного в получении доступа к данным, если у вас есть API?
Как уже говорилось ранее, получить XML с данными о предприятии можно только зная его индентификатор, поэтому нам не оставалось ничего другого, кроме как перебирать все подряд. ID был
Результаты, возвращаемые сервером, решили подкинуть еще одну ложку дегтя. Сравнив 3 первых полученных результата, я заметил сразу несколько несовместимостей. К примеру, один из файлов содержал поля «Фамилия» и «Имя Отчество», а другой — «Фамилия Имя Отчество» в виде одного поля. Также удивил формат куска XML с учредителями: в одном файле это был массив Founders[Founder["name","code","info"], Founder["name","code","info"]].
В другом файле, где учередитель был всего один, было Founders[Founder["name","code","info"]]. Вроде как всё хорошо, не правда ли? Но тут в глаза бросается третий файл: Founders["name","code","info«].
Эти и многие другие неоднозначности отняли много времени на учет всех «стандартов», но, к счастью, это решалось просто.
Примерно к 5 часам вечера ушли все организаторы, и осталось около 25 участников из 100 и охрана. Уход участников можно объяснить возможностью использования API удаленно из дома, но как понимать отсутствие вообще кого-либо из оргов в ночной период? Быть может, госслужащие просто не понимают, что после шести вечера тоже может что-то происходить. Вместе с организаторами исчезли назойливая музыка и ребята, которые днем брали довольно забавные интервью. Забавные они были тем, что репортеры понятия не имели, что это за мероприятие. Всё их представление укладывалось в «тут собрались хакеры что-то взламывать». Некоторые вопросы были по теме, но ответов ребята не понимали. Ну, это не их профиль, — хорошо что хоть пытались осветить событие.
Цель оправдывает средства. Тем временем кодинг шел успешно. Оценив свой прогресс, мы подумали, что даже сможем выкроить пару часов сна и быть свежими на презентации. Действительно, к двум часам ночи проект был почти готов. Мы сделали карту с отображением всех предприятий и возможностью фильтровать результаты по различным параметрам, например, по виду деятельности компании. Чтобы отобразить все это, пришлось набить себе словарь координат по почтовым индексам, так как популярные геокодеры не дают выжимать себя бесплатно. Также прикрутили красивые графы, позволяющие найти общего основателя компаний или посмотреть дочерние предприятия. Еще сделали генерацию pdf-выписки с информацией по компании, подписанной электронной цифровой подписью. Такой набор услуг мы и переплели в нашем сервисе. Забекапившись, мы разъехались по домам.
Результат: Електронні адміністративні послуги для бізнесу (демо-версія)
В 8 утра, вернувшись, мы застали тех же 6 человек, которые оставались, когда мы уходили. «Довылизали» все до полной готовности и сделали презентацию. К половине
Презентации. Большая часть презентаций в состязании по информационной безопасности были довольно хорошие. Хоть взломать полностью ни у кого не получилось, тем не менее, интересные уязвимости были найдены. Когда же дело дошло до представления новых проектов, впечатления были странными. Большая часть проектов, которые презентовались, были не то чтобы слабые — их попросту не было. Т.е. люди просто показывали слайды презентации своих идей, а не готовых проектов. Изредка появлялись хотя бы скриншоты интерфейса.
Справедливости ради стоит отметить, что были команды, показывающие демо, и с интересными идеями. Мне лично запомнились ребята с проектом по сравнению предприятий и команда, которая представила сервис по слежению за изменениями в реестре.
Удивили команды, которые вообще не пытались пользоваться API и просто делали какие-то общеполезные вещи, наподобие своего упрощенного документооборота.
Кульминацией было предложение организаторов провести последнюю презентацию в комнате с жюри. Все это было похоже нa конкурс презентаций.
Награждение. После небольшого заседания жюри вышло награждать победителей. Хакеры получили дипломы и возможность устроиться к ним на работу. А среди разработчиков было 2 очень похожих номинации — мы, в частности, заняли
Также были призы от спонсоров — домены в кириллической зоне .укр для 3х команд, у которых названия были не на английском языке, и ноутбук для одного из участников.
Мы немного пофотографировались на память и поехали домой.
Вместо эпилога. В целом хакатон был устроен дорого, и все, что не касалось технической части, было сделано хорошо. К сожалению, цитируя одного из участников, «бутерброды здесь были лучше интернета».
По-видимому, целью хакатона было «Зламати систему захисту Держреєстру не вдалось», т. е. шаг навстречу бизнесу в виде электронных выписок из национального реестра < 200 грн пока не планируется. Добро пожаловать в новую страну!
18 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.