Ce post est une première analyse des AirPods d’Apple.
AirPods
Les AirPods sont les écouteurs sans fil conçus par Apple. Ils ont été introduit avec l’iPhone 7, premier iPhone à ne plus fournir la prise mini-jack 3,5mm
Actuellement, il y a 3 générations différentes de AirPods : 1, 2 et Pro. Ce post sera dédié à la version Pro, car c’est la génération la plus récente. Mais il y aura quelques comparaisons avec les autres versions.
Hardware
Comme pour chaque appareil Apple, iFixit fourni une vue éclatée et détaillée des AirPods.
La carte mère des AirPods Pro contient quatre puces réparties sur le recto et le verso :
- L476MGY6 A5 : ARM STM32L476MGY6 (Cortex M4).
- Broadcom 59356A2KUBG : le module de chargement sans fil
- TI 97A4PQ1
- NXP 610A3B KN3308 : la puce de gestion de l’alimentation.
La fiche technique du processeur est accessible publiquement.
UART
Avec un câble Lightning DCSD, il est possible d’obtenir une sortie série sur la boite des AirPods 1 et 2. Avec un baudrate à 230400.
En regardant dans le firmware de la case, dont on parlera plus bas, on peut identifier certaines commandes. Comme les informations sur la batterie, les écouteurs et la case.
Dennis m’a fait remarquer que pour envoyer les commandes, il était nécessaire de les mettre entre crochets.
On remarquera que la commande [sr]
nous affiche quelques informations sur la boite, notamment l’identifiant de la carte mère : B235 . De plus on voit qu’il y a un firmware de type EVT (Engineering Validation Test). Normalement cela correspond aux prototypes d’usine avant la mise en production.
Il y a un mode DFU (Device Firmware Upgrade) qui permet de mettre à jour le firmware des AirPods et de la boite.
Firmware
Contrairement à l’iPhone et à l’iPad, les firmwares des accessoires Apple ne sont pas directement accessibles sur le site d’Apple. Néanmoins, ils sont référencés sur The iPhone Wiki, dans la section OTA Updates.
Les fichiers de mise à jour OTA sont des fichiers ZIP, la structure des dossiers sera la généralement la même.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
├── AppleInternal
│ └── Assets
├── AssetData
│ └── Firmware.acsw
│ ├── amai
│ │ ├── apimg4ticket.der
│ │ └── receipt.plist
│ ├── BuildManifest.plist
│ ├── ftab.bin
│ ├── Info.plist
│ ├── Restore.plist
│ ├── usr
│ │ └── local
│ │ └── standalone
│ │ └── firmware
│ └── version.plist
├── Info.plist
├── META-INF
│ └── com.apple.ZipMetadata.plist
└── version.plist
Ce qui nous intéresse est dans le répertoire AssetData
. Il contient le binaire et les fichiers plist
permettant la mise à jour de l’appareil.
apimg4ticket.der
Dans le répertoire AssetData/Firmware.acsw/amai
on peut voir le fichier apimg4ticket.der
, c’est un fichier fichier de certificat encodé au format DER. On peut le parcourir avec openssl
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
λ ~ » openssl asn1parse -inform der -in apimg4ticket.der
0:d=0 hl=4 l=3002 cons: SEQUENCE
4:d=1 hl=2 l= 4 prim: IA5STRING :IM4M
10:d=1 hl=2 l= 1 prim: INTEGER :00
13:d=1 hl=4 l=1166 cons: SET
17:d=2 hl=9 l=1157 cons: priv [ 1296125506 ]
..
1617:d=6 hl=2 l= 37 cons: SEQUENCE
1619:d=7 hl=2 l= 3 prim: OBJECT :commonName
1624:d=7 hl=2 l= 30 prim: UTF8STRING :Apple Secure Boot Root CA - G3
1656:d=5 hl=2 l= 19 cons: SET
1658:d=6 hl=2 l= 17 cons: SEQUENCE
1660:d=7 hl=2 l= 3 prim: OBJECT :organizationName
1665:d=7 hl=2 l= 10 prim: UTF8STRING :Apple Inc.
1677:d=5 hl=2 l= 11 cons: SET
..
2319:d=6 hl=2 l= 14 cons: SEQUENCE
2321:d=7 hl=2 l= 3 prim: OBJECT :X509v3 Key Usage
2326:d=7 hl=2 l= 1 prim: BOOLEAN :255
2329:d=7 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:03020780
2335:d=6 hl=4 l= 263 cons: SEQUENCE
2339:d=7 hl=2 l= 10 prim: OBJECT :1.2.840.113635.100.6.1.15
ftab.bin
Le fichier ftab.bin
est un fichier binaire pour architecture ARMv7e . La première chose que j’ai faite était de lancer binwalk
pour analyser le fichier. Malheureusement ça n’a rien donné de concret.
En l’ouvrant dans un éditeur hexadécimal, on peut voir que ce binaire, contient plusieurs images. L’image ci-dessous correspond à l’index avec le nom, l’adresse et la taille chaque image.
On peut récupérer les informations suivantes:
- en rouge l’offset qui contient le début de l’image
- en vert, la taille de l’image.
Tout ceci avec un encodage little endian.
Avec l’utilitaire dd
on peut extraire l’image en précisant les adresses en décimal:
1
2
3
4
λ ~ » dd if=ftab.bin of=rkos skip=768 count=947680 bs=1
947680+0 records in
947680+0 records out
947680 bytes (948 kB, 925 KiB) copied, 1.36564 s, 694 kB/s
Ca fonctionne bien si on veut extraire une seule partie du fichier. Mais j’ai compté 45 images embarquées ainsi qu’un certificat encodé au format DER. Un script python sera plus rapide pour les extraire.
Après les avoir extrait, voici la liste des fichiers et leur type :
La plupart sont des fichiers de données raw. J’ai pu en identifier certains :
rkos
RTKit Operating System, utilisé comme base sur certains cores de l’iPhone 11 Pro. Il est probablement chargé par la BootROM du SoC.aopf
Always-On Processor Firmware.case
firmware du boitier des AirPods.ls00
àls09
des fichiers au formatwave
. Ils correspondent aux sons qu’émettent les AirPods, par exemple lorsqu’on les met à l’oreille, qu’on active Siri, ou encore lorsqu’ils n’ont plus de batterie.lpda
contient les hashes (sha384) des fichiers qui commencent parL
(LahX, LanX, LaoX, etc…).bver
contient des informations sur la version du firmware ftab.bin.ticket
certificat DER.
Je pense les fichiers LahX, LanX, LaoX, etc… d’être des images qui sont affichées lorsque des AirPods sont à proximité, car je n’ai pas trouvé ces fichiers sur l’iPhone.
Donc voila ! C’était une première analyse sur la partie bas niveau des AirPods, il y a énormément d’autres sujets à aborder sur ce produit, notamment comment communiquer directement avec les écouteurs. Ainsi que la fonction de “pairing” grâce au Magic Pairing Manager et sa technologie de Proximity Pairing.
Je vous invite aussi à lire cet article sur le fiasco des mises à jour des AirPods Pro. C’est ça qui m’a donné envie de jeter un œil au produit.
Merci à tous ceux qui ont répondu à mon tweet pour apporter un maximum d’informations sur ce produit encore mystérieux.
Sources :