14-SIM数据交互之-PIN

22 篇文章 ¥99.90 ¥299.90

在《AT命令交互之-PIN码》里面写到用AT命令的方式就行输入修改PIN码,这边将对用过直接的APDU交互方式进行PIN码的操作进行说明。

PIN码操作
COMMAND含义
VERIFY CHV‘20’验证PIN码
CHANGE CHV‘24’修改PIN码
DISABLE CHV‘26’关闭PIN码验证
ENABLE CHV‘28’打开PIN码验证
1、VERIFY CHV 验证PIN码
命令CLAINSP1P2P3
VERIFY CHV002000CHV NO.08
=>00 20 00 01 08
<=20
=>31 32 33 34 FF FF FF FF  //默认PIN码1234
<=90 00

(相当于AT命令中的:AT+CPIN=1234)

查询PIN码可输入次数

=>00 20 00 01 08
<=63 C3  //最后一个数据3代表PIN码还剩余3次可输入

如果输入一次错误的PIN码则会减一,如下:

=>00 20 00 01 08
<=63 C3        //剩余3次
=>00 20 00 01 08
<=20
=>32 32 33 34 FF FF FF FF  //PIN码输入错误2234
<=63 C2       //剩余2次
=>00 20 00 01 08
<=63 C2       //剩余2次

如果在未开启PIN码验证功能时,却输入该指令会怎样

=>00 20 00 01 08
<=20
=>31 32 33 34 FF FF FF FF
<=69 84  //引用的数据失效
2、CHANGE CHV 修改PIN码
命令CLAINSP1P2P3
CHANGE CHV002400CHV NO.10
=>00 24 00 01 10
<=24
=>31 32 33 34 FF FF FF FF 34 33 32 31 FF FF FF FF //默认PIN码1234,修改成4321
<=9000 //引用的数据失效

如果输入错误,PIN码次数也会减一

=>00 20 00 01 08
<=63 C3        //剩余3次
=>00 24 00 01 10
<=24
=>31 32 33 34 FF FF FF FF 34 33 32 31 FF FF FF FF //上面修改一次后PIN码已经变成4321了,此时再用1234去修改PIN则会出错
<=63 C2       //剩余2次
=>00 20 00 01 08
<=63 C2       //剩余2次

(相当于AT命令中的:AT+CPWD=“SC”,“1234”,“4321”)

3、DISABLE CHV 关闭PIN码验证
命令CLAINSP1P2P3
DISABLE CHV0026000108
=>00 26 00 01 08
<=26
=>31 32 33 34 FF FF FF FF //使用PIN码1234关闭PIN码验证
<=9000

(相当于AT命令中的:AT+CLCK=“SC”,0,“1234”)

4、ENABLE CHV 打开PIN码验证
命令CLAINSP1P2P3
ENABLE CHV0028000108
=>00 28 00 01 08
<=28
=>31 32 33 34 FF FF FF FF //使用PIN码1234打开PIN码验证
<=9000

(相当于AT命令中的:AT+CLCK=“SC”,1,“1234”)

5、PIN状态查询

在AT命令里面,还有一条指令AT+CLCK="SC",2用来判断PIN码功能是否已经开启,那我们用APDU数据怎么判断PIN码功能是否开启呢

我们在《SIM数据交互之-FCP》里面有讲到MF,DF,或者ADF的FCP,里面有一个字段,(PIN状态模板DO)C6,里面的PS_DO字节就可以判断是否开启了PIN码验证功能。

未开启PIN码验证功能时3F00对应的FCP的内容:

=>80 F2 00 00 00
<=6C 2B
=>80 F2 00 00 2B
<=F2 62278202782183023F00A507800171C00200018A01058B032F0602C60C90016083010183018183010A 9000

相当于AT命令中的:

AT+CLCK=\"SC\",2
AT+CLCK="SC",2
+CLCK: 0

OK

开启PIN码验证功能时3F00对应的FCP的内容:

=>80 F2 00 00 00
<=6C 2B
=>80 F2 00 00 2B
<=F2 62278202782183023F00A507800171C00200018A01058B032F0602C60C9001E083010183018183010A 9000

相当于AT命令中的:

AT+CLCK=\"SC\",2
AT+CLCK="SC",2
+CLCK: 1

OK

对比上面的两个数据可以发现当PIN码验证功能开启时,PS_DO字节的最高位会被置1

当我们分别在开启和没开启PIN码验证功能时,分别去读ADF的FCP或其他DF的FCP,都可以发现PS_DO字节的最高位会变化

所以要先判断是否开启了PIN码验证功能,只需要找到随便一个MF/DF/ADF的FCP对应的PS_DO字节最高位即可知道。

参考文献:3GPP,ISO7816,百度百科等

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Creator_Ly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值