首页 > 解决方案 > 使用 osmo-sim-auth Python 脚本进行 SIM/USIM 身份验证

问题描述

我会尝试使用基于 PC 的 SIM 卡读卡器使用以下 Python 脚本重现 USIM 身份验证过程(不是我必须使用这个,但我没有找到另一个):https ://osmocom.org/projects/ osmo-sim-auth

我的 SIM 卡读卡器正常工作并被检测到:

$ pcsc_scan 
PC/SC device scanner
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: Gemalto Prox Dual USB PC Link Reader [Prox-DU Contactless_13101538] 00 00
1: Gemalto Prox Dual USB PC Link Reader [Prox-DU Contact_13101538] 01 00

Thu Oct 18 08:51:09 2018
Reader 0: Gemalto Prox Dual USB PC Link Reader [Prox-DU Contactless_13101538] 00 00
Card state: Card removed, 
Reader 1: Gemalto Prox Dual USB PC Link Reader [Prox-DU Contact_13101538] 01 00
Card state: Card inserted, 
ATR: 3B 9F 96 80 3F C6 A0 80 31 E0 73 F6 21 16 57 4A 4D 02 0B 34 54 63 69

ATR: 3B 9F 96 80 3F C6 A0 80 31 E0 73 F6 21 16 57 4A 4D 02 0B 34 54 63 69
+ TS = 3B --> Direct Convention
...

pcscd 服务正在运行:

systemctl status pcscd
● pcscd.service - PC/SC Smart Card Daemon
Loaded: loaded (/lib/systemd/system/pcscd.service; indirect; v
Active: active (running) since Thu 2018-10-18 08:57:02 CEST; 1
    Docs: man:pcscd(8)
Main PID: 23039 (pcscd)
    Tasks: 6 (limit: 4915)
CGroup: /system.slice/pcscd.service
        └─23039 /usr/sbin/pcscd --foreground --auto-exit

但是,然后我运行osmo-sim-auth.py脚本,出现以下错误:

./osmo-sim-auth.py -r 00000000000000000000000000000000 -s
Testing SIM card with IMSI None

GSM Authentication
Traceback (most recent call last):
File "./osmo-sim-auth.py", line 125, in <module>
    handle_sim(options, rand_bin)
File "./osmo-sim-auth.py", line 75, in handle_sim
    print "SRES:\t%s" % b2a_hex(byteToString(ret[0]))
TypeError: 'NoneType' object has no attribute '__getitem__'

知道我做错了什么吗?

标签: python

解决方案


如果没有在 GSM 的 AUC/HLR 中生成的 RAND 值,则无法读取您尝试的信息。GSM 网络使用质询-响应机制对 SIM 卡进行身份验证。

  • 一旦需要认证,AUC/HLR 会向 MSC/VLR 提供 128 位 RAND(随机数)、Kc 和 SRES 值。
  • RAND 被加密发送到 SIM 卡。
  • SIM 使用 A3、A8 算法、GSM SIM 认证密钥 (Ki) 和 RAND 值计算 SRES 和 Kc
  • SRES 源自 A3 (RAND, Ki)。Kc 源自 A8 (RAND, Ki)。
  • Ki 是 SIM 供应商分配的 A3 和 A8 版本的 Authentication key。
  • SIM 将 SRES 发送到 MSC/VLR
  • 如果两个 SRES 值匹配,则完成身份验证。

GSM 需要 RAND 值,UMTS、Ki、A3 和 A8 算法类型需要 RAND/AUTN 值。


推荐阅读