Перейти к содержанию
    

Вход в режим аварийной загрузки у Anritsu SiteMaster S331L

Я нарисовал в теории, но с учетом того как эти кнопки называются и что делают в коде. Вероятность достоверности 99% и более. Потому, что вариантов других нет.

Плата пока НЕ осмотрена. Я лишь говорю о том, что шифта нет на мембране / резине. Даже если шифт есть на PCB, его придется коротить перемычкой.

Валкодер уже мимо кассы, так как его нет в кеймаппинге, да и он не нужен.

Тем временем добрый человек нашел единственный кусок кода, который вызывает бутстрап (отдается код возврата 0x1C8).

v8 = 0;
do
{
if ( *(KeyMapping + 5) | (*(KeyMapping + 6) << 8) | (*(KeyMapping + 7) << 16) | (*(KeyMapping + 8) << 24)
  && (*(*(KeyMapping + 1) | (*(KeyMapping + 2) << 8) | (*(KeyMapping + 3) << 16) | (*(KeyMapping + 4) << 24)) - 0x34) <= 2u )
{
  ++v8;
}
v9 = *(KeyMapping + 9);
KeyMapping += 9;
}
while ( v9 != 255 );
if ( v8 == 3 )
{
  DebugPrintf("Request to launch Bootstrap.bin received.\r\n");
  return 0x1C8;
}

По этому коду видно, что bootstrap.bin вызовется когда v8 будет равно 3.

А случится это когда вот это условие выполнится 3 раза:

if ( *(KeyMapping + 5) | (*(KeyMapping + 6) << 8) | (*(KeyMapping + 7) << 16) | (*(KeyMapping + 8) << 24)
  && (*(*(KeyMapping + 1) | (*(KeyMapping + 2) << 8) | (*(KeyMapping + 3) << 16) | (*(KeyMapping + 4) << 24)) - 0x34) <= 2u )

Итого, в уравнении остается одна-две неизвестных:

1. Это байт из "карты клавиатуры KeyMapping" (который указывается через +, например, +5, +6, +8). А откуда брать содержимое байта, не понятно.

2. И это некий адрес в памяти 0x34. Который, видимо, "железный".

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

Есть тут местные гении? Ну, ребят, давайте напряжемся и получим суперпри$$$!

Изменено пользователем EIKA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, EIKA said:

Так тут USB же реализован в WinCE, бутлоадер то как ее распознает?

Никакого обычного PC там нет. Это какой-то OMAP ARM + WinCE.

Более того, клавиатура не распознается даже в WinCE на рабочем приборе.

Вопрос был прост:

Вы пробовали или нет?

Отговорки можете придумывать только самому себе :dirol:у

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, EIKA сказал:

Доступ ко второму аналогичному прибору как может помочь?

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

вот если затереть первичный бутлоадер, то все сильно было бы сложнее - из второго прибора надо было бы извлечь SoM, аккуратно сдуть флешку с фирмварью, слить с нее полный дамп, потом на окирпиченном, аналогично сдуть флеш и накатить в нее содержимое живого прибора

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

если функция возвращает 255, то я бы квалифицировал, как "нет нажатия"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Oymyacon said:

Вопрос был прост:

Вы пробовали или нет?

Отговорки можете придумывать только самому себе :dirol:у

Какие отговорки, я написал, что поддержки клавиатуры нет даже в работающем приборе! Нет в этом устройстве драйвера клавиатуры даже в Windows! Что непонятного?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В юзермануале вообще то такое есть.

Quote

If the Site Master is not functioning as expected, perform a
preset. All the current settings and applied calibration factors
will be cleared.
The next step if a preset does not resolve the issue is a
Factory Reset. This can be performed at power on by holding
down the ESC key and pressing the power button, or through
the Preset (9) menu.

Т.е ESC как то завязан на сброс параметров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, EIKA сказал:

Итого, в уравнении остается одна-две неизвестных:

1. Это байт из "карты клавиатуры KeyMapping" (который указывается через +, например, +5, +6, +8). А откуда брать содержимое байта, не понятно.

2. И это некий адрес в памяти 0x34. Который, видимо, "железный".

покрутил бинарники в Ida, ничего умного не нашел

в spl.exe есть вхождение main(), ближе к концу которого делается вызов TestForSecretKeypresses() в которой есть заветная ветка с завершением

LDR     R0, =aRequestToLaunc
BL      DebugPrintf
MOV     R0, #0x1C8   // тот самый код
LDMFD   SP!, {R4-R6,PC}

а при возвращение в main() анализ кода возврата

LDRH    R3, [SP,#0x78+var_26]
TST     R3, #4
MOV     R5, R0
BNE     loc_86004C50
и двигается на выход из main()

из странного - нет сторонних вызовов опроса кнопок. судя по коду использован порт самого omap (gpio5) и вероятно клавиатура устроена матрицей кнопок (извращения в виде отдельных кнопок через резисторы и АЦП откидываю, как и использование отдельного i2c контроллера кнопок тоже). тогда обычно делают стандартно - порт или часть порта на выход, и часть пинов на вход. далее гоняют уровень на отдельных выводах и смотрят что на входах. отсюда можно вычислить в каком "перекрестье" нажали кнопку. антидребезг и фантомы по вкусу.

есть еще пара загадочных функций TestBootstrapKeys() те же сдвиги и сравнение и GetKeysDown() которая еще куда-то стучится по i2c

и похоже "адрес в памяти 0х34" это просто константа в TestForSecretKeypresses()

SUB     R2, R2, #0x34 

ЗЫ там под кузовом WinCE 5.0, а жизнь usb hid началась вроде как с 6.0.. т.ч. не должна работать клавиатура ни в мелкой венде, ни в т.б. загрузчике

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, Jury093 said:

покрутил бинарники в Ida, ничего умного не нашел

А с какими параметрами бинарник в Иду грузили чтобы сегменты кода-данных правильно проинитились?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, khach said:

Т.е ESC как то завязан на сброс параметров.

Спасибо за оттвет.

Но это чутка другое. Это запрос режима Reset, когда стираются файлы калибровки тач-скрина и прочее. Как это было 15 лет назад во времена КПК.

У меня проблема глубже. И я забыл об этом написать, моя вина. При обновлении прошивки, которая выполнялась минут 10, не нашелся файл SM-L (насколько я понял, это образ WinCE). Хотя на флешке, с которой выполнялся апгрейл, он есть и он целый, и у него верная CRC. По какой-то причине СайтМастер не смог его подцепить.

То есть, апгрейд что-то там делал минут 10, а потом написал следующее:

S331L-fail.thumb.jpg.f73f79bff7952c5b2cc8b0953b122757.jpg

Таким образом, как я подозреваю, у меня на флешке сейчас СайтМастера нет образа ОС. А бутлоадер выполняет нормальный старт.

ОС в устройстве Windows Embedded CE 6.0 Core.

Изменено пользователем EIKA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Factory Reset нормально вызывается через ESC + Power On, но висит с тем же экраном Loading OS..., но внизу с припиской Applying Factory Reset. 12 минут так висело, выключил, так как явно эта функция тоже не работает и желает чтобы была ОС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предполагалось в дизасмленном бутлоадере найти функцию которая ESC + Power On обрабатывает и поискать там другие возможности- выход в дебаг, принудительный апгрейд фирмвари итд. Скорее всего перехват клавиатуры после включения для всех возможных сценариев будет в одном месте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, khach said:

Предполагалось в дизасмленном бутлоадере найти функцию которая ESC + Power On обрабатывает и поискать там другие возможности- выход в дебаг, принудительный апгрейд фирмвари итд. Скорее всего перехват клавиатуры после включения для всех возможных сценариев будет в одном месте.

В этом случае полностью согласен. Код, видимо, этот. Но ясности с клавишами он не добавляет:

do
	  {
	    if ( v12[5] | (v12[6] << 8) | (v12[7] << 16) | (v12[8] << 24) )
	    {
	      ++v14;
	      if ( !v13 )
	        v11 = 1;
	    }
	    v15 = v12[9];
	    v12 += 9;
	    v13 = v15;
	  }
	  while ( v15 != 255 );
	  v16 = v14 == 1;
	  if ( !v11 )
	    v16 = 0;
	  if ( v16 )
	  {
	    DebugPrintf("Factory Reset requested. \r\n");
	    return 27;
  }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, EIKA said:

DebugPrintf("Factory Reset requested. \r\n");

Кстати, неплохо бы посмотреть все что выводит DebugPrint - иногда там прямо видно консоль бутлоадера. Конечно прийдется раскручивать прибор чтобы добраться до последовательного порта DebugPrint-а.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, khach сказал:

А с какими параметрами бинарник в Иду грузили чтобы сегменты кода-данных правильно проинитились?

параметры не задаю, выбирают тип PE, меняю процессор на ARM, выбираю spl.exe и autoanalize, далее софт сам все раскладывает

так выглядит фрагмент keymapping

 

.data:860074CC KeyMapping      DCB 0, 0xB8, 0x71, 0, 0x86, 0, 0, 0, 0, 3, 0xBC, 0x71
.data:860074CC                                         ; DATA XREF: .text:off_8600008Co
.data:860074CC                                         ; .text:off_86000110o ...
.data:860074CC                 DCB 0, 0x86, 0, 0, 0, 0, 4, 0xC4, 0x71, 0, 0x86, 0, 0
.data:860074CC                 DCB 0, 0, 5, 0x60, 0x67, 0, 0x86, 0, 0, 0, 0, 6, 0x68
.data:860074CC                 DCB 0x67, 0, 0x86, 0, 0, 0, 0, 0x10, 0xCC, 0x71, 0, 0x86
 

да, по клавиатуре/мыше, в аттаче, достоверность непонятна, т.к. имя документа латиницей на русском..

anritsu-usb.jpg

Изменено пользователем Jury093

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 minutes ago, Jury093 said:

выбираю spl.exe

Этот файл у меня автоматом грузится как ARM ELF ( ida 7.0) а вот хотелось бы загрузить на анализ bootstrap.bin. Ну и поищите в интернете, может для этого анализатора найдется фото платы с процессором и распиновка армовского JTAG. Тогда отладичком может получится по коду полазить или хотя бы полную копию флеша без выпаивания снять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...