{"id":14262,"url":"\/distributions\/14262\/click?bit=1&hash=8ff33b918bfe3f5206b0198c93dd25bdafcdc76b2eaa61d9664863bd76247e56","title":"\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u0435 \u041c\u043e\u0441\u043a\u0432\u0435 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u044e \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0434\u043e 1,5 \u043c\u043b\u043d \u0440\u0443\u0431\u043b\u0435\u0439","buttonText":"\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435","imageUuid":"726c984a-5b07-5c75-81f7-6664571134e6"}

Как я пытался скопировать чужую ERP-систему и попал на 7 млн рублей

В современном российском ИТ-бизнесе очень часто происходит вот как: заказчик по каким-то причинам не хочет покупать то или иное существующее решение. Оно ему подходит, оно ему нужно, но покупать его он не хочет. «Давайте сами сделаем то же самое, ведь тут все элементарно!» — осеняет эффективного менеджера, и он бежит к знакомым разработчикам.

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

Почему я вдруг про это вспомнил? Да потому, что недавно посмотрел «Разведопрос» у Гоблина с Александром Кузьминым из «Русхолтс». Потом почитал комменты под этим роликом, где коллеги-айтишники соревнуются в остроумии: мол, да что там делать-то, да мы за 5 рублей еще круче сделаем…

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

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

ИТ-шным сленгом эти детки владеют в совершенстве, а по сути — обычные мажоры, которым доверено рулить инновациями, модернизациями и цифровыми трансформациями. Сначала моя компания делала им небольшие проекты по телеметрии холодильников на заправках — все было успешно и хорошо. А кофезоны работали как раз на этой BMS coffee control Кузьмина.

И вот ребята решили его, скажем так, подвинуть — или, говоря проще, выкинуть. Мол, зачем мы платим ему за сервис, если можно один раз написать такой же собственный софт и пусть он работает. Ну и, конечно, попилить чуток бюджета на разработке. Схема простая: по документам софт должен быть разработан силами их ИТ-департамента, ну а мы будем в роли «литературных негров», но за это нам хорошо заплатят.

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

Давайте, говорю — что копировать-то? Оказалось, что никто не знает. Никакого техзадания или хотя бы документации: одно устное народное творчество. Мол, система генерирует какие-то отчеты и делает какую-то аналитику, как именно — мы не в курсе, оно в чужом облаке, у нас на АЗС только две тысячи с лишним этих кофемашин стоят и продают десятки миллионов чашек кофе в год.

Вот с них надо данные собирать и клепать отчеты, тыжпрограммист, разберись!

Но да, яжпрограммист, поэтому не могу собирать непонятно какие данные неизвестно откуда и генерить из них отчеты черт знает о чем. Долго прошу описание функциональности, в итоге…

Помните этот мемный ролик про ржущего испанца, да? В итоге мне присылают глянцевый журнал «Современная АЗС». Там интервью с каким-то пацаном и девчонкой под заголовком «Повелители счетчиков». И все! Я даже нагуглил сейчас эту статью — вот это мне прислали в качестве ТЗ!

Мол, вот там Raspberry, блокчейн и 400 параметров контроля, круто же! Вообще нормальному человеку было бы достаточно такого «звоночка», но 28 млн рублей… Каюсь, жадный.

В итоге какое-то подобие ТЗ с грехом пополам утвердить удалось — правда, писали мы его сами себе. Нанимаю несколько кодеров на Java, C++, Python, трачу 3 млн на зарплату, выдаю бета-версию. Готово, можно тестить.

Мне выплачивают 12% обещанных денег и говорят: мы тут подумали, функциональность требует расширения. Какого расширения? Опять долго и мучительно слушаю какую-то муть про то, что нужно генерировать какие-то отчеты на основе каких-то данных, опять со скрипом из всего этого сам себе пишу ТЗ, утверждаем, получаем еще 7% денег, работаем.

Немного технических подробностей. В этих кофеавтоматах, да и вообще во многих вендинговых аппаратах, используется MDB-шина, через которую завод рекомендует подключать терминалы оплаты. У нас в принципе получается выкачивать через MDB кое-какие данные и отправлять их на сервер, что и требуется по ТЗ.

Но на очередной презентации в офисе заказчика какой-то большой начальник заявляет: «Стоп, так это же не то, что нам нужно. Нам требуется управлять настройками всех кофемашин, удаленно менять рецепты и кастомизировать их в зависимости от желаний покупателя». WTF???? Я собираюсь встать и сказать: «Господа, этого вообще-то нет и никогда не было в ТЗ. Вам нужно было собирать данные и отправлять их на сервер — вот, собственно, мы это сделали».

Но мои друзья из ИТ-департамента так на меня смотрят, что становится понятно: «Сиди тихо, прорвемся, ещё денег дадим». Вообще-то, по моим наблюдениям, высокие начальники в нефтянке — люди весьма грамотные и вменяемые, но между ними и реальным миром существует многочисленная прослойка блатных балбесов, которые все портят. В моем случае это были балбесы-недоайтишники, и я уверен, что не одинок в своих злоключениях.

Вновь дают небольшой аванс, но у нас принципиально новое ТЗ и немеренно работы. Кодерам мне уже приходится платить из своих кровных, плюс начинаются технические проблемы. По MDB сделать то, что хочет заказчик, нельзя. Нужно лезть напрямую в «мозги» кофеавтомата, и первая попытка взлома приводит к окирпичиванию платы управления стоимостью €2500. Хорошо, меняем плату, эмулируем сервисный компьютер — тоже не хорошо, еще €2500 на металлолом.

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

Мне запомнился один уже немолодой крендель, который каждый раз начинал со слов: «Я 12 лет занимался магазинами и кафе "Лукойла" на Балканах, поэтому считаю, что…» и дальше нес любую пургу на тему функциональности телеметрии, в которой он ничего не смыслил.

В итоге мое ТЗ в части функциональности разрастается с 15 до 97 (девяносто семи!) пунктов. Конечно, бюджет при этом тот же, но для меня он все равно огромный. Хотя я уже понимаю, что легких денег не получится и вообще дело пахнет керосином — заказчики сами не знают, чего хотят, и теперь дополнительные фичи будут подкидывать постоянно, а сдать проект мы не факт что сдадим.

Я решаюсь на хитрость: звоню в «Русхолтс», представляюсь перспективным заказчиком и напрашиваюсь в офис на экскурсию. А надо сказать, что Кузьмин очень тщеславен и поэтому сам с гордостью 4 часа меня везде водит, все показывает и рассказывает.

И тут я понимаю, что это просто фиаско, братан. Не зря говорят: «Без внятного ТЗ результат ХЗ». Мои нефтяные айтишники вообще не поняли, что хотят скопировать, и поэтому все эти месяцы мы копировали совершенно не то!

Оказалось, что фишка BMS вовсе не в том, чтобы собрать данные с кофемашин и отправить их куда-то. И даже не в том, чтобы взять данные с сервера и залить их в кофемашину! А все дело в прикрученных к собираемой бигдате алгоритмах аналитики и интеграции с ERP и CRM, в которых потом автоматически раздаются задачи — кому куда ехать, что где чинить и как настраивать.

И это вообще не мой профиль, я m2m-щик, а не специалист по ERP-системам! По сути, я оказался в положении конструктора, взявшегося создавать межгалактический корабль по трейлеру к «Звездным войнам». А еще я узнал про подводный камень, о котором заказчики мне не сказали: программный модуль взаимодействия с кофеаппаратами – заводская разработка и охраняется авторскими правами завода, а Кузьмин лишь вендор, который продает все это в России.

Но обратного пути нет, и денег потрачено больше, чем получено: нужно как-то вытаскивать оставшиеся. Что делать? Выход только один: раз вы мне выкатили какую-то ерунду вместо ТЗ, я вам сделаю так, чтобы выполнялись все требования вашего же ТЗ, получу деньги и до свидания. То, что этот софт не будет решать ваших задач — не мои проблемы, вы сами себе злобные Буратины и поймете это только на этапе внедрения, хе-хе.

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

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

Сервисная компания подняла шум: мол, простите, а за чей счет весь этот банкет? €10 000, на минуточку. И тут наступила развязка — кто-то из компании-заказчика написал на завод требование раскрыть коды доступа к мозгам кофемашин, а оттуда пришел ответ: «Уважаемые партнеры, если вы хотите управлять экранами производимых нами кофемашин не через одобренный производителем bms coffee control, удаляйте с оборудования все логотипы завода, т.к. иной софт не гарантирует соблюдения регламентов безопасности. Не выполните требование снять логотипы — завод обратится в суд».

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

P. S. Не пытайтесь в комментариях выведать или угадать мое настоящее имя, название моей компании или, тем более, компании-заказчика. Тут бы и Кузьмин не упоминался, не будь я уверен, что для него такая история дело обычное и ему на это глубоко фиолетово.

0
409 комментариев
Написать комментарий...
Андрей Захаров

Если проблема была в получении данных, то надо было эту критичную часть отдать на аутсорс людям со специализацией в reverse engineering, а не самому ковыряться. Специалисты сломали бы и прошивку и обмен по шине на раз-два. Наличие ТЗ или его отсутствие, равно как и переделка к провалу проекта никакого отношения не имеет. Элементарно не хватило компетенций и мудрости передать сложную задачу на сторону.

Ответить
Развернуть ветку
Андрей Захаров

Я уже не говорю о том, что быстрое гугление показало, что MDB контроллеры/снифферы доступны на рынке в т.ч. от самих производителей кофейных машин! И к ним есть управляющее клиентское ПО - его проще было дизассемблировать и извлечь из него все подробности. Проблемы, с которыми столкнулся автор статьи, выглядят каким-то фантастическими.

Ответить
Развернуть ветку
Bulat Ziganshin

mdb (modbus?) - это всего лишь универсальный протокол для общения любых устройств, который можно сравнить скажем с tcp/ip. поддержка его разнообразным оборудованием не означает что ты сможешь добиться чего захочешь от кофемашины

Ответить
Развернуть ветку
Андрей Захаров

А наличие контроллера и софта управления от вендора - означает?
Если кто-то смог  сделать, значит сможет повторить и другой. 

Ответить
Развернуть ветку
Vladimir Goncharov

Иди подпись пакета аппаратную повтори без ключа.

Ответить
Развернуть ветку
Андрей Захаров

А она там есть? Ты смотрел вообще на чем кофемашина сделана? В WMF кофемашине стоит примитивный 16-битный микроконтроллер, который ни secure boot ничего подобного не поддерживает. Он вам не IPhone (C)  Ох, уж эти сказочники...

Ответить
Развернуть ветку
Vladimir Goncharov

Лол, secureboot на bare metal, зачем ? Там fuse битики проставил и ничего не считаешь, очевидно же. Подпись же на ПАКЕТ сделать можно на практически любом контролллере с 2к памяти на борту. Больно бодро утверждение звучит :

Если кто-то смог сделать, значит сможет повторить и другой.

В мире встроенного железа с vendor lock это не так. Хотелось бы узнать - как будет скопирована подпись 3DES с кастомными ящиками, например.

Ответить
Развернуть ветку
Андрей Захаров
Там fuse битики проставил и ничего не считаешь, очевидно же

Сам ты LOL. Что очевидно? Кому?

 При желании можно протравить микросхему и посмотреть что в ней прошито. Такой сервис есть у китайцев, например, можно заказать, сделают. Но в рассматриваемом случае с кофе-машиной никакое считывание 100% не потребуется, хватит и анализа прошивки из ПЗУ/FLASH/EEPROM.

В мире встроенного железа с vendor lock это не так.

Это не так для тех, кто не умеет. Для тех, кто умеет, это так, а те, кто умеют, ломают абсолютно всё. Даже тот же ИФон, где уж всё шифрованно-перешифрованно. Ломают даже процессор, даже его кольца защиты.

Хотелось бы узнать - как будет скопирована подпись 3DES с кастомными ящиками, например.

Ты чего несёшь? Какое отношение 3DES  имеет к кофе-машинам? 
Ты хотя бы понимаешь, что если в кофе-машине будет применяться стойкая криптография, то она попадёт и под экспортные ограничения у них и под лицензирование органов у нас? Никто не будет связываться с такими ограничениями и затратами, никакой вендор.

Если очень захотеть можно в космос полететь (С)
Не надо теоретизирвать и придумвать сложности и преграды там, где их реально нет. 

Больно бодро утверждение звучит :
Если кто-то смог сделать, значит сможет повторить и другой.

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

Ответить
Развернуть ветку
Vladimir Goncharov

Очевидно тому, кто имеет дело с эмбеддед разработкой. Например мне. 
Так же после вот этих утверждений :

можно протравить микросхему и посмотреть что в ней прошито
прошивки из ПЗУ/FLASH/EEPROM

очевидно что вы с этой разработкой вообще никак не связаны, только читали статейки. "Протравить микросхему" требует около 40 сэмплов, т.е. нужно обезжирить 40 кофеварок для "фигня, реверсжиниринг это просто нужно просто ходить тем, кто понимает", бга. Стоит эта услуга от 7 килобаксов и то по знакомству. Фразы же про отдельную флеш память вообще смешно читать - fuse битики, про которые я писал защищают внутренную флеш/ROM в проце.

если в кофе-машине будет применяться стойкая криптография

Это не криптография, а подпись пакетов, 3DES в 56 бит не стойкий, но ты его не подберешь, ресурсов не хватит. А пакеты подписывают, да, сюрприз-сюрприз.

Ты историю вопроса то изучи

Зачем ? Утверждение было генерализированное - де, все ОЧЕНЬ ПРОСТА ПОВТОРИТЬ, ПРОСТА НУЖНЫХ ЛЮДЕЙ И КИТАЙЦЕВ С ПРОТРАВКОЙ НАЙТИ. Нет.

Ответить
Развернуть ветку
Андрей Захаров
Это не криптография, а подпись пакетов

LOL, что??? Подпись пакетов - это не криптография? 3DES это не криптография???

3DES в 56 бит

3DES или всё таки DES? Раз 56 бит? Или три раза шифровать с одним и тем же ключем в 56 бит?

3DES в 56 бит не стойкий, но ты его не подберешь, ресурсов не хватит

DES в 56 бит на системе с FPGA (типа SPARTAN) еще в 2012 году взламывался менее чем за сутки. Сейчас доступны более другие микросхемы FPGA и без травления микросхемы микроконтроллера для извлечения ключа при такой сложности ключа можно обойтись.

Ответить
Развернуть ветку
Egor Voinov

Жаль, что оппонент слился, было интересно.

Ответить
Развернуть ветку
Андрей Захаров

Спор этот бесконечный, я уж не стал продолжать развивать тему. 
для DES (и его 56 битного ключа) на GitHub есть несколько репозиториев с примерами по взлому (перебором, разумеется), в т.ч. и с использованием FPGA. Порог вхождения там - плата Zybo board (Zynq 7020) ценой ~ 30 000 рублей (понятно что на одной такой плате перебор займёт 1 год+, но можно параллелить). И про GPU/Облака тоже не забываем. В общем, не всё так страшно, как представлял мой оппонент)). И к тому же, в кофе-машине таких штучек-дрючек 99.9% нет и быть не может (иначе их и без того немалая цена взлетела бы в небеса).

Ответить
Развернуть ветку
406 комментариев
Раскрывать всегда