clear
reset
maclength = 8
auto_response on
data[ 450 ] = 00 // 明文
call run_jcop_extauth
message "成功!完全成功!!!!"
end
run_jcop_extauth:
// 输入条件
// data[ 450 ]是认证级别
maclength = 8
data[ 451 ] = 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
//data[ 452 ] = 1122334455667788 //主机随机数
data[ 452 ] = random( 8 )
80 50 00 00 ( $data[ 452 ] )
if sw != 9000
?
message "外部认证错误"
pause
endif
set resp
data[ 453 ] = mid( $resp, 0, 10 ) //Key diversification data
data[ 454 ] = mid( $resp, 10, 2 ) //Key information
data[ 455 ] = mid( $resp, 12, 2 ) //Sequence counter
data[ 456 ] = mid( $resp, 14, 6 ) //Card challenge
data[ 457 ] = mid( $resp, 20, 8 ) //Card cryptogram
message "Key diversification data " $data[ 453 ]
message "Key information " $data[ 454 ]
message "Sequence counter " $data[ 455 ]
message "Card challenge " $data[ 456 ]
message "Card cryptogram " $data[ 457 ]
message "S-ENC = 2 byte constant + 2 byte sequence counter + 12 byte 00"
data[ 460 ] = 01 82 $data[ 455 ] 00000000 00000000 00000000
message "S-ENC " $data[ 460 ]
message "C-MAC = 2 byte constant + 2 byte sequence counter + 12 byte 00"
data[ 461 ] = 01 01 $data[ 455 ] 00000000 00000000 00000000
message "C-MAC " $data[ 461 ]
message "C-DEK = 2 byte constant + 2 byte sequence counter + 12 byte 00"
data[ 462 ] = 01 81 $data[ 455 ] 00000000 00000000 00000000
message "C-DEK " $data[ 462 ]
data[ 463 ] = 3des_encode_cbc( 0000000000000000, $data[ 460 ], $data[ 451 ] )
message "session key " $data[ 463 ]
data[ 464 ] = 3des_encode_cbc( 0000000000000000, $data[ 461 ], $data[ 451 ] )
message "c-mac key " $data[ 464 ]
data[ 465 ] = 3des_encode_cbc( 0000000000000000, $data[ 462 ], $data[ 451 ] )
message "dek " $data[ 465 ]
message "Host Authenticate Cryptogram = sequence counter(2Byte) + card challenge(6) + host challenge(8) +80000000 00000000"
data[ 470 ] = $data[ 455 ] $data[ 456 ] $data[ 452 ] 80000000 00000000
message "host authenticate cryptogram " $data[ 470 ]
data[ 471 ] = 3des_encode_cbc( 00000000, $data[ 470 ], $data[ 463 ] )
message $data[ 471 ]
data[ 472 ] = mid( $data[ 471 ], 16, 8 )
message "外部认证的数据域为 " $data[ 472 ]
message "组成外部认证指令"
data[ 473 ] = 84 82 00 $data[ 450 ] < $data[ 472 ] >
data[ 474 ] = fixed80( $data[ 473 ] )
message "外部认证的指令为 " $data[ 473 ]
data[ 475 ] = des_3des_mac( 0000000000000000, $data[ 474 ], $data[ 464 ] )
message "外部认证的mac为 " $data[ 475 ]
message "外部认证最终指令为 " $data[ 473 ] $data[ 475 ]
sendtext $data[ 473 ] $data[ 475 ]
if sw != 9000
?
message "外部认证错误"
pause
endif
return