Работа с терминалом по карте: Инструкция для POS-терминала Сбербанка

Принимаем и анализируем радиосигнал платежного терминала с помощью SDR / Хабр

Привет, Хабр.

Недавно мне выпала возможность потестировать платежный терминал с возможностью бесконтактной оплаты. Ну а раз оплата бесконтактная, значит сигнал передается по радио, и разумеется, я не смог отказаться от искушения посмотреть с помощью SDR-приемника, какие же данные передаются и принимаются во время совершения платежа.


Фото (с) Verifone

Для тех кому интересно как это работает, немного подробностей под катом.

Сразу нужно отметить, что никакого официального описания протокола обмена терминала с картой у меня нет, такие данные обычно распространяются только компаниям-партнерам после подписания NDA, но послушать эфир и сделать какие-то предположения нам никто не запрещает.

Итак, приступим.

Спектр сигнала

Начнем с самого простого — запустим приемник, включим терминал, произведем оплату и посмотрим, что есть в эфире. Поиск сигнала оказывается элементарным, виден огромный пик на частоте 13.56МГц:

Уровень сигнала неудивителен, ведь его должно быть достаточно для работы индуктивной связи с картой, которая собственного источника питания не имеет. Как подсказывает гугл, 13.56МГц это стандартная частота для RFID-устройств. Симметрия сигнала подсказывает на возможное использование АМ-модуляции.

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

Рассмотрим их подробнее.

1. Режим бездействия

В этом режиме терминал ничего не излучает, на экране только логотип банка или магазина.

2. Запрос платежа и ожидание карты

Кассир инициирует платеж на определенную сумму. В этот момент терминал переходит в режим ожидания оплаты. Оплата картой может быть совершена либо с помощью магнитной полосы, либо путем вставления карты, либо бесконтактным методом, который нас и интересует.

Чтобы определить, когда карту поднесли к терминалу, запрос посылается каждые 0.12с. Короткие посылки в виде вертикальных линий на спектре, в увеличенном виде выглядят так:

Хорошо видно, что данные повторяются. Блок данных («на глаз», 24 или 32 бита) скорее всего содержит битовую маску, содержащую форматы карт, поддерживаемых данным ридером. По крайней мере, на другие карты (например на транспортную), ридер не «отзывается».

3. Обмен данными с картой

Когда карта обнаружена, её контроллер в ответ посылает свои данные — вероятно, номер карты и служебную информацию. В самой карте нет источника питания, поэтому ответ от неё очень слабый по мощности. Как можно видеть, на каждый запрос терминала карта посылает свой ответ, «радиообмен» между ними довольно активный:

Увеличенный сигнал, принятый от карты, выглядит примерно так:

4. Проверка карты

Когда данные о карте получены, терминал вероятно проверяет ключи шифрования на карте, процесс занимает порядка 0. 6с. RFID-модуль в этот момент отключен. Возможно, терминал запрашивает статус карты онлайн.

5. Ожидание изъятия карты

В тот момент, когда терминал прочитал все данные и проверил карту, на экран выводится сообщение «уберите карту», каждые 5мс терминал проверяет на месте ли карта:

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

Сам ответ от карты кстати, довольно простой и короткий, «на глаз», не больше 24бит:

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

Заключение

Как можно видеть, на бинарном уровне все довольно просто. В протоколе RFID используется обычная амплитудная модуляция, никакого rocket science. Но разумеется, основная работа выполняется на логическом уровне, проверка карты и выполнение платежа довольно сложный процесс, в котором также задействовано шифрование. Для тех, кто захочет изучить тему подробнее, можно ознакомиться с полезными комментариями от юзеров rizorko и lil_Toady, в которых можно найти ссылки на стандарты.

Напоследок, можно ответить на вопрос, который наверное интересует многих, возможно ли скрытное снятие денег с чужой карты на большом расстоянии. Судя по анализу радиосигнала, можно сказать что это очень маловероятно. Во-первых, сама карта не имеет встроенного источника питания — чтобы её процессор заработал, напряженность поля должна быть

весьма большой. Нормальное расстояние чтения карты составляет 2-3см, чтобы увеличить его хотя бы до 100см, напряженность поля должна быть в третьей степени больше этой разницы. Второй момент, это получение ответа от карты — её сигнал очень слабый, и принять его на большом расстоянии тоже непросто (плюс не стоит забывать, что длина волны с частотой 13МГц составляет порядка 20 метров, и короткие антенны при таких длинах волн неэффективны). Наконец, не стоит забывать об организационных моментах — каждый платежный терминал привязывается к банковскому счету юридического лица, и если будут поступать жалобы на списание средств, этот счет могут просто заблокировать.
Сам терминал кстати, имеет уникальный ID, и если его будут постоянно привязывать к разным счетам, это тоже будет подозрительно. В общем, хотя теоретически удаленное чтение RFID может быть возможным, судя по этой статье, реальных случаев такого снятия средств зарегистрировано не было. И наконец, лимит бесконтактных платежей весьма небольшой, так что «прибыль» вероятно не будет соответствовать риску и стоимости оборудования.

Работа с банковским терминалом. Инитпро касса

При оплате заказов с помощью банковской карты необходим банковский терминал. 

Подключение банковского терминала

  1. Убедитесь в том, что касса подключена к ПК. Для корректной работы кассы необходимо установить на компьютер драйвер виртуального COM‑порта. Это произойдет автоматически при установке на компьютер кассового ПО.
  2. Убедитесь, что банковский терминал подключен к ПК, к сети питания и к интернету. Для корректной работы терминала также необходимо установить USB-драйвер.
    Драйвер вы можете скачать здесь
    Выберите нужный в соответствии с моделью подключаемого терминала и ОС на вашем компьютере (32/64-разрядная).
    Примечание: информация о типе ОС содержится в разделе свойств компьютера на вашем ПК.
  3. Зайдите в кассовое ПО, установленное на ваш ПК. Для входа введите код доступа.
    Примечание: код доступа сотрудника можно посмотреть в личном кабинете Бэк-офиса в разделе НастройкиСотрудники на вкладке Персональные данные. Более подробную инструкцию можно посмотреть в разделе Персональные данные. Также для входа в кассовое ПО можно воспользоваться паролем администратора, который указан на первой странице паспорта ККТ. 

  4. На левой панели Меню выберите пункт Настройки.

  5. В Настройках выберите пункт Оборудование.

  6. Откроется раздел Оборудование. Нажмите кнопку Настроить в подразделе Платежный терминал.

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

  8. Выберите пункт Использовать банковский терминал.

  9. Отроется форма для заполнения настроек платежного терминала.

  10. В графе Модель платежного терминала укажите модель вашего устройства. Её название указано на самом аппарате.

  11. В графе Способ подключения по умолчанию установлено USB. На данный момент это единственный способ подключения банковского терминала.


  12. В графе СОМ-порт USB укажите тот СОМ-порт, который вы указывали при установке драйвера. 

  13. В графе Протокол обмена с платежной системой выберите соответствующую.

  14. В разделе Настройки печати чеков выберите нужные вам параметры касательно печати слип-чеков и отчетов о закрытии смены.

  15. После заполнения всех полей формы нажмите кнопку Сохранить.

  16. Если вы всё сделали верно, на экране появится уведомление о том, что настройки сохранены и подключение кассового ПО к терминалу установлено.

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

Как совершить продажу через банковский терминал

  1. В меню кассового ПО выберите пункт Новая продажа.



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

  3. После этого откроется окно с вариантами оплаты. Выберете раздел Банковской картой.

  4. Дальнейшие действия зависят от режима продажи. Его можно изменить, нажав на кнопку в верхней части экрана/клавишу F2 на клавиатуре.

    а) Режим Приход


    На данной вкладке нажмите кнопку Оплатить.

    После этого активируется доступ к терминалу. Для оплаты следуйте дальнейшим инструкциям на экране.

    В случае успешной оплаты банковской картой, касса распечатает 2 слип-чека: для предприятия и для держателя карты, после чего будет распечатан фискальный документ.

    б) Режим Расход

    На данной вкладке нажмите кнопку Готово.


    В случае успешного выполнения операции касса напечатает кассовый чек расхода.

Возврат денег через банковский терминал

  1. В кассовом ПО на панели Меню перейдите в раздел Чеки.

  2. В открывшемся окне найдите нужный чек. Для быстрого посика нужного чека воспользоваться фильтрами, которые расположены в верхней части экрана.

  3. Нажмите на иконку  в строке чека, возврат по которому нужно осуществить.



    Примечание: если возврат осуществляется в текущую смену банковского терминала, то будет произведена отмена чека, и банковская карта покупателя не потребуется.

    Если же операция выполняется после закрытия смены на банковском терминале, в которую печатался чек, при офомрлении возврата потребуется банковская карта покупателя.

  4. Подтвердите оформление возврата чека.

  5. При успешном выполнении операции касса напечатает кассовый и слип-чеки. В списке чеков появится новая строка Возврат прихода, отражающая операцию возврата.

 

autocmd — сопоставить ключ с буфером терминала, соответствующее задание которого уже завершено. Способ, которым я создал это сопоставление, представлен ниже

 tnoremap  :bd!
 

Это сопоставление работает при открытии терминала (путем выполнения :term ) или при выполнении :term {команда} и когда {команда} все еще выполняется.

Если задание завершено, нажатие не приводит к выполнению сопоставленной команды.

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

Я сначала подумал в этой команде (см. ниже), но я не хочу, чтобы отображался в обычном режиме (объясняется это тем, что моей основной целью было создать его только для терминальных буферов через tmap команда. В противном случае я бы не публиковал этот вопрос.)

 nnoremap  :bd!
 

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

 au BufWinEnter * if &buftype == 'терминал' | nnoremap <буфер>  :bd! | конец
 

Однако нажатие ни к чему не привело. Я попытался устранить эту проблему и обнаружил, что BufWinEnter не является подходящим событием автокоманды, поскольку кажется, что когда выполняется :term {command} , запускается этот autocmd , но в это время переменная &buftype еще не установлена.

Как я могу отобразить так, чтобы он выполнял :bd! для тех буферов, которые были открыты с помощью :term {команда} и чье задание уже завершено, без выполнения <к-р> всегда отображать?

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

 au BufWinEnter * if &buftype == 'терминал' | nnoremap <буфер>  :bd! | конец
 

Следующий минимальный vimrc может помочь вам решить эту проблему

 установить несовместимый
весело! П()
    echom '&buftype: "' . &buftype . '"'
развлечение
" Выполните `:term ls`, и вы увидите, что эхо-сообщение печатает пустой
"&buftype`.
autocmd BufWinEnter * вызов P()
" Попробуйте нажать это на терминале, работа которого завершена (откройте его " с помощью `:term
" ls`).  Вы заметите, что он не выполняет отображенную команду.
tnoremap  :bd!
 

Сочетания клавиш в Терминале на Mac

Искать в этом руководстве

В приложении «Терминал» на Mac вы можете быстро выполнять множество задач с помощью сочетаний клавиш. См. ярлыки ниже, а также в меню Терминала в строке меню. В меню приложений сочетания клавиш представлены символами.

Примечание. Сочетания клавиш в приложениях могут различаться в зависимости от языка и раскладки клавиатуры, которые вы используете на своем Mac. Если приведенные ниже сочетания клавиш не работают должным образом, загляните в меню приложений в строке меню, чтобы увидеть правильные сочетания клавиш. Вы также можете использовать средство просмотра клавиатуры, чтобы увидеть текущую раскладку клавиатуры, известную как 9.0079 источник ввода .

Open Terminal for me

Work with Terminal windows and tabs

903 9000

9999999999999999999999999999999999999999999999999999999999999999999999999999999901

Action

Shortcut

New window

Command-N

New окно с той же командой

Control-Command-N

Новая вкладка

Command-T

New tab with same command

Control-Command-T

Show or hide tab bar

Shift-Command-T

Show all tabs or exit Обзор вкладок

Shift-Command-Backslash (\)

Новая команда

Shift-Command-N

New Relete Connection

New Relete Command 9106

0106

Shift-Command-K

Show or hide Inspector

Command-I

Edit title

Shift-Command-I

Edit background color

Option-Command-I

Увеличить шрифты

Command-Plus (+)

0 Уменьшить шрифты0005

Command-Minus (-)

Следующее окно

Командный Грейв Акцент (`)

Предыдущее окно

Следующая вкладка

Control-Tab

Предыдущая вкладка

Control-Shift-Tab

Splat-Shift-Tab

Splat The Wintab0005

Command-D

ЗАКЛЮЧИТЕЛЬНЫЙ СЛАДКА

Shift-Command-D

Blose

Shift-Command-W

Закрыть другие вкладки

Опция Command-W

Закрыть все

. 0005

Scroll to top

Command-Home

Scroll to bottom

Command-End

Page up

Command-Page Up

Page Down

Командная страница вниз

Линейка

Опционная коммерческая страница UP

Line down

Option-Command-Page Down

Edit a command line

Action

Shortcut

Reposition the insertion point

Нажмите и удерживайте клавишу Option, перемещая указатель к новой точке вставки

Переместите точку вставки в начало строки

Control-A

Перемещение точки вставки на конец линии

Control-E

Перемещение точки инцепции.

Переместить точку вставки назад на один символ

Стрелка влево

Переместить точку вставки вперед на одно слово

Option-Right Arrow

Move the insertion point backward one word

Option-Left Arrow

Delete the line

Control-U

Удалить до конца строки

Control-K

Удалить вперед до конца слова

Option-D (доступно, если выбран параметр Использовать параметр как мета-ключ)

Delete backward to the beginning of the word

Control-W

Delete one character

Delete

Forward-delete one character

Удалить вперед (или использовать Fn-Delete)

Транспонировать два символа

Control-T

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

103.

Вставьте выбор

9000

999999999999999999999999999999999999999999999999999901

Action

Shortcut

Select a complete file path

Press and hold the Shift and Command keys and double-click the path

Select полная строка текста

Трижды щелкните строку

Выберите слово

Дважды щелкните слово

Выберите URL-адрес

Нажмите и удерживайте клавиши Shift и Command и дважды щелкните URL-адрес

CUT

Command-X

Копия

Команда C

Копия Command-C

Копия без намерения

. 0005

Контроль-сдвиг-Command-C

Копировать Plain Text

Опции-сдвиг-Command-C

9000

101101103 3

Shift-Command-V

ВАШЕНИЯ ЭКСПЛЕКТОР0005

Контроль-сдвиг-Command-V

Найти

Command-F

Найти следующую

Command-Shift-G

Поиск по выделенному тексту

Command-E

0 Перейти к выделенному тексту

Command-J

Select all

Command-A

Open the character viewer

Control-Command-Space

Work with marks and Закладка

90099999 Перейти к следующей закладке

3

0 900

5

Действие

сочетание

Марк

Командовый0099

Mark as bookmark

Option-Command-U

Unmark

Shift-Command-U

Mark line and send return

Command-Return

Отправить возврат без маркировки

Shift-Command-Return

Вставить закладку Shift-Command-2M

6

5

Вставка закладка с именем

Опция-сдвиг-Command-M

Прыгание до предыдущего марки

Drump-Up Arrow

Drump-Up Arrow

.

Command-Стрелка вниз

Перейти к предыдущей закладке

Option-Command-Стрелка вверх

Option-Command-Down Arrow

Clear to previous mark

Command-L

Clear to previous bookmark

Option-Command-L

Clear To Start

Command-K

Выберите между оценками

Shift-Command-A

Другие короткие

.0087

Action

Shortcut

Enter or exit full screen

Control-Command-F

Show or hide colors

Shift- Command-C

Открытые настройки терминала

Command-Comma (,)

Break

Typing Comming-Period (.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *