Комментарии 40
Интересно и полезно, спасибо!
Мне тоже в руки попал девайс из терминальной сферы, правда в виде залитика:
Бедолага
![](https://habrastorage.org/getpro/habr/upload_files/199/c7b/b8b/199c7bb8badd8dbe3b7618563dd424f1.jpg)
![](https://habrastorage.org/getpro/habr/upload_files/234/a85/57a/234a8557a07472686699769042358d40.png)
Электроэрозия сделала своё дело и сгрызла ногу у LDO 3.3v....
МК - MAX32550, как бы я не искал но SDK под него не нашлось, а судя по этому твиту - затею и вовсе стоит закопать. Поэтому вопрос, действительно ли всё так плохо или надо знать где искать?
Найти реально, если действительно знать, где искать. Самым результативным (но и самым сложным) вариантом будет познакомиться с тем, кто варится в этой среде и имеет доступ к материалам. Прямо так и написать — разжился девайсом, хочу поиграться. Если железка не слишком актуальная, могут и поделиться.
Если знакомств таких нет, то искать на просторах Yahoo (он лучше ищет редкую шнягу, нежели гугл), на публичных FTP (searchftps.net), в DHT-сети (en.btdig.com, в России открывать через VPN). Если не нашлось — попробовать снова через месяц-другой.
Насчёт вашей железки — судя по всему, это бесконтактный считыватель, который управляется по RS-232. И нужно искать не прошивку, а протокол обмена.
Пришёл домой, появилась возможность глянуть поподробнее. Как я понимаю, это остатки от чего-то вроде этого?
![](https://habrastorage.org/webt/lz/pt/v_/lzptv_e9xa5krtynqjwx-itnle8.png)
О как. Я одно время даже хотел нарыть такой аппарат на "поиграться", но что-то так и не задалось.
Это MPOS-terminal, который по Bluetooth подключается к мобиле с банковским приложением. Есть некоторые предположения, что свою прошивку в него и изначально нельзя было загружать, а всё управление при помощи команд, отправляемых по Bluetooth (аналогично тому, как управлялся пин-пад PP1000SE), соответственно, SDK у него только под ведроид/яОсь, без возможности писать софт под его родную архитектуру.
Если есть желание поковырять — надо узнать его истинного производителя и попробовать найти SDK. Но надо будет для начала восстановить плату и сбросить тампер, что муторно.
Если нет такого желания — выкинуть штатный МК и использовать только корпус с клавиатурой.
..это остатки
Никак нет, просто разобрал его дабы отмыть и посмотреть что живо. Судя по всему кто-то из курьеров (или кто ими пользуется) потерял его в луже
Это MPOS-terminal, который по Bluetooth подключается к мобиле с банковским приложением
Именно
Есть некоторые предположения, что свою прошивку в него и изначально нельзя было загружать, а всё управление при помощи команд, отправляемых по Bluetooth (аналогично тому, как управлялся пин-пад PP1000SE), соответственно, SDK у него только под ведроид/яОсь, без возможности писать софт под его родную архитектуру
Так не сильно интересно (да и ведройдом и жабой я совсем не дружу), хотелось бы именно как с независимой железкой поиграться. Ибо там есть и магнитная, NFC и EMV читалки-писалки. NFC например можно попробовать, для тех карт доступа не покупать же flipper zero в конце-то концов) Поэтому:
....выкинуть штатный МК и использовать только корпус с клавиатурой
оставим пожалуй как крайний вариант..
Видел упоминание этого камня и какой-то RTOS, возможно получится вкорячить что-то кастомное, однако для этого надо решить вопрос с подписью прошивки
Если есть желание поковырять — надо узнать его истинного производителя и попробовать найти SDK. Но надо будет для начала восстановить плату и сбросить тампер, что муторно.
Dspread, а модель девайса на задней крышке и собственно вот https://gitlab.com/dspread/android. К слову метод для обновления прошивки там имеется)
По тамперу отдельный вопрос, т.к. оба источника питания в 0 высажены и терминал возможно даже и не успел прознать что с ним что-то не так, максимум мог выполнить какие-то действия из-за сброса питаня RTC и то не факт..
С подписью самое сложное. Даже если найдёте SDK, с запуском будет тяжело. Плюс ещё там наверняка есть возможность персонализации, то есть запускаться будет не просто подписанная прошивка, а именно прошивка от самого Dspread, так как ключи по умолчанию изменены.
Насчёт тампера — отказ внутренней батареи во всех уважающих себя девайсах так-то тоже расценивается как тампер. Аппарат при запуске обнаружит CMOS checksum error и поймёт, что что-то тут нечисто. То есть даже если вы запаяете контакты, а затем подкинете батарею, он не оживёт.
инстерсно было прочесь. А какие основные различия вы для себя заметили между теминалом LEE и Ingenico?
Ingenico всё же куда большими ресурсами для разработчика обладает. Больше памяти, мощнее процессор, уровень защиты куда выше. И многие операции для разработчика куда легче, например, если тут работа с хранилищем (EEPROM, RAM-disk) недалеко ушла от таковой на микроконтроллерах, то в Ingenico всё достаточно просто, а возможностей для случайной стрельбы по ногам куда меньше.
В общем, Ingenico превосходит Nurit практически по всем параметрам. Nurit — он сейчас уже чисто поиграться и просто для истории, время их ушло.
Нурит да - уже история. Особенно доставляло, когда делаешь мультиплатформенный код, который должен работать и на инженико и на нурите. Инженико литл ендиан - нурит - биг ендиан. Много крови это попортило при портации приложений.
посвятил несколько лет написанию кода под это чудо
из запомнившегося и доставившего максимальное количество боли: hcarm (по крайней мере тот, который был у нас) не обнуляет глобальные переменные
Да, тоже заметил...
А он разве должен обнулять? Пройдя школу разработки под терминалы - теперь всегда и везде обнуляю переменные принудительно сам сразу после объявления.
C99 6.7.8.10 как бы
ну и до нуритов писали на verifone 395/3750, там компилятор всё правильно делал
Я конечно могу ошибаться, давно дело было, но насколько я помню - С99 на инженико не пахло. По крайней мере на том инструментарии, который мы тогда использовали.
Да, компилятор был другой там (TXO для 395 и SDS 7.4 для 3750). Потом ещё были ARMовские (VX510, VX670, VX810), там был RVCT.
С 3750-м была ещё одна прекрасная особенность: дебаггер был или триальный или с протухшим ключом, и он работал, если на компьютере была выставлена дата только в 1999 год.
А системой контроля версий у нас на тот момент была MS SourceSafe, которая использовала в качестве истории дату изменения файла.
То есть, если во время дебага сохранить файл, а потом открутить дату обратно на компьютере и закоммитить файлы в SS, вся история в репозитории слетала.
Приходилось открывать весь проект из архивов версий и заново коммитить, чтобы иметь возможность копаться в истории
К слову, в гайдлайнах по разработке, что есть в комплекте с ADE, кажись, были рекомендации насчёт глобальных переменных. И там вроде была упомянута эта особенность.
Вспоминаю разработку под Ingenico - брр. Проприетарные системы - очень не гибкие. Линукс терминалы - наше всё :)
Почитал ваши статьи про нурит и инженико - ностальгия взяла. Уже давно подзабытые термины и инструментарии. Можете вспомнить еще старые 16-битные платформы от шлюмбердже-аксальто (терминалы Magic 6000 и 6100). Там подписи не нужно и инструментарий вроде ищется.
Интересно. Попробую поискать.
Но тут ещё проблема в том, чтобы саму железку нарыть.
А вот с Hypercom теми же было бы интересно поиграться. Но по ним в интернете вообще всё пусто.
![Magic 6100. Magic 6100.](https://habrastorage.org/getpro/habr/upload_files/4da/2ba/e60/4da2bae60a62d5bcf559c23e5d765eae.png)
Неубиваемые аппараты были. Флеш память использовалась только как ПЗУ для ОС. Всё файловое хранилище - обычная статическая память с подпиткой от батареи. Хватало года на 2-3, затем замена батареи и дальше работаем. Этим они выгодно отличались от Ingenico, у которых за те же 2-3 года порой ресурс флеш диска вырабатывался в ноль и требовалась перепайка в условиях сервис центра.
Моя молодость вспомнилась :))) самый крутой фич Ingenico?
Самый крутой фич инженико, то что они иногда произвольно сбрасывали ключи просто от сильного нажатия на клавиатуру. Или клиентам партию отправили - от них рекламация - не работает. Выяснилось что они при получении по привычке их вскрыли, чтобы посмотреть как менять контактную группу - занавес.
Вот это вы напомнили, конечно, о молодости :-)
Рад, что у вас всё заработало.
В своё время терминал откопался на радиорынке как нерабочий, после замены батарейки ожидаемо заработал, хоть и упал в тампер. Сделал такую фиговину с "апплетами", чтоб не перезаливать под каждую задачу новый код, да и апплетом serial printer несколько лет напролёт пользовался — там, список радиодеталей напечатать, или ещё какую-то мелочь (шпоры в универ %)
Однако, как обычно, с "потыкиванием" у меня вышло лучше, чем с документированием натыканного.
К сожалению год назад, когда волею случая оказался дома, воткнул его в розетку и услышал изнутри неприятное шипение. На поверку оказалось, что блок питания в моё отсутствие ушёл в разгул и вместо 12 вольт стал выдавать 26, что терминалу не очень понравилось :/
О как. Я так понимаю, у вас был именно защищённый вариант. Он без живой батарейки работать не сможет. В отличие от простого, которому на это всё равно.
Кстати, а не сохранилось того, что вы тогда писали? Было бы интересно запустить.
Сохранилось, но не сказал бы что там что-то сложнее комплектного сэмпл-кода, ну и ессно недописанное и сырое всё %) https://dropmefiles.com/Kpjbg
Ну, не так всё плохо, как можно подумать...
![](https://habrastorage.org/webt/ko/il/on/koilonia0pk52wy3shkemd1-zay.jpeg)
Может, на Github выложите, для истории? Неплохой же пример для старта разработки под эту шнягу…
https://github.com/vladkorotnev/lipman-nurit-hello-world
Закинул, надеюсь не поимею потом проблем из-за этого, а то там ж в проекте половина сдк лежит %)
Немного дополню ранее написанное — для того, чтобы писать по-русски, необходимо выполнить SysUtil_SetLanguage(RUSSIAN,YEAR_MONTH_DAY);
Первый параметр выбирает системный язык, второй — формат даты. Текст для вывода на экран при этом должен быть в кодировке CP866.
But... Can it run DOOM?
Терминалы Lipman Nurit и их программирование