Skip to content

Instantly share code, notes, and snippets.

@zhuowei
Created February 17, 2026 04:15
Show Gist options
  • Select an option

  • Save zhuowei/fe8e0d4d28fc4be07b2c5787b8620704 to your computer and use it in GitHub Desktop.

Select an option

Save zhuowei/fe8e0d4d28fc4be07b2c5787b8620704 to your computer and use it in GitHub Desktop.
from cryptography.hazmat.primitives.asymmetric import ec, utils
from cryptography.hazmat.primitives import hashes
# validating Meta Ray-Ban's communication protocol's EnableTrust message
"""
logcat:
10-31 01:31:36.281 16311 17245 I BleConnection-Hypernova: Started enable trust process
10-31 01:31:36.284 16311 17245 I connectivity::Identity: ----------------------------------------------
10-31 01:31:36.284 16311 17245 I connectivity::Identity: Enable Trust
10-31 01:31:36.284 16311 17245 I connectivity::Identity: TX Challenge: 2f5fb6cb724147ace0053f4038658dba03e80d76b00fbf934335d5f8614e7c25
10-31 01:31:36.284 16311 17245 I connectivity::Identity: RX Challenge: 503a52801474ecd5180e57909ffff563cea717c8c97040291136cde2f835cec0
10-31 01:31:36.294 16311 17245 I connectivity::Identity: ----------------------------------------------
10-31 01:31:36.294 16311 17245 I connectivity::Identity: Sending TX Trust
10-31 01:31:36.294 16311 17245 I connectivity::Identity: App Identifier: 28ab73bfa5a5ab9fd6d1d5609f0005c3eb305f1f0d38dcf1505643cc21f926d4
10-31 01:31:36.294 16311 17245 I connectivity::Identity: App Signature: 8f2631baaa7a902d2a612d62c7943d9b77f238c48e831dbc49270554685c674c6d336a0cb144d7765205d814c64bdc9eb93845d0df55cce15a504e9c7c12de77
"""
"""
Frida dump:
airshield::SHA256::Incremental::update: 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
6fcc4b5e10 81 a2 5f bd b7 1d 55 13 39 0d 22 19 a0 90 b2 d4 .._...U.9.".....
6fcc4b5e20 bf 0e c1 93 f5 59 38 67 5b 64 94 0a 28 7d 12 97 .....Y8g[d..(}..
6fcc4b5e30 5d 63 91 b5 93 96 c6 f7 08 c4 a1 bb 7c 37 9d 66 ]c..........|7.f
6fcc4b5e40 3d 56 c7 83 a5 28 b9 e1 59 96 dd 84 fb f1 c1 dd =V...(..Y.......
mbedtls_sha256_finish 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
6e1575a288 28 ab 73 bf a5 a5 ab 9f d6 d1 d5 60 9f 00 05 c3 (.s........`....
6e1575a298 eb 30 5f 1f 0d 38 dc f1 50 56 43 cc 21 f9 26 d4 .0_..8..PVC.!.&.
"""
public_key_hex = """
81 a2 5f bd b7 1d 55 13 39 0d 22 19 a0 90 b2 d4
bf 0e c1 93 f5 59 38 67 5b 64 94 0a 28 7d 12 97
5d 63 91 b5 93 96 c6 f7 08 c4 a1 bb 7c 37 9d 66
3d 56 c7 83 a5 28 b9 e1 59 96 dd 84 fb f1 c1 dd
"""
signature_hex = "8f2631baaa7a902d2a612d62c7943d9b77f238c48e831dbc49270554685c674c6d336a0cb144d7765205d814c64bdc9eb93845d0df55cce15a504e9c7c12de77"
#signed_data_hex = "503a52801474ecd5180e57909ffff563cea717c8c97040291136cde2f835cec0"
signed_data_hex = "2f5fb6cb724147ace0053f4038658dba03e80d76b00fbf934335d5f8614e7c25"
signature = bytes.fromhex(signature_hex)
signed_data = bytes.fromhex(signed_data_hex)
signature_r = int.from_bytes(signature[0:32], "big")
signature_s = int.from_bytes(signature[32:64], "big")
signature_dss = utils.encode_dss_signature(signature_r, signature_s)
public_key = bytes.fromhex(public_key_hex)
peer_public_key = ec.EllipticCurvePublicKey.from_encoded_point(
curve=ec.SECP256R1(),
data=bytes([0x04]) +
public_key)
peer_public_key.verify(signature_dss, signed_data, ec.ECDSA(utils.Prehashed(hashes.SHA256())))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment