第二届CCF汽车安全攻防

一打开题目傻眼了,没有Web题,我来干啥,睡觉么...勉强做个密码题吧

Digital Key UWB | SOLVED | pig8086

meta 数据表中,找到加密基本信息

public_key_curve        secp256r1
public_key_x        16aaeee15966846319a785c529d07407aa05287b1d1a0581d7ab23edcf9a0e41
public_key_y        26ce7aa4f29c0448e4220b287da05f195549d54f59e290b98b5fa3036733762c

auth_signatures 表,找到

digest_hex        r_hex        s_hex
d11ef13079938077b29ad9ce9f8c8a6963bb75a5aba1f738a228c7a7dc48f2e7        67d6db4e0744fe60746c510d6938e64f4a893e64e06b90c2030d1b981ec17d5e        610a011f7503af143a99eef6a90668cd2572872ae6c5644b9d7edda3cb3d989e
ebb1a7e2ce5351ca8bc71464cce8679034d4b22e86c65e5d507d20b75c6c6ac8        67d6db4e0744fe60746c510d6938e64f4a893e64e06b90c2030d1b981ec17d5e        d0b34225e983269a67d787ee754c3ecf1f79c62af4e5ee3c1b971584c131d3b1
from Crypto.Util.number import bytes_to_long
n=0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551
z1=int("d11ef13079938077b29ad9ce9f8c8a6963bb75a5aba1f738a228c7a7dc48f2e7",16)%n
z2=int("ebb1a7e2ce5351ca8bc71464cce8679034d4b22e86c65e5d507d20b75c6c6ac8",16)%n
r=int("67d6db4e0744fe60746c510d6938e64f4a893e64e06b90c2030d1b981ec17d5e",16)%n
s1=int("610a011f7503af143a99eef6a90668cd2572872ae6c5644b9d7edda3cb3d989e",16)
s2=int("d0b34225e983269a67d787ee754c3ecf1f79c62af4e5ee3c1b971584c131d3b1",16)
pub_x=int("16aaeee15966846319a785c529d07407aa05287b1d1a0581d7ab23edcf9a0e41",16)
pub_y=int("26ce7aa4f29c0448e4220b287da05f195549d54f59e290b98b5fa3036733762c",16)
ds=(s1-s2)%n
dz=(z1-z2)%n
k=(dz*pow(ds,-1,n))%n
dr=(s1*k-z1)%n
private=(dr*pow(r,-1,n))%n
print(hex(private))

从 protected_vehicle_blob 表中找到提示,这个第二部分采用 SM4 加密,其中的 Key 需要第一部分得到的私钥进一步处理:sha256(recovered_ecdsa_private_key_32bytes_big_endian)[:16]

我们将第一部分得到的结果 a71e2c5a98b4214e76f209a1d65e9f34b80d22e4028e624f8be2bfa223934f19

from Crypto.Util.number import bytes_to_long
import hashlib
private_key_bytes=bytes.fromhex("a71e2c5a98b4214e76f209a1d65e9f34b80d22e4028e624f8be2bfa223934f19")
sha256_hash=hashlib.sha256(private_key_bytes).digest()
result=sha256_hash[:16]
print(result.hex())

得到 e038de51cc70112dc55ed0d2bd01cd42,结合 iv_hex 20260729000102030405060708090a0b 在厨房中解密

得到最终结果

{"vehicle":"LFPH0DK202600004","permission":"digital_key_forensics_result","flag":"flag{digital_key_uwb_nonce_reuse}"}

本页的评论功能已关闭