├── README.md ├── apdu_parser.py ├── command_descriptions.txt ├── response_descriptions.txt └── sample_files ├── commands_log.txt ├── custom_command_descriptions.txt ├── custom_response_descriptions.txt ├── default_log.txt └── responses_log.txt /README.md: -------------------------------------------------------------------------------- 1 | # apdu-parser 2 | 3 | APDU-parser lets you parse your APDU commands' and APDU responses' hex bytes into their descriptions. 4 | Project includes default APDU commands and APDU responses default lists with descriptions. 5 | 6 | ## Usage 7 | 8 | ```sh 9 | python apdu_parser.py -i 10 | 11 | Options: 12 | -h, --help show this help message and exit 13 | 14 | -i INPUT_FILE, --input=INPUT_FILE specify input file 15 | 16 | -o OUTPUT_FILE, --output=OUTPUT_FILE specify output file 17 | 18 | -c, --commands specify if input file contains only APDU commands 19 | 20 | -r, --responses specify if input file contains only APDU responses 21 | 22 | -C COMMAND_DESCRIPTIONS, --command-descriptions=COMMAND_DESCRIPTIONS specify custom command descriptions file 23 | 24 | -R RESPONSE_DESCRIPTIONS, --response-descriptions=RESPONSE_DESCRIPTIONS specify custom response descriptions file 25 | 26 | -T, --colors show terminal output in different colors 27 | ``` 28 | 29 | # Examples 30 | 31 | Basic usage: 32 | 33 | ```sh 34 | python apdu_parser.py -i sample_files/default_log.txt 35 | ``` 36 | 37 | Set output file: 38 | 39 | ```sh 40 | python apdu_parser.py -i sample_files/default_log.txt -o outputs/default_log_output.txt 41 | ``` 42 | 43 | Parse every line in input file as an APDU command: 44 | 45 | ```sh 46 | python apdu_parser.py -i sample_files/commands_log.txt -c 47 | ``` 48 | 49 | Parse every line in input file as an APDU response: 50 | 51 | ```sh 52 | python apdu_parser.py -i sample_files/responses_log.txt -r 53 | ``` 54 | 55 | Set custom command descriptions file: 56 | 57 | ```sh 58 | python apdu_parser.py -i sample_files/default_log.txt -C sample_files/custom_command_descriptions.txt 59 | ``` 60 | 61 | Set custom command responses file: 62 | 63 | ```sh 64 | python apdu_parser.py -i sample_files/default_log.txt -R sample_files/custom_responses_descriptions.txt 65 | ``` 66 | 67 | Show output results in different colors in terminal (works only on Linux / MacOS): 68 | 69 | ```sh 70 | python apdu_parser.py -i sample_files/default_log.txt -T 71 | ``` 72 | 73 | ## Requirements 74 | 75 | To properly run the apdu-parser, [Python](http://www.python.org/download/) **2.6.x** or **2.7.x** is required. -------------------------------------------------------------------------------- /apdu_parser.py: -------------------------------------------------------------------------------- 1 | import errno 2 | import optparse 3 | import os 4 | 5 | 6 | # Output colors 7 | RED = '\033[91m' 8 | GREEN = '\033[92m' 9 | YELLOW = '\033[93m' 10 | LIGHT_PURPLE = '\033[94m' 11 | PURPLE = '\033[95m' 12 | BLUE = '\033[96m' 13 | ENDC = '\033[0m' 14 | 15 | 16 | def parse_description_file(filename): 17 | try: 18 | f = open(filename, "r") 19 | except: 20 | print "[*] Error while opening file: {}".format(filename) 21 | 22 | lines = f.readlines() 23 | results = [] 24 | try: 25 | for line in lines: 26 | results.append(line.strip().split("\t")) 27 | except: 28 | print "[*] Error while parsing descriptions file: {}".format(filename) 29 | 30 | f.close() 31 | return results 32 | 33 | 34 | def parse_apdu_command(line, command_descriptions): 35 | command_bytes = line.strip().split(" ") 36 | command_bytes_len = len(command_bytes) 37 | desc = "(NOT FOUND)" 38 | 39 | # Header: CLA | INS | P1 | P2 40 | cla = command_bytes[0] 41 | ins = command_bytes[1] 42 | p1 = command_bytes[2] 43 | p2 = command_bytes[3] 44 | 45 | # Body: [ LC | DATA ] | [ LE ] 46 | lc = None 47 | le = None 48 | data = None 49 | 50 | if command_bytes_len == 5: # LE 51 | le = command_bytes[4] 52 | elif command_bytes_len > 5: 53 | lc = command_bytes[4] 54 | lc_int = int("0x" + lc, 0) 55 | if command_bytes_len > 5 + lc_int: # LC | DATA | LE 56 | le = command_bytes[5+lc_int] 57 | data = command_bytes[5:-1] 58 | else: # LC | DATA 59 | data = command_bytes[5:] 60 | 61 | # Parse CLA (TO-DO) 62 | 63 | # Parse IN 64 | for cd in command_descriptions: 65 | if ins == cd[2]: # INS 66 | desc = "{} ({})".format(cd[0], cd[1]) # INS NAME (INS DESC) 67 | break 68 | 69 | # Parse P1, P2 (TO-DO) 70 | 71 | # Parse DATA (TO-DO) 72 | 73 | return desc,cla,ins,p1,p2,lc,le,data 74 | 75 | 76 | def parse_apdu_response(line, response_descriptions, last_apdu_command=None): 77 | response_bytes = line.strip().split(" ") 78 | desc = "(NOT FOUND)" 79 | category = None 80 | 81 | # Data field: DATA (optional) 82 | data = None 83 | response_bytes_len = len(response_bytes) 84 | if response_bytes_len > 2: 85 | data = response_bytes[2:] 86 | 87 | # Trailer: SW1 | SW2 88 | sw1 = response_bytes[-2] 89 | sw2 = response_bytes[-1] 90 | 91 | # Parse SW1 SW2 codes 92 | for rd in response_descriptions: 93 | if sw1 == rd[0] and sw2 == rd[1]: # SW1, SW2 94 | desc = "{} [{}]".format(rd[3], rd[2]) 95 | category = rd[2] 96 | break 97 | 98 | return desc, category, sw1, sw2, data 99 | # TO-DO: 100 | # - RECOGNIZE SWs THAT INCLUDE XX VALUES 101 | # - PARSE CUSTOM RESPONSE CODES DEPENDING ON LAST APDU COMMAND 102 | 103 | 104 | def show_apdu_command(desc, cla, ins, p1, p2, lc, le, data, colors): 105 | print "{} : {}\n".format(ins, desc) # INS : INS_NAME (INS_DESC) 106 | 107 | if colors: 108 | cla = RED + cla + ENDC 109 | #ins = GREEN + ins + ENDC 110 | p1 = LIGHT_PURPLE + p1 + ENDC 111 | p2 = LIGHT_PURPLE + p2 + ENDC 112 | if lc is not None: 113 | lc = GREEN + lc + ENDC 114 | if le is not None: 115 | le = BLUE + le + ENDC 116 | 117 | line = "\t" + cla + " " + ins + " " + p1 + " " + p2 118 | if lc is not None: 119 | line += " " + str(lc) 120 | 121 | if data is not None: 122 | line += " " + (" ").join(data) 123 | 124 | if le is not None: 125 | line += " " + le 126 | 127 | print line + "\n" 128 | 129 | 130 | def show_apdu_response(desc, category, sw1, sw2, data, colors): 131 | print "{} {} : {}\n".format(sw1, sw2, desc) # SW1 SW2 : DESC 132 | 133 | if colors: 134 | if category == "E": # Error 135 | sw1 = RED + sw1 + ENDC 136 | sw2 = RED + sw2 + ENDC 137 | 138 | if category == "W": # Warning 139 | sw1 = YELLOW + sw1 + ENDC 140 | sw2 = YELLOW + sw2 + ENDC 141 | 142 | if category == "I": # Info 143 | sw1 = GREEN + sw1 + ENDC 144 | sw2 = GREEN + sw2 + ENDC 145 | 146 | if category == "S": # Security 147 | sw1 = BLUE + sw1 + ENDC 148 | sw2 = BLUE + sw2 + ENDC 149 | 150 | line = "\t" 151 | if data is not None: 152 | line += " ".join(data) + " " 153 | 154 | print line + sw1 + " " + sw2 + "\n" 155 | 156 | 157 | def main(): 158 | parser = optparse.OptionParser('usage %prog -i ') 159 | parser.add_option('-i', '--input', dest='input_file', type='string', help='specify input file') 160 | parser.add_option('-o', '--output', dest='output_file', type='string', help='specify output file') 161 | 162 | parser.add_option('-c', '--commands', action='store_true', dest='commands_only', default=False, help='specify if input file contains only APDU commands') 163 | parser.add_option('-r', '--responses', action='store_true', dest='responses_only', default=False, help='specify if input file contains only APDU responses') 164 | 165 | parser.add_option('-C', '--command-descriptions', dest='command_descriptions', type='string', help='specify custom command descriptions file') 166 | parser.add_option('-R', '--response-descriptions', dest='response_descriptions', type='string', help='specify custom response descriptions file') 167 | 168 | parser.add_option('-T', '--colors', action='store_true', dest='colors', default=False, help='show terminal output in different colors') 169 | 170 | (options, args) = parser.parse_args() 171 | 172 | input_file = None 173 | output_file = None 174 | last_apdu_command = None 175 | 176 | commands_only = options.commands_only 177 | responses_only = options.responses_only 178 | 179 | command_descriptions = None 180 | response_descriptions = None 181 | 182 | colors = options.colors 183 | 184 | # Input file 185 | if options.input_file is None: 186 | print parser.usage 187 | print 188 | exit(0) 189 | else: 190 | input_file = open(options.input_file, "r") 191 | apdu_lines = input_file.readlines() 192 | input_file.close() 193 | 194 | # Output file 195 | if options.output_file is not None: 196 | if not os.path.exists(os.path.dirname(options.output_file)): 197 | try: 198 | os.makedirs(os.path.dirname(options.output_file)) 199 | except OSError as e: # Guard against race condition 200 | if e.errno != errno.EEXIST: 201 | raise 202 | 203 | output_file = open(options.output_file, "w") 204 | 205 | if commands_only and options.responses_only: 206 | print parser.usage 207 | print "[*] Error: --commands and --responses options cannot be set at the same time" 208 | exit(0) 209 | 210 | # Custom command descriptions 211 | if not responses_only: 212 | if options.command_descriptions is not None: 213 | command_descriptions = parse_description_file(options.command_descriptions) 214 | else: 215 | command_descriptions = parse_description_file("command_descriptions.txt") 216 | 217 | # Custom response descriptions 218 | if not commands_only: 219 | if options.response_descriptions is not None: 220 | response_descriptions = parse_description_file(options.response_descriptions) 221 | else: 222 | response_descriptions = parse_description_file("response_descriptions.txt") 223 | 224 | # Parse APDU lines 225 | is_next_command = not responses_only 226 | 227 | for apdu_line in apdu_lines: 228 | apdu_line = apdu_line.strip() 229 | # APDU command 230 | if is_next_command: 231 | desc,cla,ins,p1,p2,lc,le,data = parse_apdu_command(apdu_line, command_descriptions) 232 | last_apdu_command = apdu_line 233 | is_next_command = commands_only 234 | # Show parsed results 235 | show_apdu_command(desc, cla, ins, p1, p2, lc, le, data, colors) 236 | # Write output to output file 237 | if output_file is not None: 238 | output_file.write(ins + " : " + desc + ")\n") # INS : INS_NAME (INS_DESC) 239 | output_file.write("\t" + apdu_line + "\n") 240 | # APDU response 241 | else: 242 | desc, category, sw1, sw2, data = parse_apdu_response(apdu_line, response_descriptions, last_apdu_command) 243 | is_next_command = not responses_only 244 | # Show parsed results 245 | show_apdu_response(desc, category, sw1, sw2, data, colors) 246 | # Write output to output file 247 | if output_file is not None: 248 | output_file.write(sw1 + "" + sw2 + " : " + desc + "\n") # SW1SW2 : CODE_DESC 249 | output_file.write("\t" + apdu_line + "\n") 250 | 251 | # Close output files 252 | if output_file is not None: 253 | output_file.close() 254 | 255 | 256 | if __name__ == '__main__': 257 | main() 258 | -------------------------------------------------------------------------------- /command_descriptions.txt: -------------------------------------------------------------------------------- 1 | ACTIVATE FILE Changes the state of a file to OPERATIONAL (ACTIVATED). 44 2 | ACTIVATE RECORD x 08 3 | APPEND RECORD Insert a new record in a file with a linear fixed structure. E2 4 | APPLICATION BLOCK Reversibly block an application. 1E 5 | APPLICATION MANAGEMENT REQUEST x 40 6 | APPLICATION MANAGEMENT REQUEST x 41 7 | APPLICATION UNBLOCK Unblock an application. 18 8 | ASK RANDOM Request a random number from the smart card. 84 9 | CHANGE CHV Change the PIN. 24 10 | CHANGE REFERENCE DATA Change the data used for user identification (e.g., a PIN). 24 11 | CHANGE REFERENCE DATA Change the data used for user identification (e.g., a PIN). 25 12 | CHECK RESET AND APPLET SELECTION x A6 13 | CLOSE APPLICATION Reset all attained access condition levels. AC 14 | COMPARE x 33 15 | CONVERT IEP CURRENCY Convert currency. 56 16 | CREATE FILE Creates an EF under the root or the currently selected DF or creates a DF under the root. E0 17 | CREATE RECORD Create a new record in a record-oriented file. E2 18 | CREDIT IEP Load the purse (IEP). 52 19 | CREDIT PSAM Pay from IEP to the PSAM. 72 20 | DEACTIVATE FILE Changes the state of a file to OPERATIONAL (DEACTIVATED). 04 21 | DEACTIVATE RECORD x 06 22 | DEBIT IEP Pay from the purse 54 23 | DECREASE STAMPED Reduce the value of a counter in a file that is protected using a cryptographic checksum. 34 24 | DECREASE Reduce the value of a counter in a file. 30 25 | DELETE DATA x EE 26 | DELETE FILE Deletes the current DF or EF. E4 27 | DELETE Delete a uniquely identifiable object (such as a load file, application or key). E4 28 | DISABLE CHV Disable PIN queries. 26 29 | DISABLE VERIFICATION REQUIREMENT Disable user identification (e.g., PIN queries). 26 30 | ENABLE CHV Enable PIN queries. 28 31 | ENABLE VERIFICATION REQUIREMENT Enable user identification (e.g., PIN queries). 28 32 | END PERSONALIZATION x x 33 | ENVELOPE Embed a command in a smart card command. C2 34 | ENVELOPE x C3 35 | ERASE BINARY Erases part of a binary file. 0E 36 | ERASE BINARY Erases part of a binary file. 0F 37 | ERASE RECORD x 0C 38 | EXECUTE Execute a file. AE 39 | EXTEND Extend a file. D4 40 | EXTERNAL AUTHENTICATE Authenticates the external terminal to the card. Sets the secure channel mode. 82 41 | GENERAL AUTHENTICATE The General Authenticate command is used to generate secure messaging session keys between both entities (IFD and ICC) as part of elliptic curve asymmetric key mutual authentication. 86 42 | GENERAL AUTHENTICATE The General Authenticate command is used to generate secure messaging session keys between both entities (IFD and ICC) as part of elliptic curve asymmetric key mutual authentication. 87 43 | GENERATE ASYMMETRIC KEY PAIR x 46 44 | GENERATE ASYMMETRIC KEY PAIR x 47 45 | GENERATE AUTHORISATION CRYPTOGRAM Generate a signature for a payment transaction. AE 46 | GENERATE PUBLIC KEY PAIR Generate a key pair for an asymmetric cryptographic algorithm. 46 47 | GET ATTRIBUTE x 34 48 | GET ATTRIBUTE x 35 49 | GET CHALLENGE Request a random number from the smart card. 84 50 | GET DATA (CA) x CB 51 | GET DATA Read TLV-coded data objects. CA 52 | GET DATA x CB 53 | GET NEXT DATA x CC 54 | GET NEXT DATA x CD 55 | GET PREVIOUS IEP SIGNATURE Repeat the computation and output of the last signature received IEP. 5A 56 | GET PREVIOUS PSAM SIGNATURE Repeat the computation and output of the last signature received from the PSAM. 86 57 | GET RESPONSE Retrieves the response from a previous command. C0 58 | GET STATUS Read the life-cycle state information of the card manager, application and load file. F2 59 | GIVE RANDOM Send a random number to the smart card. 86 60 | INCREASE STAMPED Increase the value of a counter in a file that is protected using a cryptographic checksum. 36 61 | INCREASE Increase the value of a counter in a file. 32 62 | INITIALIZE IEP Initialize IEP for a subsequent purse command. 50 63 | INITIALIZE PSAM for Offline Collection Initialize PSAM for offline booking of the amount. 7C 64 | INITIALIZE PSAM for Online Collection Initialize PSAM for online booking of the amount. 76 65 | INITIALIZE PSAM Initialize PSAM for a subsequent purse command. 70 66 | INITILIZE UPDATE First step to open a secure channel. The personalization device authenticates the card. X 67 | INTERNAL AUTHENTICATE x 88 68 | INVALIDATE Reversibly block a file. 04 69 | ISSUER AUTHENTICATE Verify a signature of the card issuer. 82 70 | LOAD APPLICATION x EA 71 | LOAD APPLICATION Load an application by transferring the load file. EB 72 | LOAD x E8 73 | MANAGE CHANNEL x 70 74 | MANAGE DATA x CF 75 | MANAGE PROTOCOL Allows or disallows use of applet commands in contactless mode. x 76 | MANAGE SECURITY ENVIRONMENT Sets or replaces one component of the current SE. 22 77 | MUTUAL AUTHENTICATE Mutually authenticate the smart card and the terminal. 82 78 | PERFORM BIOMETRIC OPERATION x 2E 79 | PERFORM BIOMETRIC OPERATION x 2F 80 | PERFORM SCQL OPERATION Execute an SCQL instruction. 10 81 | PERFORM SECURITY OPERATION Execute a cryptographic algorithm in the smart card. 2A 82 | PERFORM SECURITY OPERATION x 2B 83 | PERFORM TRANSACTION OPERATION Execute an SCQL transaction instruction. 12 84 | PERFORM USER OPERATION Manage users in the context of SCQL. 14 85 | PSAM COLLECT End PSAM online booking of an amount. 7A 86 | PSAM COLLECT Execute PSAM online booking of an amount. 78 87 | PSAM COMPLETE End paying the IEP against the PSAM. 74 88 | PSAM VERIFY COLLECTION End PSAM offline booking of an amount. 7E 89 | PUT DATA Write TLV-coded data objects. DA 90 | PUT DATA x DB 91 | PUT KEY Write one or more new keys or replace existing keys. D8 92 | PUT NEXT DATA x D8 93 | PUT NEXT DATA x D9 94 | REACTIVATE FILE Unblock a file. 44 95 | READ BINARY STAMPED Read data from a file with a transparent structure that is secured with a cryptographic checksum. B4 96 | READ BINARY Reads part of a binary file. B0 97 | READ BINARY Reads part of a binary file. B1 98 | READ RECORD STAMPED Read data from a file with a record-oriented structure that is secured with a cryptographic checksum. B6 99 | READ RECORD(S) Read data from a file with a record-oriented structure. B2 100 | READ RECORD Read data from a file with a record-oriented structure. B2 101 | READ RECORD x B3 102 | REHABILITATE Unblock a file. 44 103 | REMOVE APPLICATION x EC 104 | REMOVE APPLICATION x ED 105 | RESET RETRY COUNTER Reset an error counter. 2C 106 | RESET RETRY COUNTER x 2D 107 | RUN GSM ALGORITHM Execute a GSM-specific cryptographic algorithm. 88 108 | SEARCH BINARY Search for a text string in a file with a transparent structure. A0 109 | SEARCH BINARY x A1 110 | SEARCH RECORD Search for a text string in a file with a record-oriented structure. A2 111 | SEEK Search for a text string in a file with a record-oriented structure. A2 112 | SELECT (FILE) Selects a DF or an EF by its file ID, path or name (in the case of DFs). A4 113 | SELECT DATA x A5 114 | SELECT Select a file. A4 115 | SET STATUS Write life-cycle state data for the card manager, application and load file. F0 116 | SLEEP Obsolete command for setting the smart card in a power-saving state. FA 117 | STATUS Read various data from the currently selected file. F2 118 | TERMINATE CARD USAGE Irreversibly block a smart card. FE 119 | TERMINATE CARD USAGE Irreversibly block a smart card. EF 120 | TERMINATE DF Irreversibly block an DF. E6 121 | TERMINATE EF Irreversibly block an EF. E8 122 | UNBLOCK CHV Reset a PIN retry counter that has reached its maximum value. 2C 123 | UPDATE BINARY Updates part of a binary file. D6 124 | UPDATE BINARY Updates part of a binary file. D7 125 | UPDATE DATA x DE 126 | UPDATE DATA x DF 127 | UPDATE IEP PARAMETER Change the general parameters of a purse. 58 128 | UPDATE PSAM Parameter (offline) Modify the parameters in the PSAM (offline). 84 129 | UPDATE PSAM Parameter (online) Modify the parameters in the PSAM (online). 82 130 | UPDATE RECORD Write to a file with a linear fixed, linear variable or cyclic structure. DC 131 | UPDATE RECORD Write to a file with a linear fixed, linear variable or cyclic structure. DD 132 | VERIFY CHV Verify the PIN. 20 133 | VERIFY Verify the transferred data (such as a PIN). 20 134 | VERIFY x 21 135 | WRITE BINARY Write to a file with a transparent structure using a logical AND/OR process. D0 136 | WRITE BINARY Write to a file with a transparent structure using a logical AND/OR process. D1 137 | WRITE RECORD Write to a file with a record-oriented structure using a logical AND/OR process. D2 -------------------------------------------------------------------------------- /response_descriptions.txt: -------------------------------------------------------------------------------- 1 | 06 E Class not supported. 2 | 61 -- I Response bytes still available 3 | 61 XX I Command successfully executed; \XX\ bytes of data are available and can be requested using GET RESPONSE. 4 | 62 -- W State of non-volatile memory unchanged 5 | 62 00 W No information given (NV-Ram not changed) 6 | 62 01 W NV-Ram not changed 1. 7 | 62 81 W Part of returned data may be corrupted 8 | 62 82 W End of file/record reached before reading Le bytes 9 | 62 83 W Selected file invalidated 10 | 62 84 W Selected file is not valid. FCI not formated according to ISO 11 | 62 85 W No input data available from a sensor on the card. No Purse Engine enslaved for R3bc 12 | 62 A2 W Wrong R-MAC 13 | 62 A4 W Card locked (during reset( )) 14 | 62 CX W Counter with value x (command dependent) 15 | 62 F1 W Wrong C-MAC 16 | 62 F3 W Internal reset 17 | 62 F5 W Default agent locked 18 | 62 F7 W Cardholder locked 19 | 62 F8 W Basement is current agent 20 | 62 F9 W CALC Key Set not unblocked 21 | 62 FX W - 22 | 62 XX W RFU 23 | 63 -- W State of non-volatile memory changed 24 | 63 00 W No information given (NV-Ram changed) 25 | 63 81 W File filled up by the last write. Loading/updating is not allowed. 26 | 63 82 W Card key not supported. 27 | 63 83 W Reader key not supported. 28 | 63 84 W Plaintext transmission not supported. 29 | 63 85 W Secured transmission not supported. 30 | 63 86 W Volatile memory is not available. 31 | 63 87 W Non-volatile memory is not available. 32 | 63 88 W Key number not valid. 33 | 63 89 W Key length is not correct. 34 | 63 C0 W Verify fail, no try left. 35 | 63 C1 W Verify fail, 1 try left. 36 | 63 C2 W Verify fail, 2 tries left. 37 | 63 C3 W Verify fail, 3 tries left. 38 | 63 CX W The counter has reached the value \x\ (0 = x = 15) (command dependent). 39 | 63 F1 W More data expected. 40 | 63 F2 W More data expected and proactive command pending. 41 | 63 FX W - 42 | 63 XX W RFU 43 | 64 -- E State of non-volatile memory unchanged 44 | 64 00 E No information given (NV-Ram not changed) 45 | 64 01 E Command timeout. Immediate response required by the card. 46 | 64 XX E RFU 47 | 65 -- E State of non-volatile memory changed 48 | 65 00 E No information given 49 | 65 01 E Write error. Memory failure. There have been problems in writing or reading the EEPROM. Other hardware problems may also bring this error. 50 | 65 81 E Memory failure 51 | 65 FX E - 52 | 65 XX E RFU 53 | 66 -- S 54 | 66 00 S Error while receiving (timeout) 55 | 66 01 S Error while receiving (character parity error) 56 | 66 02 S Wrong checksum 57 | 66 03 S The current DF file without FCI 58 | 66 04 S No SF or KF under the current DF 59 | 66 69 S Incorrect Encryption/Decryption Padding 60 | 66 XX S - 61 | 67 -- E 62 | 67 00 E Wrong length 63 | 67 XX E length incorrect (procedure)(ISO 7816-3) 64 | 68 -- E Functions in CLA not supported 65 | 68 00 E No information given (The request function is not supported by the card) 66 | 68 81 E Logical channel not supported 67 | 68 82 E Secure messaging not supported 68 | 68 83 E Last command of the chain expected 69 | 68 84 E Command chaining not supported 70 | 68 FX E - 71 | 68 XX E RFU 72 | 69 -- E Command not allowed 73 | 69 00 E No information given (Command not allowed) 74 | 69 01 E Command not accepted (inactive state) 75 | 69 81 E Command incompatible with file structure 76 | 69 82 E Security condition not satisfied. 77 | 69 83 E Authentication method blocked 78 | 69 84 E Referenced data reversibly blocked (invalidated) 79 | 69 85 E Conditions of use not satisfied. 80 | 69 86 E Command not allowed (no current EF) 81 | 69 87 E Expected secure messaging (SM) object missing 82 | 69 88 E Incorrect secure messaging (SM) data object 83 | 69 8D Reserved 84 | 69 96 E Data must be updated again 85 | 69 E1 E POL1 of the currently Enabled Profile prevents this action. 86 | 69 F0 E Permission Denied 87 | 69 F1 E Permission Denied - Missing Privilege 88 | 69 FX E - 89 | 69 XX E RFU 90 | 6A -- E Wrong parameter(s) P1-P2 91 | 6A 00 E No information given (Bytes P1 and/or P2 are incorrect) 92 | 6A 80 E The parameters in the data field are incorrect. 93 | 6A 81 E Function not supported 94 | 6A 82 E File not found 95 | 6A 83 E Record not found 96 | 6A 84 E There is insufficient memory space in record or file 97 | 6A 85 E Lc inconsistent with TLV structure 98 | 6A 86 E Incorrect P1 or P2 parameter. 99 | 6A 87 E Lc inconsistent with P1-P2 100 | 6A 88 E Referenced data not found 101 | 6A 89 E File already exists 102 | 6A 8A E DF name already exists. 103 | 6A F0 E Wrong parameter value 104 | 6A FX E - 105 | 6A XX E RFU 106 | 6B -- E 107 | 6B 00 E Wrong parameter(s) P1-P2 108 | 6B XX E Reference incorrect (procedure byte), (ISO 7816-3) 109 | 6C -- E Wrong length Le 110 | 6C 00 E Incorrect P3 length. 111 | 6C XX E Bad length value in Le; \xx\ is the correct exact Le 112 | 6D -- E 113 | 6D 00 E Instruction code not supported or invalid 114 | 6D XX E Instruction code not programmed or invalid (procedure byte), (ISO 7816-3) 115 | 6E -- E 116 | 6E 00 E Class not supported 117 | 6E XX E Instruction class not supported (procedure byte), (ISO 7816-3) 118 | 6F -- E Internal exception 119 | 6F 00 E Command aborted - more exact diagnosis not possible (e.g., operating system error). 120 | 6F FF E Card dead (overuse, ...) 121 | 6F XX E No precise diagnosis (procedure byte), (ISO 7816-3) 122 | 9- -- 123 | 90 00 I Command successfully executed (OK). 124 | 90 04 W PIN not succesfully verified, 3 or more PIN tries left 125 | 90 08 Key/file not found 126 | 90 80 W Unblock Try Counter has reached zero 127 | 91 00 OK 128 | 91 01 States.activity, States.lock Status or States.lockable has wrong value 129 | 91 02 Transaction number reached its limit 130 | 91 0C No changes 131 | 91 0E Insufficient NV-Memory to complete command 132 | 91 1C Command code not supported 133 | 91 1E CRC or MAC does not match data 134 | 91 40 Invalid key number specified 135 | 91 7E Length of command string invalid 136 | 91 9D Not allow the requested command 137 | 91 9E Value of the parameter invalid 138 | 91 A0 Requested AID not present on PICC 139 | 91 A1 Unrecoverable error within application 140 | 91 AE Authentication status does not allow the requested command 141 | 91 AF Additional data frame is expected to be sent 142 | 91 BE Out of boundary 143 | 91 C1 Unrecoverable error within PICC 144 | 91 CA Previous Command was not fully completed 145 | 91 CD PICC was disabled by an unrecoverable error 146 | 91 CE Number of Applications limited to 28 147 | 91 DE File or application already exists 148 | 91 EE Could not complete NV-write operation due to loss of power 149 | 91 F0 Specified file number does not exist 150 | 91 F1 Unrecoverable error within file 151 | 92 0x I Writing to EEPROM successful after \x\ attempts. 152 | 92 10 E Insufficient memory. No more storage available. 153 | 92 40 E Writing to EEPROM not successful. 154 | 93 01 Integrity error 155 | 93 02 Candidate S2 invalid 156 | 93 03 E Application is permanently locked 157 | 94 00 E No EF selected. 158 | 94 01 Candidate currency code does not match purse currency 159 | 94 02 Candidate amount too high 160 | 94 02 E Address range exceeded. 161 | 94 03 Candidate amount too low 162 | 94 04 E FID not found, record not found or comparison pattern not found. 163 | 94 05 Problems in the data field 164 | 94 06 E Required MAC unavailable 165 | 94 07 Bad currency : purse engine has no slot with R3bc currency 166 | 94 08 R3bc currency not supported in purse engine 167 | 94 08 E Selected file type does not match command. 168 | 95 80 Bad sequence 169 | 96 81 Slave not found 170 | 97 00 PIN blocked and Unblock Try Counter is 1 or 2 171 | 97 02 Main keys are blocked 172 | 97 04 PIN not succesfully verified, 3 or more PIN tries left 173 | 97 84 Base key 174 | 97 85 Limit exceeded - C-MAC key 175 | 97 86 SM error - Limit exceeded - R-MAC key 176 | 97 87 Limit exceeded - sequence counter 177 | 97 88 Limit exceeded - R-MAC length 178 | 97 89 Service not available 179 | 98 02 E No PIN defined. 180 | 98 04 E Access conditions not satisfied, authentication failed. 181 | 98 35 E ASK RANDOM or GIVE RANDOM not executed. 182 | 98 40 E PIN verification not successful. 183 | 98 50 E INCREASE or DECREASE could not be executed because a limit has been reached. 184 | 98 62 E Authentication Error, application specific (incorrect MAC) 185 | 99 00 1 PIN try left 186 | 99 04 PIN not succesfully verified, 1 PIN try left 187 | 99 85 Wrong status - Cardholder lock 188 | 99 86 E Missing privilege 189 | 99 87 PIN is not installed 190 | 99 88 Wrong status - R-MAC state 191 | 9A 00 2 PIN try left 192 | 9A 04 PIN not succesfully verified, 2 PIN try left 193 | 9A 71 Wrong parameter value - Double agent AID 194 | 9A 72 Wrong parameter value - Double agent Type 195 | 9D 05 E Incorrect certificate type 196 | 9D 07 E Incorrect session data size 197 | 9D 08 E Incorrect DIR file record size 198 | 9D 09 E Incorrect FCI record size 199 | 9D 0A E Incorrect code size 200 | 9D 10 E Insufficient memory to load application 201 | 9D 11 E Invalid AID 202 | 9D 12 E Duplicate AID 203 | 9D 13 E Application previously loaded 204 | 9D 14 E Application history list full 205 | 9D 15 E Application not open 206 | 9D 17 E Invalid offset 207 | 9D 18 E Application already loaded 208 | 9D 19 E Invalid certificate 209 | 9D 1A E Invalid signature 210 | 9D 1B E Invalid KTU 211 | 9D 1D E MSM controls not set 212 | 9D 1E E Application signature does not exist 213 | 9D 1F E KTU does not exist 214 | 9D 20 E Application not loaded 215 | 9D 21 E Invalid Open command data length 216 | 9D 30 E Check data parameter is incorrect (invalid start address) 217 | 9D 31 E Check data parameter is incorrect (invalid length) 218 | 9D 32 E Check data parameter is incorrect (illegal memory check area) 219 | 9D 40 E Invalid MSM Controls ciphertext 220 | 9D 41 E MSM controls already set 221 | 9D 42 E Set MSM Controls data length less than 2 bytes 222 | 9D 43 E Invalid MSM Controls data length 223 | 9D 44 E Excess MSM Controls ciphertext 224 | 9D 45 E Verification of MSM Controls data failed 225 | 9D 50 E Invalid MCD Issuer production ID 226 | 9D 51 E Invalid MCD Issuer ID 227 | 9D 52 E Invalid set MSM controls data date 228 | 9D 53 E Invalid MCD number 229 | 9D 54 E Reserved field error 230 | 9D 55 E Reserved field error 231 | 9D 56 E Reserved field error 232 | 9D 57 E Reserved field error 233 | 9D 60 E MAC verification failed 234 | 9D 61 E Maximum number of unblocks reached 235 | 9D 62 E Card was not blocked 236 | 9D 63 E Crypto functions not available 237 | 9D 64 E No application loaded 238 | 9E 00 PIN not installed 239 | 9E 04 PIN not succesfully verified, PIN not installed 240 | 9F 00 PIN blocked and Unblock Try Counter is 3 241 | 9F 04 PIN not succesfully verified, PIN blocked and Unblock Try Counter is 3 242 | 9F XX Command successfully executed; \xx\ bytes of data are available and can be requested using GET RESPONSE. 243 | 9x XX Application related status, (ISO 7816-3) -------------------------------------------------------------------------------- /sample_files/commands_log.txt: -------------------------------------------------------------------------------- 1 | 00 A6 00 00 00 2 | 00 A6 00 00 14 3 | 00 CA 7F 66 00 4 | 00 A4 08 04 02 00 01 5 | 00 C0 00 00 14 6 | 00 B0 00 00 08 7 | 00 A4 02 04 02 00 03 8 | 00 C0 00 00 14 9 | 00 B0 00 00 0F 10 | 00 CA 9F 7F 2D 11 | 00 A4 02 04 02 00 02 12 | 00 C0 00 00 15 13 | 00 B0 00 00 20 14 | 00 A4 02 04 02 2F 00 15 | 00 C0 00 00 14 16 | 00 B0 00 00 17 17 | 00 A4 00 0C 02 3F 00 18 | 00 A4 01 04 02 50 00 19 | 00 A4 00 04 02 50 00 20 | 00 C0 00 00 19 21 | 00 A4 02 04 02 50 06 22 | 00 C0 00 00 15 23 | 00 B0 00 00 CE 24 | 00 CA DF 30 0A 25 | 00 A4 02 04 02 50 01 26 | 00 C0 00 00 15 27 | 00 B0 00 00 00 28 | 00 B0 01 00 00 29 | 00 A4 02 04 02 50 02 30 | 00 C0 00 00 15 31 | 00 B0 00 00 00 32 | 00 A4 02 04 02 50 03 33 | 00 C0 00 00 15 34 | 00 B0 00 00 00 35 | 00 A4 02 04 02 50 05 36 | 00 C0 00 00 15 37 | 00 B0 00 00 00 38 | 00 CB 00 FF 05 A0 03 83 01 11 39 | 00 C0 00 00 1F 40 | 00 CB 00 FF 05 A0 03 83 01 81 41 | 00 C0 00 00 1D 42 | 00 CA DF 35 05 43 | 00 A4 08 04 04 50 00 50 34 44 | 00 C0 00 00 14 45 | 00 B0 00 00 00 46 | 00 B0 01 00 F4 47 | 00 20 00 11 0C 31 32 33 34 00 00 00 00 00 00 00 00 48 | 00 A4 02 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 49 | 00 20 00 11 00 50 | 00 22 41 B6 06 80 01 02 84 01 01 51 | 00 2A 90 A0 26 90 24 5C 78 86 C5 93 3B 3C 2B 50 E2 31 42 BB 3B 2B BA C3 04 B3 52 | 00 C0 00 00 24 53 | 00 2A 9E 9A 00 54 | 00 A6 00 00 00 55 | 00 A6 00 00 14 56 | 00 CA 7F 66 00 57 | 00 A4 08 04 02 00 01 58 | 00 C0 00 00 14 59 | 00 B0 00 00 08 60 | 00 A4 02 04 02 00 03 61 | 00 C0 00 00 14 62 | 00 B0 00 00 0F 63 | 00 CA 9F 7F 2D 64 | 00 A4 02 04 02 00 02 65 | 00 C0 00 00 15 66 | 00 B0 00 00 20 67 | 00 A4 02 04 02 2F 00 68 | 00 C0 00 00 14 69 | 00 B0 00 00 17 -------------------------------------------------------------------------------- /sample_files/custom_command_descriptions.txt: -------------------------------------------------------------------------------- 1 | GET ATTRIBUTE x 34 x 2 | GET ATTRIBUTE x 35 x 3 | GET CHALLENGE Request a random number from the smart card. 84 ISO/IEC 7816-4 4 | GET DATA (CA) Used to retrieve DO information CB 5 | GET DATA Read TLV-coded data objects. CA ISO/IEC 7816-4 6 | GET DATA x CB x 7 | GET NEXT DATA x CC x 8 | GET NEXT DATA x CD x -------------------------------------------------------------------------------- /sample_files/custom_response_descriptions.txt: -------------------------------------------------------------------------------- 1 | 90 00 I Command successfully executed (OK). -------------------------------------------------------------------------------- /sample_files/default_log.txt: -------------------------------------------------------------------------------- 1 | 00 A6 00 00 00 2 | 6C 14 3 | 00 A6 00 00 14 4 | 38 2A 02 4F 28 DE 25 3E A0 00 00 00 18 40 00 00 01 63 42 00 90 00 5 | 00 CA 7F 66 00 6 | 6A 86 7 | 00 A4 08 04 02 00 01 8 | 61 14 9 | 00 C0 00 00 14 10 | 62 12 81 02 00 08 82 01 01 83 02 00 01 8A 01 05 8C 02 01 00 90 00 11 | 00 B0 00 00 08 12 | 44 80 00 01 47 CC 10 73 90 00 13 | 00 A4 02 04 02 00 03 14 | 61 14 15 | 00 C0 00 00 14 16 | 62 12 81 02 00 0F 82 01 01 83 02 00 03 8A 01 05 8C 02 01 00 90 00 17 | 00 B0 00 00 0F 18 | 30 0D 06 08 2A 86 48 86 F7 0D 03 07 02 01 01 90 00 19 | 00 CA 9F 7F 2D 20 | 9F 7F 2A 40 90 71 64 12 91 21 72 03 00 50 75 D3 01 35 2E 23 C3 61 52 50 75 61 53 50 75 61 54 50 75 00 00 05 10 00 00 00 00 00 00 00 00 90 00 21 | 00 A4 02 04 02 00 02 22 | 61 15 23 | 00 C0 00 00 15 24 | 62 13 81 02 00 20 82 01 01 83 02 00 02 8A 01 05 8C 03 03 00 00 90 00 25 | 00 B0 00 00 20 26 | 18 0F 32 30 31 33 31 30 31 31 31 33 33 38 31 37 5A C0 06 01 00 00 00 00 00 00 00 00 00 00 00 00 90 00 27 | 00 A4 02 04 02 2F 00 28 | 61 14 29 | 00 C0 00 00 14 30 | 62 12 81 02 00 17 82 01 01 83 02 2F 00 8A 01 05 8C 02 01 00 90 00 31 | 00 B0 00 00 17 32 | 61 15 4F 0D E8 28 BD 08 0F 01 47 65 6D 20 50 31 35 51 04 3F 00 50 00 90 00 33 | 00 A4 00 0C 02 3F 00 34 | 90 00 35 | 00 A4 01 04 02 50 00 36 | 6A 86 37 | 00 A4 00 04 02 50 00 38 | 61 19 39 | 00 C0 00 00 19 40 | 62 17 83 02 50 00 8C 02 02 E5 84 0D E8 28 BD 08 0F 01 47 65 6D 20 50 31 35 90 00 41 | 00 A4 02 04 02 50 06 42 | 61 15 43 | 00 C0 00 00 15 44 | 62 13 81 02 00 CE 82 01 01 83 02 50 06 8A 01 05 8C 03 03 41 00 90 00 45 | 00 B0 00 00 CE 46 | 30 60 30 2C 0C 08 55 73 65 72 20 50 49 4E 03 02 06 C0 04 02 AD 81 30 18 30 06 03 02 05 20 05 00 30 06 03 02 06 40 05 00 30 06 03 02 03 08 05 00 30 04 04 02 AD 11 A1 2A 30 28 03 03 04 0C 10 0A 01 01 02 01 04 02 01 0C 02 01 08 80 01 11 04 01 00 18 0F 32 30 31 33 31 30 31 31 31 33 33 38 31 37 5A 30 4A 30 16 0C 06 53 4F 20 50 49 4E 03 02 07 80 30 08 30 06 03 02 05 20 05 00 30 04 04 02 AD 81 A1 2A 30 28 03 02 00 3F 0A 01 01 02 01 04 02 01 10 02 01 08 80 02 00 81 04 01 00 18 0F 32 30 31 33 31 30 31 31 31 33 33 38 31 37 5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 47 | 00 CA DF 30 0A 48 | DF 30 07 34 2E 30 2E 32 2E 4B 90 00 49 | 00 A4 02 04 02 50 01 50 | 61 15 51 | 00 C0 00 00 15 52 | 62 13 81 02 06 00 82 01 01 83 02 50 01 8A 01 05 8C 03 03 E5 00 90 00 53 | 00 B0 00 00 00 54 | 30 82 01 0B 30 81 A4 0C 6C 2A 2A 2A 54 45 53 54 20 4E 4F 4D 42 52 45 20 4E 4F 4D 42 52 45 20 2A 2A 2A 54 45 53 54 20 41 50 45 4C 4C 49 44 4F 20 41 50 45 4C 4C 49 44 4F 27 53 20 41 75 74 6F 72 69 64 61 64 20 43 65 72 74 69 66 69 63 61 64 6F 72 61 20 64 65 20 54 65 73 74 69 6E 67 20 4D 69 6E 69 73 74 65 72 69 6F 20 64 65 6C 20 49 6E 74 65 72 69 6F 72 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 56 04 14 91 5E 74 5A 76 A3 E5 4D 97 8A 02 81 E8 A0 70 B8 C1 5B E4 AB 03 02 02 74 03 02 04 B0 02 01 01 A1 33 02 01 02 02 01 03 02 01 04 02 01 05 02 01 06 02 01 01 02 01 07 02 01 08 02 01 09 02 01 0A 02 01 0B 02 01 0C 02 01 0D 02 01 0E 02 01 0F 02 01 10 90 00 55 | 00 B0 01 00 00 56 | 02 01 11 A1 0A 30 08 30 02 04 00 02 02 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 57 | 00 A4 02 04 02 50 02 58 | 61 15 59 | 00 C0 00 00 15 60 | 62 13 81 02 04 00 82 01 01 83 02 50 02 8A 01 05 8C 03 03 E5 00 90 00 61 | 00 B0 00 00 00 62 | 30 81 CF 30 81 9A 0C 6C 2A 2A 2A 54 45 53 54 20 4E 4F 4D 42 52 45 20 4E 4F 4D 42 52 45 20 2A 2A 2A 54 45 53 54 20 41 50 45 4C 4C 49 44 4F 20 41 50 45 4C 4C 49 44 4F 27 53 20 41 75 74 6F 72 69 64 61 64 20 43 65 72 74 69 66 69 63 61 64 6F 72 61 20 64 65 20 54 65 73 74 69 6E 67 20 4D 69 6E 69 73 74 65 72 69 6F 20 64 65 6C 20 49 6E 74 65 72 69 6F 72 03 02 06 40 04 02 AD 11 30 22 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 24 04 14 91 5E 74 5A 76 A3 E5 4D 97 8A 02 81 E8 A0 70 B8 C1 5B E4 AB 03 02 00 8B 01 01 00 03 02 06 40 02 01 01 A1 0A 30 08 30 02 04 00 02 02 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 63 | 00 A4 02 04 02 50 03 64 | 61 15 65 | 00 C0 00 00 15 66 | 62 13 81 02 02 D8 82 01 01 83 02 50 03 8A 01 05 8C 03 03 E5 00 90 00 67 | 00 B0 00 00 00 68 | 30 81 D5 30 81 B0 0C 6C 2A 2A 2A 54 45 53 54 20 4E 4F 4D 42 52 45 20 4E 4F 4D 42 52 45 20 2A 2A 2A 54 45 53 54 20 41 50 45 4C 4C 49 44 4F 20 41 50 45 4C 4C 49 44 4F 27 53 20 41 75 74 6F 72 69 64 61 64 20 43 65 72 74 69 66 69 63 61 64 6F 72 61 20 64 65 20 54 65 73 74 69 6E 67 20 4D 69 6E 69 73 74 65 72 69 6F 20 64 65 6C 20 49 6E 74 65 72 69 6F 72 03 02 06 40 30 3C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 18 03 02 04 10 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 16 04 14 91 5E 74 5A 76 A3 E5 4D 97 8A 02 81 E8 A0 70 B8 C1 5B E4 AB A1 08 30 06 30 04 04 02 B0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 69 | 00 A4 02 04 02 50 05 70 | 61 15 71 | 00 C0 00 00 15 72 | 62 13 81 02 04 9D 82 01 01 83 02 50 05 8A 01 05 8C 03 03 E5 00 90 00 73 | 00 B0 00 00 00 74 | 30 79 30 68 0C 24 63 63 39 61 32 31 33 34 2D 34 37 39 39 2D 35 30 65 66 2D 39 64 38 33 2D 62 61 64 61 64 33 39 31 38 38 31 36 03 02 06 40 30 3C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 18 03 02 04 10 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 05 0C 03 43 53 50 A1 06 30 04 04 02 B1 01 30 6A 30 59 0C 15 44 65 66 61 75 6C 74 20 4B 65 79 20 43 6F 6E 74 61 69 6E 65 72 03 02 06 40 30 3C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 18 03 02 04 10 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 05 0C 03 43 53 50 A1 06 30 04 04 02 B1 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 75 | 00 CB 00 FF 05 A0 03 83 01 11 76 | 61 1F 77 | 00 C0 00 00 1F 78 | A0 1D 83 01 11 8C 04 F0 00 00 00 DF 21 04 05 FF A5 01 DF 27 02 FF FF DF 28 01 0C DF 2F 01 01 90 00 79 | 00 CB 00 FF 05 A0 03 83 01 81 80 | 61 1D 81 | 00 C0 00 00 1D 82 | A0 1B 83 01 81 8C 02 90 00 DF 21 04 03 FF A5 00 DF 27 02 FF FF DF 28 01 10 DF 2F 01 01 90 00 83 | 00 CA DF 35 05 84 | DF 35 02 7F FF 90 00 85 | 00 A4 08 04 04 50 00 50 34 86 | 61 14 87 | 00 C0 00 00 14 88 | 62 12 81 02 01 F4 82 01 01 83 02 50 34 8A 01 05 8C 02 01 00 90 00 89 | 00 B0 00 00 00 90 | 30 81 88 30 36 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 42 04 00 03 02 02 74 03 02 04 B0 02 01 01 A1 33 02 01 02 02 01 03 02 01 04 02 01 05 02 01 06 02 01 01 02 01 07 02 01 08 02 01 09 02 01 0A 02 01 0B 02 01 0C 02 01 0D 02 01 0E 02 01 0F 02 01 10 02 01 11 A1 0A 30 08 30 02 04 00 02 02 08 00 30 81 88 30 36 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 42 04 00 03 02 02 74 03 02 04 B0 02 01 02 A1 33 02 01 02 02 01 03 02 01 04 02 01 05 02 01 06 02 01 01 02 01 07 02 01 08 02 01 09 02 01 0A 02 01 0B 02 01 0C 02 01 0D 02 01 90 00 91 | 00 B0 01 00 F4 92 | 0E 02 01 0F 02 01 10 02 01 11 A1 0A 30 08 30 02 04 00 02 02 08 00 A0 6D 30 36 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 22 04 00 03 03 07 20 80 03 02 04 B0 02 01 03 A1 12 02 01 12 02 01 13 02 01 14 02 01 15 02 01 16 02 01 17 A1 0F 30 0D 30 02 04 00 30 07 06 05 88 37 00 84 09 A0 6D 30 36 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 22 04 00 03 03 07 20 80 03 02 04 B0 02 01 04 A1 12 02 01 12 02 01 13 02 01 14 02 01 15 02 01 16 02 01 17 A1 0F 30 0D 30 02 04 00 30 07 06 05 88 37 00 84 09 90 00 93 | 00 20 00 11 0C 31 32 33 34 00 00 00 00 00 00 00 00 94 | 90 00 95 | 00 A4 02 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 96 | 67 00 97 | 00 20 00 11 00 98 | 90 00 99 | 00 22 41 B6 06 80 01 02 84 01 01 100 | 90 00 101 | 00 2A 90 A0 26 90 24 5C 78 86 C5 93 3B 3C 2B 50 E2 31 42 BB 3B 2B BA C3 04 B3 102 | 51 F6 F3 DC 9B A8 0D 18 CD F0 8C 7D 38 27 D5 1D 1A 61 24 103 | 00 C0 00 00 24 104 | 5C 78 86 C5 93 3B 3C 2B 50 E2 31 42 BB 3B 2B BA C3 04 B3 51 F6 F3 DC 9B A8 0D 18 CD F0 8C 7D 38 27 D5 1D 1A 90 00 105 | 00 2A 9E 9A 00 106 | 75 20 88 61 25 80 79 E6 FC D3 59 6F CE 9B 3E E0 E0 FE 71 BA 8A EA 02 5E 78 EE 26 1D 81 DE 98 46 19 0D C5 3F 80 6B 8A 5B 81 77 58 DC 9B 43 42 A7 C0 01 30 A0 B3 AD 83 42 73 E3 3C D3 CE B8 0C 8F EA 22 16 E2 8B 19 8A 2A 6C F8 95 6F A3 E5 7F 11 9C D7 15 3D C8 F4 8F AF 0B AB 0B C3 2F B5 38 36 4E B2 08 64 14 91 0A CC 42 60 DE 46 56 8F E6 D2 FC C1 EE 26 FC 56 A7 4D 3A 83 1B 92 25 77 8C AE EA 8A BC 4B 84 E3 81 89 EB CA 56 82 BC B0 36 4D AD 3D 79 9A 3A C6 2C F9 64 B1 31 F4 01 E5 C6 22 D5 D4 5D F4 27 DC 12 93 2A A6 06 C7 E1 DF 12 F2 31 23 F5 4C B1 15 D5 B9 39 78 27 A3 9E 02 41 D9 22 C5 4C 7B B4 CB 4F B5 A0 8F 99 84 51 E5 4A 6A 7B F4 6F A6 B7 B8 2A 67 69 16 28 15 81 15 7E 42 39 E9 CA 4D 54 F5 D6 8C E2 81 36 BA 5F CD DB 14 FB 0A 3F 28 7A 9A 97 D1 46 59 B9 FC F6 9F 26 ED 90 00 107 | 00 A6 00 00 00 108 | 6C 14 109 | 00 A6 00 00 14 110 | 38 2A 02 4F 28 DE 25 3E A0 00 00 00 18 40 00 00 01 63 42 00 90 00 111 | 00 CA 7F 66 00 112 | 6A 86 113 | 00 A4 08 04 02 00 01 114 | 61 14 115 | 00 C0 00 00 14 116 | 62 12 81 02 00 08 82 01 01 83 02 00 01 8A 01 05 8C 02 01 00 90 00 117 | 00 B0 00 00 08 118 | 44 80 00 01 47 CC 10 73 90 00 119 | 00 A4 02 04 02 00 03 120 | 61 14 121 | 00 C0 00 00 14 122 | 62 12 81 02 00 0F 82 01 01 83 02 00 03 8A 01 05 8C 02 01 00 90 00 123 | 00 B0 00 00 0F 124 | 30 0D 06 08 2A 86 48 86 F7 0D 03 07 02 01 01 90 00 125 | 00 CA 9F 7F 2D 126 | 9F 7F 2A 40 90 71 64 12 91 21 72 03 00 50 75 D3 01 35 2E 23 C3 61 52 50 75 61 53 50 75 61 54 50 75 00 00 05 10 00 00 00 00 00 00 00 00 90 00 127 | 00 A4 02 04 02 00 02 128 | 61 15 129 | 00 C0 00 00 15 130 | 62 13 81 02 00 20 82 01 01 83 02 00 02 8A 01 05 8C 03 03 00 00 90 00 131 | 00 B0 00 00 20 132 | 18 0F 32 30 31 33 31 30 31 31 31 33 33 38 31 37 5A C0 06 01 00 00 00 00 00 00 00 00 00 00 00 00 90 00 133 | 00 A4 02 04 02 2F 00 134 | 61 14 135 | 00 C0 00 00 14 136 | 62 12 81 02 00 17 82 01 01 83 02 2F 00 8A 01 05 8C 02 01 00 90 00 137 | 00 B0 00 00 17 138 | 61 15 4F 0D E8 28 BD 08 0F 01 47 65 6D 20 50 31 35 51 04 3F 00 50 00 90 00 -------------------------------------------------------------------------------- /sample_files/responses_log.txt: -------------------------------------------------------------------------------- 1 | 6C 14 2 | 38 2A 02 4F 28 DE 25 3E A0 00 00 00 18 40 00 00 01 63 42 00 90 00 3 | 6A 86 4 | 61 14 5 | 62 12 81 02 00 08 82 01 01 83 02 00 01 8A 01 05 8C 02 01 00 90 00 6 | 44 80 00 01 47 CC 10 73 90 00 7 | 61 14 8 | 62 12 81 02 00 0F 82 01 01 83 02 00 03 8A 01 05 8C 02 01 00 90 00 9 | 30 0D 06 08 2A 86 48 86 F7 0D 03 07 02 01 01 90 00 10 | 9F 7F 2A 40 90 71 64 12 91 21 72 03 00 50 75 D3 01 35 2E 23 C3 61 52 50 75 61 53 50 75 61 54 50 75 00 00 05 10 00 00 00 00 00 00 00 00 90 00 11 | 61 15 12 | 62 13 81 02 00 20 82 01 01 83 02 00 02 8A 01 05 8C 03 03 00 00 90 00 13 | 18 0F 32 30 31 33 31 30 31 31 31 33 33 38 31 37 5A C0 06 01 00 00 00 00 00 00 00 00 00 00 00 00 90 00 14 | 61 14 15 | 62 12 81 02 00 17 82 01 01 83 02 2F 00 8A 01 05 8C 02 01 00 90 00 16 | 61 15 4F 0D E8 28 BD 08 0F 01 47 65 6D 20 50 31 35 51 04 3F 00 50 00 90 00 17 | 90 00 18 | 6A 86 19 | 61 19 20 | 62 17 83 02 50 00 8C 02 02 E5 84 0D E8 28 BD 08 0F 01 47 65 6D 20 50 31 35 90 00 21 | 61 15 22 | 62 13 81 02 00 CE 82 01 01 83 02 50 06 8A 01 05 8C 03 03 41 00 90 00 23 | 30 60 30 2C 0C 08 55 73 65 72 20 50 49 4E 03 02 06 C0 04 02 AD 81 30 18 30 06 03 02 05 20 05 00 30 06 03 02 06 40 05 00 30 06 03 02 03 08 05 00 30 04 04 02 AD 11 A1 2A 30 28 03 03 04 0C 10 0A 01 01 02 01 04 02 01 0C 02 01 08 80 01 11 04 01 00 18 0F 32 30 31 33 31 30 31 31 31 33 33 38 31 37 5A 30 4A 30 16 0C 06 53 4F 20 50 49 4E 03 02 07 80 30 08 30 06 03 02 05 20 05 00 30 04 04 02 AD 81 A1 2A 30 28 03 02 00 3F 0A 01 01 02 01 04 02 01 10 02 01 08 80 02 00 81 04 01 00 18 0F 32 30 31 33 31 30 31 31 31 33 33 38 31 37 5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 24 | DF 30 07 34 2E 30 2E 32 2E 4B 90 00 25 | 61 15 26 | 62 13 81 02 06 00 82 01 01 83 02 50 01 8A 01 05 8C 03 03 E5 00 90 00 27 | 30 82 01 0B 30 81 A4 0C 6C 2A 2A 2A 54 45 53 54 20 4E 4F 4D 42 52 45 20 4E 4F 4D 42 52 45 20 2A 2A 2A 54 45 53 54 20 41 50 45 4C 4C 49 44 4F 20 41 50 45 4C 4C 49 44 4F 27 53 20 41 75 74 6F 72 69 64 61 64 20 43 65 72 74 69 66 69 63 61 64 6F 72 61 20 64 65 20 54 65 73 74 69 6E 67 20 4D 69 6E 69 73 74 65 72 69 6F 20 64 65 6C 20 49 6E 74 65 72 69 6F 72 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 56 04 14 91 5E 74 5A 76 A3 E5 4D 97 8A 02 81 E8 A0 70 B8 C1 5B E4 AB 03 02 02 74 03 02 04 B0 02 01 01 A1 33 02 01 02 02 01 03 02 01 04 02 01 05 02 01 06 02 01 01 02 01 07 02 01 08 02 01 09 02 01 0A 02 01 0B 02 01 0C 02 01 0D 02 01 0E 02 01 0F 02 01 10 90 00 28 | 02 01 11 A1 0A 30 08 30 02 04 00 02 02 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 29 | 61 15 30 | 62 13 81 02 04 00 82 01 01 83 02 50 02 8A 01 05 8C 03 03 E5 00 90 00 31 | 30 81 CF 30 81 9A 0C 6C 2A 2A 2A 54 45 53 54 20 4E 4F 4D 42 52 45 20 4E 4F 4D 42 52 45 20 2A 2A 2A 54 45 53 54 20 41 50 45 4C 4C 49 44 4F 20 41 50 45 4C 4C 49 44 4F 27 53 20 41 75 74 6F 72 69 64 61 64 20 43 65 72 74 69 66 69 63 61 64 6F 72 61 20 64 65 20 54 65 73 74 69 6E 67 20 4D 69 6E 69 73 74 65 72 69 6F 20 64 65 6C 20 49 6E 74 65 72 69 6F 72 03 02 06 40 04 02 AD 11 30 22 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 24 04 14 91 5E 74 5A 76 A3 E5 4D 97 8A 02 81 E8 A0 70 B8 C1 5B E4 AB 03 02 00 8B 01 01 00 03 02 06 40 02 01 01 A1 0A 30 08 30 02 04 00 02 02 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 32 | 61 15 33 | 62 13 81 02 02 D8 82 01 01 83 02 50 03 8A 01 05 8C 03 03 E5 00 90 00 34 | 30 81 D5 30 81 B0 0C 6C 2A 2A 2A 54 45 53 54 20 4E 4F 4D 42 52 45 20 4E 4F 4D 42 52 45 20 2A 2A 2A 54 45 53 54 20 41 50 45 4C 4C 49 44 4F 20 41 50 45 4C 4C 49 44 4F 27 53 20 41 75 74 6F 72 69 64 61 64 20 43 65 72 74 69 66 69 63 61 64 6F 72 61 20 64 65 20 54 65 73 74 69 6E 67 20 4D 69 6E 69 73 74 65 72 69 6F 20 64 65 6C 20 49 6E 74 65 72 69 6F 72 03 02 06 40 30 3C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 18 03 02 04 10 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 16 04 14 91 5E 74 5A 76 A3 E5 4D 97 8A 02 81 E8 A0 70 B8 C1 5B E4 AB A1 08 30 06 30 04 04 02 B0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 35 | 61 15 36 | 62 13 81 02 04 9D 82 01 01 83 02 50 05 8A 01 05 8C 03 03 E5 00 90 00 37 | 30 79 30 68 0C 24 63 63 39 61 32 31 33 34 2D 34 37 39 39 2D 35 30 65 66 2D 39 64 38 33 2D 62 61 64 61 64 33 39 31 38 38 31 36 03 02 06 40 30 3C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 18 03 02 04 10 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 05 0C 03 43 53 50 A1 06 30 04 04 02 B1 01 30 6A 30 59 0C 15 44 65 66 61 75 6C 74 20 4B 65 79 20 43 6F 6E 74 61 69 6E 65 72 03 02 06 40 30 3C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 18 03 02 04 10 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 05 0C 03 43 53 50 A1 06 30 04 04 02 B1 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 00 38 | 61 1F 39 | A0 1D 83 01 11 8C 04 F0 00 00 00 DF 21 04 05 FF A5 01 DF 27 02 FF FF DF 28 01 0C DF 2F 01 01 90 00 40 | 61 1D 41 | A0 1B 83 01 81 8C 02 90 00 DF 21 04 03 FF A5 00 DF 27 02 FF FF DF 28 01 10 DF 2F 01 01 90 00 42 | DF 35 02 7F FF 90 00 43 | 61 14 44 | 62 12 81 02 01 F4 82 01 01 83 02 50 34 8A 01 05 8C 02 01 00 90 00 45 | 30 81 88 30 36 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 42 04 00 03 02 02 74 03 02 04 B0 02 01 01 A1 33 02 01 02 02 01 03 02 01 04 02 01 05 02 01 06 02 01 01 02 01 07 02 01 08 02 01 09 02 01 0A 02 01 0B 02 01 0C 02 01 0D 02 01 0E 02 01 0F 02 01 10 02 01 11 A1 0A 30 08 30 02 04 00 02 02 08 00 30 81 88 30 36 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 42 04 00 03 02 02 74 03 02 04 B0 02 01 02 A1 33 02 01 02 02 01 03 02 01 04 02 01 05 02 01 06 02 01 01 02 01 07 02 01 08 02 01 09 02 01 0A 02 01 0B 02 01 0C 02 01 0D 02 01 90 00 46 | 0E 02 01 0F 02 01 10 02 01 11 A1 0A 30 08 30 02 04 00 02 02 08 00 A0 6D 30 36 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 22 04 00 03 03 07 20 80 03 02 04 B0 02 01 03 A1 12 02 01 12 02 01 13 02 01 14 02 01 15 02 01 16 02 01 17 A1 0F 30 0D 30 02 04 00 30 07 06 05 88 37 00 84 09 A0 6D 30 36 03 02 06 C0 04 02 AD 11 30 2C 30 06 03 02 07 80 05 00 30 18 03 02 06 40 A1 12 30 07 03 02 07 80 02 01 05 30 07 03 02 06 40 02 01 05 30 08 03 02 05 20 04 02 AD 11 30 22 04 00 03 03 07 20 80 03 02 04 B0 02 01 04 A1 12 02 01 12 02 01 13 02 01 14 02 01 15 02 01 16 02 01 17 A1 0F 30 0D 30 02 04 00 30 07 06 05 88 37 00 84 09 90 00 47 | 90 00 48 | 67 00 49 | 90 00 50 | 90 00 51 | 51 F6 F3 DC 9B A8 0D 18 CD F0 8C 7D 38 27 D5 1D 1A 61 24 52 | 5C 78 86 C5 93 3B 3C 2B 50 E2 31 42 BB 3B 2B BA C3 04 B3 51 F6 F3 DC 9B A8 0D 18 CD F0 8C 7D 38 27 D5 1D 1A 90 00 53 | 75 20 88 61 25 80 79 E6 FC D3 59 6F CE 9B 3E E0 E0 FE 71 BA 8A EA 02 5E 78 EE 26 1D 81 DE 98 46 19 0D C5 3F 80 6B 8A 5B 81 77 58 DC 9B 43 42 A7 C0 01 30 A0 B3 AD 83 42 73 E3 3C D3 CE B8 0C 8F EA 22 16 E2 8B 19 8A 2A 6C F8 95 6F A3 E5 7F 11 9C D7 15 3D C8 F4 8F AF 0B AB 0B C3 2F B5 38 36 4E B2 08 64 14 91 0A CC 42 60 DE 46 56 8F E6 D2 FC C1 EE 26 FC 56 A7 4D 3A 83 1B 92 25 77 8C AE EA 8A BC 4B 84 E3 81 89 EB CA 56 82 BC B0 36 4D AD 3D 79 9A 3A C6 2C F9 64 B1 31 F4 01 E5 C6 22 D5 D4 5D F4 27 DC 12 93 2A A6 06 C7 E1 DF 12 F2 31 23 F5 4C B1 15 D5 B9 39 78 27 A3 9E 02 41 D9 22 C5 4C 7B B4 CB 4F B5 A0 8F 99 84 51 E5 4A 6A 7B F4 6F A6 B7 B8 2A 67 69 16 28 15 81 15 7E 42 39 E9 CA 4D 54 F5 D6 8C E2 81 36 BA 5F CD DB 14 FB 0A 3F 28 7A 9A 97 D1 46 59 B9 FC F6 9F 26 ED 90 00 54 | 6C 14 55 | 38 2A 02 4F 28 DE 25 3E A0 00 00 00 18 40 00 00 01 63 42 00 90 00 56 | 6A 86 57 | 61 14 58 | 62 12 81 02 00 08 82 01 01 83 02 00 01 8A 01 05 8C 02 01 00 90 00 59 | 44 80 00 01 47 CC 10 73 90 00 60 | 61 14 61 | 62 12 81 02 00 0F 82 01 01 83 02 00 03 8A 01 05 8C 02 01 00 90 00 62 | 30 0D 06 08 2A 86 48 86 F7 0D 03 07 02 01 01 90 00 63 | 9F 7F 2A 40 90 71 64 12 91 21 72 03 00 50 75 D3 01 35 2E 23 C3 61 52 50 75 61 53 50 75 61 54 50 75 00 00 05 10 00 00 00 00 00 00 00 00 90 00 64 | 61 15 65 | 62 13 81 02 00 20 82 01 01 83 02 00 02 8A 01 05 8C 03 03 00 00 90 00 66 | 18 0F 32 30 31 33 31 30 31 31 31 33 33 38 31 37 5A C0 06 01 00 00 00 00 00 00 00 00 00 00 00 00 90 00 67 | 61 14 68 | 62 12 81 02 00 17 82 01 01 83 02 2F 00 8A 01 05 8C 02 01 00 90 00 69 | 61 15 4F 0D E8 28 BD 08 0F 01 47 65 6D 20 50 31 35 51 04 3F 00 50 00 90 00 70 | --------------------------------------------------------------------------------