Предисловие.
Зашел как-то в гости пациент: «Что-то неправильно меряет и показывает».
Рекомендуется ВСЕГДА создавать резервные копии и дампы!
Предметное рассмотрение аппарата показало, что не обновляется информации о замене реагентов, при этом время замены реагентов давно прошло. Ранее реагенты обновлялись с информацией которая читалась через NFC ридер. При попытке зайти в сервис и обновить параметры, появляется диалоговое окно, в котором отсутствуют возможности обновить дату замены реагентов:
И при попытке замены даты реагентов не позволяет сделать процедуру обновления реагентов.
Входная информация.
Версия программного обеспечения 7.4ua (украинская локализация). В наличии на выбор языки: английский, испанский, французский и указанный.
Загрузка системы.
При загрузке системы используется загрузчик GRUB, который копирует подавляющее большинство системных файлов операционной системы со скрытого раздела в системный раздел (диск C:\). При каждом запуске системы любые настройки и изменения не сохраняются. А диск D:\, на котором находится программ и база данных, свободен от защиты. Таким образом, обеспечивается стабильность работы системы. Общий вид разделов выглядит следующим образом:
В этом аппарате использовался накопитель CompactFlash на 8 Гб., из которых используются только первые 4 Гб., а остальные не распределены.
В корне диска C находится файл WERUNTIME.INI, в котором находится серийный номер системы: RunTimePID=G9KHD-GF824-7PBGK-9H7D7-PYFYM. Windows XP SP3 build 2600.
Для того чтобы изменить и запомнить некоторые параметры системы используется утилита FBWF.exe которая находится в корне диска C:\. Для запуска утилиты можно использовать Проводник, запустить его можно из меню безопасности (Ctrl-Alt-Del), или нажать, в указанном ниже, на изображении месте 10 раз:
После этой процедуры откроется новое диалоговое окно, в котором можно запустить Проводник. И уже используя Проводник в корне диска C:\ можно запустить FBWF.exe.
Запустив утилиту FBWF.exe можно разблокировать настройку системы, перезагрузить, изменить настройки, перезагрузить и включить защиту. Таким образом можно например изменить разрешение экрана или установить новый принтер. Сама утилита бывает как в англоязычной, так и в восточной локализации. Однако расположение и значения кнопок идентично. При запуске утилиты может потребоваться пароль, обычно: 1008.
Запуск программы.
Запуск основной программы начинается с запуска программы DatabaseMaintain.exe, которая находится в C:\Windows\. После проверки системы, проверки базы данных BloodCell.mdb, которая расположена в D:\RTHemat\, проверки и записи параметров в базу, отключении хранителя экрана и проверки модулей, происходит запуск основной программы анализатора RTHemat.exe, которая находится по адресу D:\RTHemat\.
При этом как оболочка (shell) грузится DatabaseMaintain.exe, а вместо userinit.exe грузится файл FBA.exe (расположенный по адресу C:\WINDOWS\FBA\). В принципе можно посмотреть параметры загрузки в реестре [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon].
Однако менять указанный shell на классический explorer не стоит, так как разворачивание Рабочего стола занимает почти 1 Гб. дополнительного места, и почти 20% производительности. Проверено, шкурка вычинки не стоит.
Очень большое количество параметров системы находятся в базе данных BloodCell.mdb. Чтобы открыть базу необходим пароль, посмотреть его можно в файле RTHemat.exe, начиная со смещения 05B8798h можно наблюдать описание пароля.
В тех случаях когда нет возможности посмотреть исходный код, пароль можно посмотреть в файле DatabaseMaintain.exe, начиная со смещения 0707Ch.
Пароль на базу данных DB7600, в некоторых случаях может быть MD7600. В принципе пароль за закрытую базу можно посмотреть программкой Access PassView от nirsoft.mirrorz.com.
Существует несколько разновидностей программы анализатора, а именно открытый и закрытый (смотри в конце текста). Акромя самих настроек, есть параметр который отвечает за открытие настроек реагентов.
Параметр находится в таблице SysSetting в поле CloseReagent. Значение поля равное единице говорит что параметры закрыты, а нуль - открыты.
Если программа анализатора перестала отвечать на события и зависла, то может такое случиться что при следующем запуске не сможет запуститься с ошибкой сети или базы данных. Для решения этой проблемы надо удалить файл BloodCell.ldb, который создаётся при открытии базы данных BloodCell.mdb. Внимание, удалять ТОЛЬКО файл с расширением .LDB. (Не забывайте делать резервные копии).
Около аппаратные процессы.
Изменения настроек и параметров в базе данных, изменение временных параметров не помогли справиться с ситуацией. При перезагрузке многие настройки возвращались в "первоначальные" состояния.
Есть достаточно интересный форум на medteh.info, в котором есть много интересной информации. Изучение пользовательской и сервисной инструкции также не помогло решить проблему, так как проблема оказалась достаточно уникальной. Был установлен сетевой снифер (PortMon) для просмотра пакетов порта RS-232.
Исследование логов и отчетов монитора показало следующее.
Монитор показывал ошибки чтения на порте COM 4.
Предметное изучение кода RTHemat.exe, показало что при старте программы идет чтение параметров с 4-го COM порта.
По адресу 01774Сh данные E807361700h занопил (операция NOP, код операции 90). После проведенной манипуляции пациент якобы ожил.
Однако праздник был не долгий, после промывки системы, при попытке произвести тест (аппаратная кнопка запуска теста), система не проводила тест, а включала ошибку тайм-аута теста.
Таким образом удалось только запустить систему но не заставить её работать.
Дальнейшее исследование аппарата привело к аналоговой периферийной плате, которая висит на COM4. На плате находится C8051F020, который и управляет всей периферией. На борту контроллера находится 64 Кбайта Flash памяти.
В этой памяти может находится не только программа управления периферией, но и данные о времени замены реагентов, которые и не читаются/перезаписываются.
В D:\RTHemat\FRTSYS находится файл NEWUP.exe, который предназначен для чтения\записи данных в аналоговую периферийную плату. Проведение теста показало, что тест, после рукопожатия, провалился.
При проведении теста аналоговая плата уходит в аппаратный стоп. Таким образом для повторного запуска необходимо отключение питания.
То же состояние, аппаратный стоп, получаем и при попытке чтения пользовательских данных.
Таким образом, нет возможности прочитать Flash память в контроллере на аналоговой периферийной плате. При попытке её чтения аппарат жестко зависает, требуется перезапуск питания.
На сейчас в поисках микропрограммы для контроллера, и по JTAG интерфейсу тоже. Если не получится обновить прошивку, придется менять аналоговую плату.
А начиналось все довольно прозаически ...
Финишная прямая.
Выше по тексту указывал что есть системы открытые и закрытые. Для того чтобы узнать какая система установлена необходимо:
- Войти под учетной записью инженера (Engineer), пароль 1001. (Настройки\Другое\Имя пользователя).
- Навести указатель мыши на кнопку "Налаштування" (Настройки) и одновременно нажать Ctrl-Пробел-ПравуюКнопкуМыши-ЛевуюКнопкуМыши.
Откроется новое окно в котором будет следующая информация.
Серийный номер, идентификационный код аналоговой платы (тут не указан), случайный код и статус. В данном случае статус - Система закрыта. Этот статус не позволяет на уровне пользователя читать или изменять данные в аналоговой плате. Для открытия системы необходимо ввести пароль. Пароль формируется из хэш значений указанных полей. В случае необходимости можно обратиться к разработчику программного обеспечения для получения пароля. После ввода правильного пароля система переходит в Открытое состояние и позволяет как читать так и перезаписывать пользовательские данные в аналоговой плате в программном интерфейсе, в том числе и обновлять данные по реагентам.
(D103-0-0000, AEQULV, b229591f-ef09c1f4-ee65931b-94493f52)
По большому счету можно написать генератор паролей по входным данным, однако такой задачи нет. Может в далёком будущем.