1. Replay Mode
To enable the Replay Mode is activated in FMK 3.5, from the menu ‘TMS’->’Administrative…’ in ACE-Client, ensure the ‘Replay (Yes/No)’ Option is Enabled
NOTE: This feature needs to be enabled through the Compilation Options _CAD_INTERFACE_SUPPORT_ and _REPLAY_MODE_SUPPORT_
1.1. Location of Card.txt
The Replay Mode requires the file ‘Card.txt’ to be present in the execution folder.
1.1.1. Windows Command Line
Put the Card.txt file in the same folder than the executable, as for example:
/OpenKizis/WIN32_Debug_Static/Card.txt
1.1.2. Eclipse Debug Session
When starting a debug session from Eclipse then Card.txt must be located under OpenKizis folder as for example:
/OpenKizis/Card.txt
NOTE: It is possible to change the ‘Working Directory’ from the ‘Arguments’ Tab in the Debug Configuration Dialog
1.2. Format
The format of Card.txt is (see replay.7z for sample Card.txt files):
Line 1: Number of Card Detection (i.e. Reset)
Line 2: Simulated Technology Detected (04: Contactless, 40: Contact) [' ' and a 4 byte Unpredictable Number]
Line 3: APDU 1 Command (not used, displayed as expected APDU Command in Console Logs)
Line 4: APDU 1 Response
Line 5: APDU 2 Command
Line 6: APDU 2 Response
…
IMPORTANT: Card.txt shall always end with an empty line
1.2.1. Card Mute Simulation
Leaving a Blank Line for an APDU Response simulates a Card Mute
1.2.2. setting the Unpredictable Number ‘9F37’
Line 2 now offers an Optional Feature where it is possible to force the Unpredictable Number (tag ‘9F37’) for each Card Detection
The can be achieved by adding a space character ' ' after the Card Technology Code followed by the value of the Unpredictable Number (4 bytes)
For Example:
Line 2 containing ‘04 12345678’ means: ‘04’ = Contactless Card - ‘12345678’ = Value of Unpredictable Number ‘9F37’
The Section https://teamamadis.atlassian.net/wiki/spaces/AGF/pages/1178304556/Replay+Mode+in+FWK+3+5#1.3.3.-Two-Presentments-Scenario-(See-Phone-or-Double-Tap) shows how to set the Unpredictable Numbers ‘9F37’ for multiple Card Detections
1.3. Replay Scenarios
the Replay Mode allows to reproduce different scenarios such as Torn Transaction, Two Presentments,… by specifying the Number of Card Detection (first line)
The Technology must be specified after each Card Detection, the same Card.txt can simulate detection of multiple technologies in the same Script
1.3.1. Normal Replay Scenario
Most scenarios involve a single Card Detection
For example the following APDU Exchanges:
[CONTACLESS CARD DETECTED] CMD: 00A404000E325041592E5359532E444446303100 RSP: 6F3D840E325041592E5359532E4444463031A52BBF0C28610C4F07A0000000041010870101610C4F07A0000000043060870103610A4F05B012345678870109 SW1/SW2: 9000 CMD: 00A4040007A000000004101000 RSP: 6F358407A0000000041010A52A870101500A4D6173746572436172645F2D06656E646566729F1101019F380B9F02069F33039C019F0306 SW1/SW2: 9000 CMD: 80A800001283100000000017500000080000000000025000 RSP: 770A82020080940410010100 SW1/SW2: 9000 CMD: 00B2011400 RSP: 70485F24034912315A0854133390000015138C0E95059F02069F34039F33039F37048E0A000000000000000000009F0D0500000000009F0E0500000000009F0F0500000000009F4A0182 SW1/SW2: 9000 CMD: 80AE40001580000000010000000017503F0000006000E1F29BE500 RSP: 77299F2701809F360200029F2608AC123456789ABCDE9F10120110000000020000DAC00000000000000000 SW1/SW2: 9000
Will require the following Card.txt:
1 04 00A404000E325041592E5359532E444446303100 6F3D840E325041592E5359532E4444463031A52BBF0C28610C4F07A0000000041010870101610C4F07A0000000043060870103610A4F05B0123456788701099000 00A4040007A000000004101000 6F358407A0000000041010A52A870101500A4D6173746572436172645F2D06656E646566729F1101019F380B9F02069F33039C019F03069000 80A800001283100000000017500000080000000000025000 770A820200809404100101009000 00B2011400 70485F24034912315A0854133390000015138C0E95059F02069F34039F33039F37048E0A000000000000000000009F0D0500000000009F0E0500000000009F0F0500000000009F4A01829000 80AE40001580000000010000000017503F0000006000E1F29BE500 77299F2701809F360200029F2608AC123456789ABCDE9F10120110000000020000DAC000000000000000009000
1.3.2. Card Mute Replay Scenario (Torn Transaction)
Some scenario imply a Card is Mute, i.e. Card not sending back a Response (RSP, SW1/SW2), this situation occurs during Torn Transactions Testing
NOTE: The [Card Mute] is simulated with an <Empty Line>
For example, the following APDU Exchanges (with a CMD without RSP and/or SW1/SW2):
[CONTACLESS CARD DETECTED] CMD: 00A404000E325041592E5359532E444446303100 RSP: 6F3D840E325041592E5359532E4444463031A52BBF0C28610C4F07A0000000041010870101610C4F07A0000000043060870103610A4F05B012345678870109 SW1/SW2: 9000 CMD: 00A4040007A000000004101000 RSP: 6F328407A0000000041010A527870101500A4D6173746572436172645F2D06656E646566729F1101019F38089F02069F33039C01 SW1/SW2: 9000 CMD: 80A800000C830A0000000015000000080000 RSP: 771682020180941008010100100101011801010020010200 SW1/SW2: 9000 CMD: 00B2011400 RSP: 70525F24034912315A0854133390000015135F3401018C0E95059F02069F34039F33039F37048E0A000000000000000000009F0D0500000000009F0E0500000000009F0F0500000000009F51039F37049F4A0182 SW1/SW2: 9000 CMD: 00B2011C00 RSP: 7081AE9F320103922249656AE43F494BFA143C075B1E08B7C349F2B590324D03088E4537C6D0D9A6108BF790818004A25FC9C69B0FC069A776CE3F268FC5BB41E59E41923ED3EDAE18D23D587C0D217DDDB15117A2582A321AAEA46C8BA94D6580E6BB544891A59EA2E40FF5A627760B7F2D28DFFC0E6828DE41701408FAE021A5C9F9C7C0DAC145D0A440EFA66DDFDA4E38D01FE812294EF2BE4E0573797CAF483A85111A37EA782FBAAF3CCC0D8F01F8 SW1/SW2: 9000 CMD: 00B2012400 RSP: 702F9F4701039F4828744084A499FAF96FEFC6CC54F8CFAF51D432F1D2273C9B50D1B0D8F91EA17F1B373FFDC0E1E9F82F SW1/SW2: 9000 CMD: 00B2022400 RSP: 7081819F467E22FF1697414836ED4E791D4A8DDA86DEA1FDABD559A69704183D7B2038BC639024CB6E5FAAF93841C6B9012454B7A958C5745E9EC82A4D753FD1A89881D016C89EA10EF1407997429EB82203BB35D11E059694794F516A9D60A8B696B64038EDB9484CEA70E7CB964FCCC89225E49202D117A54661EAEAAF515356694DBA SW1/SW2: 9000 CMD: 80AE50001500000000010000000015003F0000006008D964C37500 RSP: SW1/SW2: [CONTACLESS CARD DETECTED] CMD: 00A404000E325041592E5359532E444446303100 RSP: 6F3D840E325041592E5359532E4444463031A52BBF0C28610C4F07A0000000041010870101610C4F07A0000000043060870103610A4F05B012345678870109 SW1/SW2: 9000 CMD: 00A4040007A000000004101000 RSP: 6F328407A0000000041010A527870101500A4D6173746572436172645F2D06656E646566729F1101019F38089F02069F33039C01 SW1/SW2: 9000 CMD: 80A800000C830A0000000015000000080000 RSP: 771682020180941008010100100101011801010020010200 SW1/SW2: 9000 CMD: 00B2011400 RSP: 70525F24034912315A0854133390000015135F3401018C0E95059F02069F34039F33039F37048E0A000000000000000000009F0D0500000000009F0E0500000000009F0F0500000000009F51039F37049F4A0182 SW1/SW2: 9000 CMD: 00B2011C00 RSP: 7081AE9F320103922249656AE43F494BFA143C075B1E08B7C349F2B590324D03088E4537C6D0D9A6108BF790818004A25FC9C69B0FC069A776CE3F268FC5BB41E59E41923ED3EDAE18D23D587C0D217DDDB15117A2582A321AAEA46C8BA94D6580E6BB544891A59EA2E40FF5A627760B7F2D28DFFC0E6828DE41701408FAE021A5C9F9C7C0DAC145D0A440EFA66DDFDA4E38D01FE812294EF2BE4E0573797CAF483A85111A37EA782FBAAF3CCC0D8F01F8 SW1/SW2: 9000 CMD: 00B2012400 RSP: 702F9F4701039F4828744084A499FAF96FEFC6CC54F8CFAF51D432F1D2273C9B50D1B0D8F91EA17F1B373FFDC0E1E9F82F SW1/SW2: 9000 CMD: 00B2022400 RSP: 7081819F467E22FF1697414836ED4E791D4A8DDA86DEA1FDABD559A69704183D7B2038BC639024CB6E5FAAF93841C6B9012454B7A958C5745E9EC82A4D753FD1A89881D016C89EA10EF1407997429EB82203BB35D11E059694794F516A9D60A8B696B64038EDB9484CEA70E7CB964FCCC89225E49202D117A54661EAEAAF515356694DBA SW1/SW2: 9000 CMD: 80D0000004D964C37500 RSP: 7781889F2701409F360200029F4B7C7BD418C2E4B6B75AEE244CAC5C0D56D357B80AFDAD12053DFCB69615ADD2714E01E0F291F8AEC6993EFC6F4C1D85A3755675960A0F3A97448693F4D111352CF6058878729CF1B9DAAAF1A3FEB704300686BD2994E0E6AB35F87B532D18BF079A465A09942B8E7366F3977E75D89C7D46EB792DCCAF8394FCC06875C9 SW1/SW2: 9000
Will require the following Card.txt:
2 04 00A404000E325041592E5359532E444446303100 6F3D840E325041592E5359532E4444463031A52BBF0C28610C4F07A0000000041010870101610C4F07A0000000043060870103610A4F05B0123456788701099000 00A4040007A000000004101000 6F328407A0000000041010A527870101500A4D6173746572436172645F2D06656E646566729F1101019F38089F02069F33039C019000 80A800000C830A0000000015000000080000 7716820201809410080101001001010118010100200102009000 00B2011400 70525F24034912315A0854133390000015135F3401018C0E95059F02069F34039F33039F37048E0A000000000000000000009F0D0500000000009F0E0500000000009F0F0500000000009F51039F37049F4A01829000 00B2011C00 7081AE9F320103922249656AE43F494BFA143C075B1E08B7C349F2B590324D03088E4537C6D0D9A6108BF790818004A25FC9C69B0FC069A776CE3F268FC5BB41E59E41923ED3EDAE18D23D587C0D217DDDB15117A2582A321AAEA46C8BA94D6580E6BB544891A59EA2E40FF5A627760B7F2D28DFFC0E6828DE41701408FAE021A5C9F9C7C0DAC145D0A440EFA66DDFDA4E38D01FE812294EF2BE4E0573797CAF483A85111A37EA782FBAAF3CCC0D8F01F89000 00B2012400 702F9F4701039F4828744084A499FAF96FEFC6CC54F8CFAF51D432F1D2273C9B50D1B0D8F91EA17F1B373FFDC0E1E9F82F9000 00B2022400 7081819F467E22FF1697414836ED4E791D4A8DDA86DEA1FDABD559A69704183D7B2038BC639024CB6E5FAAF93841C6B9012454B7A958C5745E9EC82A4D753FD1A89881D016C89EA10EF1407997429EB82203BB35D11E059694794F516A9D60A8B696B64038EDB9484CEA70E7CB964FCCC89225E49202D117A54661EAEAAF515356694DBA9000 80AE50001500000000010000000015003F0000006008D964C37500 04 00A404000E325041592E5359532E444446303100 6F3D840E325041592E5359532E4444463031A52BBF0C28610C4F07A0000000041010870101610C4F07A0000000043060870103610A4F05B0123456788701099000 00A4040007A000000004101000 6F328407A0000000041010A527870101500A4D6173746572436172645F2D06656E646566729F1101019F38089F02069F33039C019000 80A800000C830A0000000015000000080000 7716820201809410080101001001010118010100200102009000 00B2011400 70525F24034912315A0854133390000015135F3401018C0E95059F02069F34039F33039F37048E0A000000000000000000009F0D0500000000009F0E0500000000009F0F0500000000009F51039F37049F4A01829000 00B2011C00 7081AE9F320103922249656AE43F494BFA143C075B1E08B7C349F2B590324D03088E4537C6D0D9A6108BF790818004A25FC9C69B0FC069A776CE3F268FC5BB41E59E41923ED3EDAE18D23D587C0D217DDDB15117A2582A321AAEA46C8BA94D6580E6BB544891A59EA2E40FF5A627760B7F2D28DFFC0E6828DE41701408FAE021A5C9F9C7C0DAC145D0A440EFA66DDFDA4E38D01FE812294EF2BE4E0573797CAF483A85111A37EA782FBAAF3CCC0D8F01F89000 00B2012400 702F9F4701039F4828744084A499FAF96FEFC6CC54F8CFAF51D432F1D2273C9B50D1B0D8F91EA17F1B373FFDC0E1E9F82F9000 00B2022400 7081819F467E22FF1697414836ED4E791D4A8DDA86DEA1FDABD559A69704183D7B2038BC639024CB6E5FAAF93841C6B9012454B7A958C5745E9EC82A4D753FD1A89881D016C89EA10EF1407997429EB82203BB35D11E059694794F516A9D60A8B696B64038EDB9484CEA70E7CB964FCCC89225E49202D117A54661EAEAAF515356694DBA9000 80D0000004D964C37500 7781889F2701409F360200029F4B7C7BD418C2E4B6B75AEE244CAC5C0D56D357B80AFDAD12053DFCB69615ADD2714E01E0F291F8AEC6993EFC6F4C1D85A3755675960A0F3A97448693F4D111352CF6058878729CF1B9DAAAF1A3FEB704300686BD2994E0E6AB35F87B532D18BF079A465A09942B8E7366F3977E75D89C7D46EB792DCCAF8394FCC06875C99000
NOTE: Absence of APDU Response in the first GenAC Command is simulating a ‘Card Mute’ situation
1.3.3. Two Presentments Scenario (See Phone or Double Tap)
Some scenarios require a Double Tap (TRY AGAIN Outcome with Start-B), this occurs when a SEE PHONE is requested or execution of Issuer Scripts following an ONLINE REQUEST Outcome
For example, the following APDU Exchanges (PURE with 2nd Tap after 1st GenAC):
[CONTACLESS CARD DETECTED] CMD: 00A404000E325041592E5359532E444446303100 RSP: 6F51840E325041592E5359532E4444463031A53FBF0C3C611C4F07D9999999991010500E4170706C69636174696F6E203031870101611C4F07D9999999992020500E4170706C69636174696F6E203032870102 SW1/SW2: 9000 CMD: 00A4040007D999999999101000 RSP: 6F6E8407D9999999991010A563500E4170706C69636174696F6E2030318701019F38359F02069F03065F2A029F1A029A039F21039C019F76099F3704BF7110BF70109F350195059F3403C7059F09029F01069F15029F33035F2D04656E66729F120E4170706C69636174696F6E203031 SW1/SW2: 9000 CMD: 80A8000061835F0000000010000000000000000978005620031913214100000000000000000000A69314EC00000000000000000000000000000000000000000000000000000000000000002180000000000000003604E000F9000111223344556611222068C800 RSP: 770D82025C00940410010301C50180 SW1/SW2: 9000 CMD: 00B2011400 RSP: 7081B15F200555534552318C189F02069F03069F1A0295055F2A029A039C019F37049F34038D1A8A029F02069F03069F1A0295055F2A029A039C019F37049F34039F080200019F0702FFC05F280200569F420209788E10000000000000000042035E031F0300005F25031010045F24034912315A0822229999999999995F3401009F0D0500000000009F0E0500000000009F0F05000000000057132222999999999999D4912702000000000000009F49039F3704 SW1/SW2: 9000 CMD: 00B2021400 RSP: 7081B48F01019F4A01829081804D1C1BCDBF8FDD7D47DEA87FFB886454D5CCE21377E8F217AD9734048902351E4143FB2AACBD7596E63032AEF423A7448FDD7F3D1B7EE7FC5E0B1B3DE5328DE23400406EF3AD7862F01E695F61D274D9039BBE4725D47DC218B3AAEAFA699CE657EFD6A74D1D30E2A6F26817FD5419FE0F0C4ADDC98A2BD9913A652A27AE76A49224C3356141C036967DF5138924D125B320301C5D3F0E038EF73A59EEA8587C8BDF15C02AF19F320103 SW1/SW2: 9000 CMD: 00B2031400 RSP: 7081839381805056EAA909ADF6A3CF6A74049F34E8EBA9D040A02B00262CBD4275BEE79165A8BE2DBDB6802EA960C9CA75C55E7B500FF758471B259DA7890ED43E8F2E78A016DD03B7FA59238BFD360118322C7FDE5A7ECE06D24670AB534725E68691E0A3D4A39901CB6BA5A341D808BF8F731A39037B858818F9C337ABD546752102B25AE2 SW1/SW2: 9000 CMD: 80AE80002000000000100000000000000000560200000000097820031900A69314EC3F000000 RSP: 773A9F2701809F360200029F260801020304050607089F10200FA5039800A0100001000000000450000F0E0000000000000000000000000000C50188 SW1/SW2: 9000 [CONTACLESS CARD DETECTED] CMD: 00A4040007D999999999101000 RSP: 6F6E8407D9999999991010A563500E4170706C69636174696F6E2030318701019F38359F02069F03065F2A029F1A029A039F21039C019F76099F3704BF7110BF70109F350195059F3403C7059F09029F01069F15029F33035F2D04656E66729F120E4170706C69636174696F6E203031 SW1/SW2: 9000 CMD: 8C2400021D8711010102030405060708090A0B0C0D0E0F108E080102030405060708 SW1/SW2: 6300 CMD: 0CDC018411810501020304058E081112131415161718 SW1/SW2: 6300 CMD: 8C1600000A8E082122232425262728 SW1/SW2: 6300 CMD: 80AE400022303000000000100000000000000000560200000000097820062200CD12AA593F000000 RSP: 77379F2701409F360200029F260801020304050607089F10200FA5039800A0100001000000000450000F0E0000000000000000000000000000 SW1/SW2: 9000
Will require the following Card.txt:
2 04 A69314EC 00A404000E325041592E5359532E444446303100 6F51840E325041592E5359532E4444463031A53FBF0C3C611C4F07D9999999991010500E4170706C69636174696F6E203031870101611C4F07D9999999992020500E4170706C69636174696F6E2030328701029000 00A4040007D999999999101000 6F6E8407D9999999991010A563500E4170706C69636174696F6E2030318701019F38359F02069F03065F2A029F1A029A039F21039C019F76099F3704BF7110BF70109F350195059F3403C7059F09029F01069F15029F33035F2D04656E66729F120E4170706C69636174696F6E2030319000 80A8000061835F0000000010000000000000000978005620031913214100000000000000000000A69314EC00000000000000000000000000000000000000000000000000000000000000002180000000000000003604E000F9000111223344556611222068C800 770D82025C00940410010301C501809000 00B2011400 7081B15F200555534552318C189F02069F03069F1A0295055F2A029A039C019F37049F34038D1A8A029F02069F03069F1A0295055F2A029A039C019F37049F34039F080200019F0702FFC05F280200569F420209788E10000000000000000042035E031F0300005F25031010045F24034912315A0822229999999999995F3401009F0D0500000000009F0E0500000000009F0F05000000000057132222999999999999D4912702000000000000009F49039F37049000 00B2021400 7081B48F01019F4A01829081804D1C1BCDBF8FDD7D47DEA87FFB886454D5CCE21377E8F217AD9734048902351E4143FB2AACBD7596E63032AEF423A7448FDD7F3D1B7EE7FC5E0B1B3DE5328DE23400406EF3AD7862F01E695F61D274D9039BBE4725D47DC218B3AAEAFA699CE657EFD6A74D1D30E2A6F26817FD5419FE0F0C4ADDC98A2BD9913A652A27AE76A49224C3356141C036967DF5138924D125B320301C5D3F0E038EF73A59EEA8587C8BDF15C02AF19F3201039000 00B2031400 7081839381805056EAA909ADF6A3CF6A74049F34E8EBA9D040A02B00262CBD4275BEE79165A8BE2DBDB6802EA960C9CA75C55E7B500FF758471B259DA7890ED43E8F2E78A016DD03B7FA59238BFD360118322C7FDE5A7ECE06D24670AB534725E68691E0A3D4A39901CB6BA5A341D808BF8F731A39037B858818F9C337ABD546752102B25AE29000 80AE80002000000000100000000000000000560200000000097820031900A69314EC3F000000 773A9F2701809F360200029F260801020304050607089F10200FA5039800A0100001000000000450000F0E0000000000000000000000000000C501889000 04 CD12AA59 00A4040007D999999999101000 6F6E8407D9999999991010A563500E4170706C69636174696F6E2030318701019F38359F02069F03065F2A029F1A029A039F21039C019F76099F3704BF7110BF70109F350195059F3403C7059F09029F01069F15029F33035F2D04656E66729F120E4170706C69636174696F6E2030319000 8C2400021D8711010102030405060708090A0B0C0D0E0F108E080102030405060708 6300 0CDC018411810501020304058E081112131415161718 6300 8C1600000A8E082122232425262728 6300 80AE400022303000000000100000000000000000560200000000097820062200CD12AA593F000000 77379F2701409F360200029F260801020304050607089F10200FA5039800A0100001000000000450000F0E00000000000000000000000000009000
NOTE: in this example, the Unpredictable Number used in the Generate AC of the 1st Transaction (Line 15) is ‘9F37’ = ‘A69314EC’ therefore the first Card Detection in Line 2 specifies the Contactless Card Technology ‘04’ followed by the value of the Unpredictable Number: 04-A69314EC
The Unpredictable Number used in the Generate AC of the 2nd Transaction (Line 26) is ‘9F37’ = ‘CD12AA59’ therefore the second Card Detection in Line 17 specifies the Contactless Card Technology ‘04’ followed by the new value of Unpredictable Number: ‘04 CD12AA59’
2. Python Scripts
Some Python Scripts were made for generating Card.txt from Log Files
The Python Scripts may require some modifications due to inconsistencies with Log Files generated from different Kernels and different Tool Versions
For exemple, PayPass Logs generated by EVAL are slightly different from ExpressPay Logs
Also new Versions of EVAL may generate slightly different Logs from older Versions even for the same Kernel
IMPORTANT: Some Card.txt still requires manual modifications after their generation for Card Mute and Double Tap Scenarios (see Card Mute Replay Scenario and Two Presentments Scenario )
2.1. Sample EVAL Log Python Scripts
Sample Python Script for generating Card.txt file from EVAL Logs
Example for PURE:
2.2. Sample ICC Solution Log Python Scripts
Exemple for Interac: