Pull to refresh

Comments 40

Интересно и полезно, спасибо!

Мне тоже в руки попал девайс из терминальной сферы, правда в виде залитика:

Бедолага

Электроэрозия сделала своё дело и сгрызла ногу у LDO 3.3v....

МК - MAX32550, как бы я не искал но SDK под него не нашлось, а судя по этому твиту - затею и вовсе стоит закопать. Поэтому вопрос, действительно ли всё так плохо или надо знать где искать?

Найти реально, если действительно знать, где искать. Самым результативным (но и самым сложным) вариантом будет познакомиться с тем, кто варится в этой среде и имеет доступ к материалам. Прямо так и написать — разжился девайсом, хочу поиграться. Если железка не слишком актуальная, могут и поделиться.
Если знакомств таких нет, то искать на просторах Yahoo (он лучше ищет редкую шнягу, нежели гугл), на публичных FTP (searchftps.net), в DHT-сети (en.btdig.com, в России открывать через VPN). Если не нашлось — попробовать снова через месяц-другой.


Насчёт вашей железки — судя по всему, это бесконтактный считыватель, который управляется по RS-232. И нужно искать не прошивку, а протокол обмена.

Пришёл домой, появилась возможность глянуть поподробнее. Как я понимаю, это остатки от чего-то вроде этого?



О как. Я одно время даже хотел нарыть такой аппарат на "поиграться", но что-то так и не задалось.
Это 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 — он сейчас уже чисто поиграться и просто для истории, время их ушло.

Нурит да - уже история. Особенно доставляло, когда делаешь мультиплатформенный код, который должен работать и на инженико и на нурите. Инженико литл ендиан - нурит - биг ендиан. Много крови это попортило при портации приложений.

Вы, случайно, не для QIWI писали? У них как раз были приложения под Nurit, Ingenico, PAX.

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

посвятил несколько лет написанию кода под это чудо

из запомнившегося и доставившего максимальное количество боли: 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 - брр. Проприетарные системы - очень не гибкие. Линукс терминалы - наше всё :)

Тогда понятно. А под какие Ingenico доводилось писать? У них же три поколения было...

Под телиум 1 и телиум 2. С самыми последними генерациями уже не пришлось сталкиваться, ушел на линукс и перекрестился.

Почитал ваши статьи про нурит и инженико - ностальгия взяла. Уже давно подзабытые термины и инструментарии. Можете вспомнить еще старые 16-битные платформы от шлюмбердже-аксальто (терминалы Magic 6000 и 6100). Там подписи не нужно и инструментарий вроде ищется.

Интересно. Попробую поискать.
Но тут ещё проблема в том, чтобы саму железку нарыть.


А вот с Hypercom теми же было бы интересно поиграться. Но по ним в интернете вообще всё пусто.

Magic 6100.
Magic 6100.

Неубиваемые аппараты были. Флеш память использовалась только как ПЗУ для ОС. Всё файловое хранилище - обычная статическая память с подпиткой от батареи. Хватало года на 2-3, затем замена батареи и дальше работаем. Этим они выгодно отличались от Ingenico, у которых за те же 2-3 года порой ресурс флеш диска вырабатывался в ноль и требовалась перепайка в условиях сервис центра.

О как. Но я таких не застал уже, увы.

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

У Hypercom Optimum T4220 такой прикол тоже был. Падали в тампер от малейшего удара, был у них заводской дефект такой. При том, что более старой моделью T2100 можно было забивать гвозди и колоть орехи, и ничего ей не бывало.

Вот это вы напомнили, конечно, о молодости :-)
Рад, что у вас всё заработало.



В своё время терминал откопался на радиорынке как нерабочий, после замены батарейки ожидаемо заработал, хоть и упал в тампер. Сделал такую фиговину с "апплетами", чтоб не перезаливать под каждую задачу новый код, да и апплетом serial printer несколько лет напролёт пользовался — там, список радиодеталей напечатать, или ещё какую-то мелочь (шпоры в универ %)


Однако, как обычно, с "потыкиванием" у меня вышло лучше, чем с документированием натыканного.


К сожалению год назад, когда волею случая оказался дома, воткнул его в розетку и услышал изнутри неприятное шипение. На поверку оказалось, что блок питания в моё отсутствие ушёл в разгул и вместо 12 вольт стал выдавать 26, что терминалу не очень понравилось :/

О как. Я так понимаю, у вас был именно защищённый вариант. Он без живой батарейки работать не сможет. В отличие от простого, которому на это всё равно.
Кстати, а не сохранилось того, что вы тогда писали? Было бы интересно запустить.

Сохранилось, но не сказал бы что там что-то сложнее комплектного сэмпл-кода, ну и ессно недописанное и сырое всё %) https://dropmefiles.com/Kpjbg

Ну, не так всё плохо, как можно подумать...

Ну, оно даже успешно собралось (только пришлось поменять пути в BUILD.BAT и LINKER.CMD) и запустилось:



Может, на Github выложите, для истории? Неплохой же пример для старта разработки под эту шнягу…

Та вряд ли. Это уже самое что ни на есть abandonware…
К слову, на VeriFone DevNet до сих пор валяется софт для Nurit (в разделе "Legacy"). Но скачать его нельзя, увы.

Немного дополню ранее написанное — для того, чтобы писать по-русски, необходимо выполнить SysUtil_SetLanguage(RUSSIAN,YEAR_MONTH_DAY);
Первый параметр выбирает системный язык, второй — формат даты. Текст для вывода на экран при этом должен быть в кодировке CP866.

По идее, можно. На том же Casio PV-S450 был 3D-лабиринт. Нечто подобное наверняка можно реализовать и тут (правда, работать будет весьма медленно).

Sign up to leave a comment.