Протокол общения помпы Medtronic 640g/670g, трансмиттера и глюкометра.
Denis KulikovВ основе лежит протокол 802.15.4. Сам по себе протокол использует шифрование, не могу точно сказать какое, но судя по этому там используется AES. Для того, чтоб помпа начала общение с трансмитером или глюкометром, их необходимо соединить. Процесс соединения описан в инструкции и дублировать его тут не вижу смысла.
Начнем с простого: общение помпы и трансмиттера. Помпа каждые 5 минут делает запрос в трансмиттер и спрашивает о текущем показании сахара. Сам по себе трансмиттер хранит в своей памяти последние замеры на протяжении последних 12 часов. Таким образом, помпа получает показания сахара.
Общение помпы и глюкометра. Глюкометр может (без подключения по USB):
1) измерить сахар через тест-полоску и передать показания в помпу, при этом происходит калибровка сенсора (калибровать сенсор можно вручную, через помпу);
2) ввести удаленно болюс, но сделать это можно только руками, нажав соответствующие кнопки на глюкометре. Это важное замечание.
Теперь самое интересное. Глюкометр можно подключить к компьютеру. С помощью программ можно общаться с помпой и получать данные. Эти данные можно условно разделить на 4 группы:
1) Текущие показания (сахар, активный инсулин, текущую базальную скорость и т.д.)
2) Настройки помпы (часть настроек)
3) История сенсора (хранится 90 дней)
4) История помпы (хранится 90 дней, все события, которые были в помпе).
Часть протокола расписано в интернете. Как видно, читать из помпы можно много.
Теперь о «грустном», технические детали, ограничения: Алгоритм общения глюкометра и помпы (после соединения, описанный выше) примерно такой: В начале идет попытка связаться с помпой, в случае успеха, подаются команды ВАЖНО! через глюкометр на чтение той или иной информации. В случае успеха, мы получаем данные с помпы и через глюкометр на компьютер, далее их обрабатываем и выводим. Так вот, если мы пробуем отправить команду на ввод удаленного болюса, то глюкометр (это важно!) говорит, что такая команда не поддерживается. Хотя, точно такая же команда через «кнопки» на глюкометре прекрасно работает. Это говорит нам о том, что первое ограничение при общении является глюкометр, который блокирует часть протокола.
Логичный шаг – убрать глюкометр, взять модуль с поддержкой 802.15.4 (а такие есть) и через него общаться с помпой без всяких ограничений. Тут возникает вторая проблема: чтоб использовать другой модуль, в него надо зашить «приватный ключ» шифрования, который необходим на этапе соединения помпы и нового устройства (см. самое начало), а его никто не знает. Такие ключи зашиты в: глюкометры, трансмиттеры. Попытка вытащить такой ключ из глюкометра – не удалась еще никому. Хотя тут я слукавил. Я находил информацию о том, что одному человеку удалось достать такой ключ, но информация несколько «размыто написана». Кроме того, этот человек теперь работает в Медтронике и соответственно он под NDA. С его слов, в протоколе в принципе отсутствует возможность удаленного ввода базового инсулина, только болюс.
В глюкометре используются микропроцессор фирмы Renesas. Я общался с другом, который уже более 20 лет занимается микропроцессорами. Так вот, с его слов, эти микропроцессоры славятся тем, что они не взламываемые. Т.е. шанс на то, чтоб извлечь прошивку, а вместе с ней и приватный ключ, практически равен «0». Остается шанс, что сама прошивка содержит баги и можно как-то воспользоваться ими. Но кто этим будет заниматься – вопрос.
И теперь последнее ограничение (надеюсь). Даже если мы предположим, что все же нам удастся вытащить приватный ключ, мы воспользуемся своим модулем для работы по 802.15.4, то есть вероятность, что протокол, который зашит в помпу, в принципе не поддерживает возможность удаленно управлять помпой. Об этом свидетельствует косвенное подтверждение человека, кто вытащил приватный ключ.
Подводя итог: «читать» из помпы можно очень много, «писать» (управлять) – нет.
Имхо: Что касается возможности сделать апс на 640\670. До недавнего времени я считал, что сделать ничего нельзя. Но недавно открыл для себя aiaps. Судя по алгоритму его работы, он не использует базовый инсулин, а рулит только болюсом. Это дает надежду, что его можно попробовать прикрутить к 640\670 помпе.