27 февраля, суббота 09:41
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Приоритеты считывать карты

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Приоритеты считывать карты

    Wincor - PROCASH/DDC-EMULATION=2.1/01
    Хочу сделать изменения приоритета метода считывания карты в момент когда она была вставлена в кардридер, а именно
    чтоб всегда проверялся в первой очереди наличия чипа на карте - а именно если при обнаружения чипа банкомат должен идти сразу на сейт инициализации без проверки трэка 2 на магнитке. В случае если чип не обнаружен идёт переход на попытку считывать магнитку .

    В документации(ProCashDDC V1.400 ProConsultDDC V1.200 User Guide_07-2006.pdf) я нашёл следующее (стр.64) :

    Card Read State (A) – state 000

    Read condition 1

    Entry number: 5

    Valid range: 001-015

    Description: This is one of the three entries (used with entry no. 6 and 7) that

    tell the terminal which card track(s) must be read. This is the first

    read condition. If this condition cannot be met, read condition 2

    is used next. Refer to table “Card read state entries” for the

    definition of the card read conditions.

    Read condition 2

    Entry number: 6

    Valid range: 001-015

    Description: This is one of the three entries (used with entry no. 5 and 7) that

    tell the terminal which card track(s) must be read. This is the

    second read condition used. This one is used if read condition

    1 cannot be done. If read condition 2 cannot be met, read

    condition 3 is used. Refer to table “Card read state entries” for

    the definition of the card read conditions.

    Read condition 3

    Entry number: 7

    Valid range: 001-015

    Description: This is one of the three entries (used with entry no. 5 and 6) that

    tell the terminal which card track(s) must be read. If neither read

    condition 1 or read condition 2 can be met, this read condition

    is used. Refer to table “Card read state entries” for the definition

    of the card read conditions.



    Проблема в том что на самом деле игнорируются все приоритеты, описанные в документации, на пример у меня в реестре в стейте «000»

    следующее STEP_PARAM :

    [HKEY_LOCAL_MACHINE\SOFTWARE\Wincor Nixdorf\ProTopas\CurrentVersion\LYNXCI\STATE\000]

    "STEP_PARAM"="010950011008008002001950"

    "STEP_FUNC"="DC_CARD_READ"

    Если смотреть по документации в функции по данному параметру "010950011008008006001950" кардридер должен при первой попытки считывать чип, если всё ОК идти на след. стейт 950, если нет – повторно попытаться считывать чип так как у нас там тоже «008», если и в этот раз не удалось считывать чип, перейти на 3-ю попытку «002» считывать 2-ой track с магнитке – это по документации должно так быть. На самом же деле игнорируются первые 2 попытке и кардридер сразу же идёт по магнитке«002». Почему так происходит ?

    Вторая проблема :

    В этой же доке нашёл что можно прочитать карточку с помощи стейта «Т» :

    Card Read State (T)

    You can use this state instead of the Card Read state (A), if you want to initiate

    PIN entry be the card holder at the same time as the terminal reads the card.

    This state performs the same functions as the card read state but it can be used

    if applications have no 000 state. See also section “Card Read State (A)”.



    Тут вообще полный игнор самого сейта Т – когда заливаю в реестр этот стейт, возникает синий экран смерти и банкомат

    перезагружается :



    [HKEY_LOCAL_MACHINE\SOFTWARE\Wincor Nixdorf\ProTopas\CurrentVersion\LYNXCI\STATE\000]

    "STEP_FUNC"="DDC_CARD_READ_T"

    "STEP_PARAM"="024951951951951018001951"

    Такое впечатление что понятие "DDC_CARD_READ_T" для Protopas-a не существует.



    У кого какие идеи ?

  • #2
    По No Fit match винкор пойдет только если отработаны все read conditions и не найдено соответствие фитам. Как вариант, можно написать производный фреймворк, который по выходу из базового состояния будет проверять реальное состояние карты и переходить по no fit match.

    Комментарий


    • #3
      Сообщение от Magarila Посмотреть сообщение
      По No Fit match винкор пойдет только если отработаны все read conditions и не найдено соответствие фитам. Как вариант, можно написать производный фреймворк, который по выходу из базового состояния будет проверять реальное состояние карты и переходить по no fit match.
      Из доки :
      This is the first read condition. If this condition cannot be met, read condition 2
      is used next.
      Значит если у меня :
      010950011008002002001950

      То в первую очередь он должен чип проверить, только в случае если "If this condition cannot be met" переходит на condition 2(002-трек2).
      На самом деле он даже не пытаятся чип проверить сразу переходит на 002.
      Определение No Fit match - это уже следующии этап.

      Комментарий


      • #4
        Многолетняя практика показывает, что винкор никому ничего не должен. Поиск по таблице фитов у винкора происходит в состоянии чтения карты. Обнаружение подходящего фита для винкора является приоритетной задачей.

        Комментарий


        • #5
          Вдогонку: именно из-за этой извращённой логики на винкоровском NDC невозможна реализация EMV-шных сценариев в стиле NCR, когда чипованые карты сразу идут по no fit match.

          Комментарий


          • #6
            Сообщение от Magarila Посмотреть сообщение
            Поиск по таблице фитов у винкора происходит в состоянии чтения карты. Обнаружение подходящего фита для винкора является приоритетной задачей.
            Хорошо,
            Как начинать поиск с попытки прочесть с перва чип. Ведь если я поставлю все 3 conditions 008(chip) он сразу же читает чип, магнитку вообще не трогает.

            Комментарий


            • #7
              valix,
              Не пойму, а какая разница что будет прочитано в первую очередь чип или магнитка? С A (эй) стейта всего два выхода либо фит у нас есть в таблице и не важно прочитали мы его с магнитки или чипа идем на определенный стейт, либо фита нет в таблице и мы идем на другой стейт. Стейт T по описанию больше подходт для вашей задачи если поставить только чтение чипа, а при ошибке уйти на стейт A и прочитать дорожки... Если успею попробую в понедельник отпишусь...

              P.S. Но все равно не понятно для чего такие заморочки...
              Последний раз редактировалось vvn; 23.09.2012, 10:04.

              Комментарий


              • #8
                Сообщение от vvn Посмотреть сообщение
                Стейт T по описанию больше подходт для вашей задачи если поставить только чтение чипа, а при ошибке уйти на стейт A и прочитать дорожки
                Вот-вот у меня сразу же возникла эта идея. Но при загруске стейта Т на банкомате - апликация сразу же рушется и банкомат перезагружается. Не понятно пока почему так происходит.

                Комментарий


                • #9
                  valix,
                  У меня на банкомате стоит ProBase т.е. ProCash версии 21, при прогрузке конфигурации со стейтом T на 000 позиции, после команды Go in Service приложение просто вываливается в винду, логи я даже не сал смотреть, подозреваю что стейт T в принципе не может быть использован первым для ожидания карты от клиента...

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

                  Комментарий


                  • #10
                    Сообщение от vvn Посмотреть сообщение
                    valix,
                    при прогрузке конфигурации со стейтом T на 000 позиции, после команды Go in Service приложение просто вываливается в винду,

                    P.S. Объясните для чего вам нужно, сразу понять работаем мы с чипом или с магниткой, далее на чиповых стейтах это решается очень просто...
                    Я пробовал вставить сейт Т после А сейта(000) - банкомат сразу же выдаёт мне карту. Мы работаем и с чипом и с магниткой. Проста хочу сделать так чтобы сперва была задействована попытка прочесть чип - если чип есть то далее обслуживание идёт исключительно по чипу, если же чип не обнаружен переходим на попытку прочесть магнитку.

                    vvn, вы писали "далее на чиповых стейтах это решается очень просто " - если вы имеете в виду поставить в "е" стейте "всегда инициализировать чип" - то этот вариант сразу же отпадает, так как при магнитке банкомат слишком долго исчет чип 6-7 сек.

                    Комментарий


                    • #11
                      valix,
                      Я имел в виду не всегда читать чип... да при этом он раза три "шлепает" площадкой пытаясь прочитать чип, читать чип если на второй дорожке прописано что это чиповая карта...
                      001 = Start EMV processing only if the
                      magnetic track 2 data has been
                      read and contains a service code
                      indicating that this card has a chip
                      (service code value 2 or 6).

                      Комментарий


                      • #12
                        vvn,

                        А если на магнитной полосе чиповой карты будут перезаписаны украденые данные с какойто другой магнитной карты(не чиповой), то тогда SC <>2; <>6.
                        Соответствино Start EMV processing не будет иметь место.

                        Комментарий


                        • #13
                          valix,
                          Ну и замечательно, в чем проблема?) Она пойдет по магнитке..., так же как и белый пластик... Не понимаю для чего злоумышленникам перезаписывать магнитную полосу чиповой карты?

                          Комментарий


                          • #14
                            vvn,
                            Сообщение от vvn Посмотреть сообщение
                            Не понимаю для чего злоумышленникам перезаписывать магнитную полосу чиповой карты?
                            Потому что у них в тот момент может быть под рукой только такой пластик чиповый оригинальный - не белый - а украденый. Поэтому я хочу сделать чтоб он изначально
                            шол по чипу и не смотрел вообще на магнитную полосу, в том случае если нет чипа то тогда обращение идёт на магнит.

                            Комментарий


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

                              Комментарий


                              • #16
                                vvn,

                                Если «те» додумаются насчёт скотча, то я согласен что не поможет данный релиз, в то же время, если мне удастся сделать данную структуру на своих банкоматов я думаю что это всё равно будет считаться как плюс по безопасности.

                                Комментарий


                                • #17
                                  valix,
                                  Я бы посчитал дальнейшие попытки решения данной задачи нецелесообразными, вам пожелаю успехов, надеюсь ни чем не обидел…

                                  Комментарий


                                  • #18
                                    valix, я в свое время писал custom state для винкора, проверявший наличие ATR при соответствующем service code. А стандартными средствами винкоровского ПО данная задача не решается.

                                    Комментарий


                                    • #19
                                      Magarila,

                                      что такое custom state для винкора ? и как можно его написать ? где можно подробно об это почитать ? есть какаята спец. дока ?

                                      Комментарий


                                      • #20
                                        vvn,

                                        Об обидах и речи не может быть )). То что у нас различаются мнения - это естественно и нормально.

                                        Комментарий


                                        • #21
                                          custom state - это свое NDC/DDC состояние сценария. Пишется на c++. Для написания необходим protopas/kit. Раньше все, что нужно, было на винкоровском интранете, сейчас - без понятия. Также, винкор в последнее время достаточно нервно относится к самописным дополнениям своего ПО (справедливо полагая, что таким образом лишается очередного мильёна), предавая виновных анафеме, лишая техподдержки итд.

                                          Комментарий


                                          • #22
                                            Magarila,
                                            Ну в c++ я писал кое какие проекты. Подскажи пожалуйста где или в какой доке можно прочитать про данную технологию? где можно почитать про protopas/kit ?

                                            Комментарий


                                            • #23
                                              Почитайте всю документацию по ProTopas/KIT (classic architecture, framework documentation, module construction kit) - сейчас она есть даже на обычных дисках proinstall/xdc, а также обязательно ProCash NDC/DDC Programmers Reference - без нее бессмысленно браться за разработку. У винкоровской документации есть лёгкий недостаток - она написана для тех, кто и так в курсе.

                                              Комментарий


                                              • #24
                                                Спасибо ! - Согласен, Винкор не пишет документацию для начинающих . Но всёравно все уровни знания начинаются с нуля.

                                                Комментарий


                                                • #25
                                                  Кстати нашёл в док. Прочипа :

                                                  EmvDCCompactFW.ContactChip

                                                  The function tries to contact the chip and if the chip supports one of the protocols requested by EMV, it is set ready for communication with the terminal.
                                                  There are three different ways to do this:

                                                  3. If neither the registry parameter TRACKS_PRIOR_TO_CHIP nor TRACKS_AFTER_CHIP_ERROR are set, the function tries to contact the chip without reading magnetic stripe data. If no chip can be accessed, the application must decide itself whether it performs the transaction by use of the magnetic stripe.

                                                  Return values:
                                                  EMVDCCOMPACTFW_OK (0)
                                                  Chip successfully contacted. Perform transaction only by use of chip.

                                                  Но не понятно пока как можно эту структуру задействовать.

                                                  Комментарий


                                                  • #26
                                                    Ну, прочип вам для данной задачи не понадобится (это как микроскопом гвозди забивать). А вот CCCardFW::GetATR будет самое то.

                                                    Комментарий

                                                    Обработка...
                                                    X