Comments 55
Было бы интересно найти SDK для других терминалов (в частности, интересуют Ingenico Unicapt32, Lipman Nurit, NewPOS NEW8110), но пока что изыскания в данном направлении закончились ничем.
Нуриты это уже вообще древнее зло, их уж на рынке как лет 15-20 нет новых. Зачем они вам?
По поводу любых китайцев, типа New POS, рекомендую напрямую им написать, типа я разработчик, дайте СДК. Шансы есть, иногда и дают под NDA.
Насчёт NewPOS — у них некогда был публичный FTP. Но сейчас ссылки все померли. Я пробовал им писать, сказали, что всё можно взять у представителей компании в регионе (которые по первому требованию такого не присылают). Такие дела.
В своё время писал под 8320 нурит вот этой штукой, подойдёт? :-)
Неплохо, неплохо! Надо скачать, попробовать собрать что-нибудь…
Ещё бы для 3020 найти, ну да ладно.
Архиворг вообще супер хреново индексируется, так-то там два шага от главной и попадаешь в огромный варезник в лучших традициях начала нулевых.
Но положил я его туда не очень давно, а заполучил ещё лет 9 назад с какого-то китайского сайта, где для скачивания нужно было залить три своих файла с кодом. Ну я и залил, очистку экрана спектрума на ассемблере тремя разными способами… Вот была бы тогда ChatGPT..! :-)
Когда-то пытался ковырять терминалы, но дальше сброса прошивки при вскрытии (глупый смех) у меня не пошло :).
Замеченные неточности:
в MockUp режиме ничего не отключается. Этот режим отличается только тем, что криптографические ключи, используемые для подписи ПО, заранее известны.
Перевести в MockUp можно только "чистый" терминал, в который не был инсталлирован профиль разработчика ПО (ну или VAR, как он раньше назывался). Кроме заливки MockUp ОС надо еще правильно инициализировать криптопроцессор.
Ключи IngeTrust никогда не удаляются из терминала (ну кроме случая срабатывания защиты от вскрытия аппарата).
Для улучшения "обзорности" хорошо бы добавить описание криптопроцессора (что это и с чем его кушают). Это самая мякотка терминала - а про неё ни слова. Как и про крипто-схемы.
Кстати, а почему тогда выпадет Unauthorized, если накатить ОС категории PROD на Mockup-терминал?
В поставке SDK есть несколько PDF, которые надо вдумчиво читать. Согласен, что изложенное в них можно понять только после трех... а то и четырех прочтений - такой там стиль изложения.
Unauthorized...
Дело в том, что терминалы Telium 1/2 персонализируются в два этапа: сначала прошивается профиль VAR (в нем есть криптоключ, которым потом проверяется подпись приложения), а потом инициализируется криптопроцессор (с помощью прошитого ранее ключа из профиля VAR). Получается, что в терминале есть два компонента, у которых должны быть одинаковые ключи для проверки подписи.
Когда на готовый PROD терминал накатывается MOCKUP прошивка, то получается конфликт - операционная система использует одну крипто-подпись, а криптографический процессор требует крипто-подпись от PROD. И при проверке этого у терминала сносит башню - вроде все должно быть одиннаковое, а оно разное.
При обратном движение - получаем такую же ситуацию: ОС стала PROD, а криптопроцессор остался MOCKUP. Результат тот же.
Сменить инициализацию криптопроцессора можно ТОЛЬКО с помощью KIT-а (номер не помню).
На самом деле MOCKUP - это профиль специального VAR, для разработчиков.
Правила очень простые:
PROD не трогать никогда. Если потрогали - то приложить к иконе (то есть к KIT-у)
MockUp терминал можно делать только из чистого терминала (без загруженного VAR профиля)
MockUp терминал можно делать только из чистого терминала (без загруженного VAR профиля)
Получается, на уже инициализированном PROD-терминале запустить криптопроцессор в мокап-режиме не выйдет? А сменить профиль можно только при помощи KIT 43C?
В поставке SDK есть несколько PDF, которые надо вдумчиво читать.
А что за версия SDK, интересно? Просто у меня такого нет. Только *.CHM-файл справки с описанием некоторых функций, про VARы там ничего нет. Нарыть удалось только вот этот документ, но он по программированию, а не по персонализации. Или эти PDFки поставлялись просто вместе с SDK как часть пакета документации?
в MockUp режиме ничего не отключается. Этот режим отличается только тем, что криптографические ключи, используемые для подписи ПО, заранее известны.
А где хранятся эти ключи? В файле *.M40, генерируемом SAT в мокап-режиме, содержится всего лишь
;
LCD.AGN
А в аналогичном пакете реальной прошивки вот что (фрагмент):
; SHA1 Checksum: 3c0f3c030554b42c7fed988060060dcaf9772805
; SDK 9.32.2.PatchH\Component\Barcode\Legacy\QR\8440960104.M40
; Component 8440960104.M40
; E07AB000
8440960104.LGN
; SDK 9.32.2.PatchH\Component\CLess\CLESS.M40
; Component CLESS.M40
; Contactless DLL
36550623.LGN
; SDK 9.32.2.PatchH\Component\DLL_ExtraGPRS\8445640119.M40
; Component 8445640119.M40
;
8445640119.LGN
; SDK 9.32.2.PatchH\Component\DLL_SSL\8443650405.M40
; Component 8443650405.M40
; SSL_NO_EC
8443650405.LGN
; SDK 9.32.2.PatchH\Component\Fonts\Standard\ISO5.m40
; Component ISO5.m40
; 00000000
8442190111.PGN
; SDK 9.32.2.PatchH\Component\Manager\iCT_LIBGR_EXPORT_PROD.m40
; Component iCT_LIBGR_EXPORT_PROD.m40
;TELIUM MANAGER EXPORT ICT PROD
;INGESTATE COMPATIBILITY T2
Получается, на уже инициализированном PROD-терминале запустить криптопроцессор в мокап-режиме не выйдет? А сменить профиль можно только при помощи KIT 43C?
Да, именно так.
А что за версия SDK, интересно?
Уже точно не помню. В комплекте было несколько PDF, причем копаться в них надо было самому. Потом французы начали перенос информации из этих PDF в CHM файлы. Сейчас, может и нет никаких PDF.
VAR - это сокращение от Value Added Reseller. То есть компания, которая будет продавать терминал с добавленной стоимостью (как правило ПО). В документации на SDK этого никогда и не было.
А где хранятся эти ключи?
Этот ключ выдается отдельным файлом :) и у каждого VAR он свой. Он загружается в терминал во время инициализации. Где уж там он храниться - не знаю.
И конечно, ключей VAR никогда не было в составе SDK.
То есть компания, которая будет продавать терминал с добавленной стоимостью (как правило ПО).
Как, к примеру, в этой стране это «Арком», который разрабатывает свой софт
Arcus и NewWay и попутно толкает терминалы?
Вот такой материал удалось нарыть. Это как раз про это всё?
Купил ради этой статьи терминал ict220, который ранее использовался (последние платежи датировались 18 годом) он спокойно перешел в mockup режим. Так что видимо еще зависит от банка, чье по было залито туда.
Теперь надо проверить функционирование крипто-процессора.
У меня очень большие сомнения, что хотя бы одна операция на нём сработает.
на какой-нибудь специальной версии Java (ее вроде как раз для такого изначально и делали)
Для смарт-карт делали. Но не для терминалов.
Да и куча исходников под терминалы живут ещё с тех годов, когда эти аппараты работали на Z80 или MC68000. И, конечно, написано оно всё на C. У той же VeriFone хорошая совместимость по этой части, программы для более старых терминалов сравнительно легко переписывались на новые.
Для терминалов тоже делали. :) Были такие терминалы Jade корейской компании CyberNet. В них была своя java-подобная машина. Причём она крутилась на каких-то копеечных микроконтроллерах. Жутко глючная, долго не прожила, но позволила выйти на некоторые рынки. Следующие поколения уже использовали обычный голый Си.
Для смарт-карт была вообще отдельная java card. А java-me была слишком ограничена, от собственно жавы она далека, как и жаваскрипт. В общем-то, хотели сделать унификацию, а получили еще один стандарт, который почти никто поддерживать не захотел. Уже в начале десятых годов полноценные java машины работали на платежных терминалах, одной из распространенных была ibm J9. Проблем с перифирией не было практически никаких - жава хорошо работала с библиотеками на С, которые за бутерброд в обед могли написать прожженные программисты прошлых поколений или студенты за ночь. Главное было не давать им работать творчески с памятью... Память терялась на скучной бизнес-логике куда и влезала жава, а драйвера были довольно стабильные.
Если кому-то интересно, могу написать про разработку под Verifone ?
С ними тоже доводилось дело иметь. Но софт не могу дать.
Кстати, а про какую их платформу хотите написать? Tranz/Omni/Verix-3/Verix V/Verix eVo/Engage?
Очень интересные материалы в статье, с удовольствием прочла . Сейчас работаю во французской компании Preludd . Платёжные системы . И наш основной клиент - Ingenico монополист-производитель платёжных терминалов во Франции. Переведу статью коллегам на французский , если автор не возражает ( авторство укажу ).
Не слышал про Preludd, а что за компания и чем занимается?
Круто. Прям ностальгия нахлынула, как софт под эти ingenico будучи студентом писал.
Тогда новое поколение 32битных Ingenico типа 5100 был прорыв. В предыдущем нужно было память по 32k страницы вручную переключать, а тут пиши как хочешь, не экономя каждый байт.
И быстрее они были, помню операция rsa подписи почти без задержки впечатлила.
Про процессор я не помню, но может и 186, или 8088, явно младше 286. Про OMNI не скажу, но на Ingenico основным средством отладки у меня была печать на чеке. В теории была возможность запускать эмулятор и делать полноценную отладку на компьютере, но после пары случаев с различным поведением в эмуляторе и железе, все эти попытки прекращались.
И с документацией был швах. Мне вместо нее дали контакты индуса из Парижа, которого я сильно доставал своим ужасным английским первое время.
Еще одна фишка, которая появилась в 32битных igenico - это удобная закладка кассовой ленты. Катушку можно было просто положить и закрыть, а в предыдуших нужно было в щель бумагу просовывать и прокручивать валик.
а в предыдуших нужно было в щель бумагу просовывать и прокручивать валик.
На Nurit'ах точно так же было.
больше десяти лет назад писал софт (с нуля и до прода) для терминалов в финке (белые квадратики). Писалось все на чистой Java 5 с вменяемым SDK. И стандартная жавовая многопоточность была, и ввод-вывод с файлами и сетью, только GUI был не стандартной библиотеки ну и всякие подписи транзакций с взаимодействием с contactless и проверкой чипов в SDK вендора. Писали в IntelliJ Idea и с junit тестами на локальных машинах. Вроде даже дебажить можно было на терминале, но не уверен. Рядом сидели С-шники с VeriFone и плакали. Мы выкатывали фичи с такой скоростью, что эти терминалы поставили везде и старые выкинули, оставив только, наверное, в метро да в полиции. Ну, пару лет спустя верифон компанию и купил - меня там уже не было... Так что все эти ужасы разработки инжеников и верифонов - мазохизм и жадность владельцев бизнеса.
Терминалы YOMANI, сейчас они YOMANI VeriFone, а тогда делали их, вроде, датчане. Конкретную модель не помню, у нас были первые модели без contactless, а модели с contactless прикручивали уже после релиза на рынок. До этого была у них (производителей) линейка Xenta, где был свой форк Java 1.3, если помню правильно - там SDK был поуродливее, но и было это лет на пять-семь раньше. Их и сейчас можно встретить иногда (широкое распространиение получили в Нидерландах) - тоже кубик, только более икея-дизайн и число-цифровой дисплей.
Вот бы пин-пады типа Ingenico ipp220 научиться использовать...
Цель какая? Просто научиться или использовать в реальном проекте?
Разработка приложений для платёжных терминалов Ingenico