Jailbreaker une borne AirPort en SSH pour changer de région

Il y a de nombreuses années (2015), j’avais parlé des bornes AirPort qui font tourner NetBSD. A l’époque, il fallait souder un connecteur pour accéder à l’OS. Mais depuis, il est possible d’accéer à l’OS en SSH assez facilement et faire de petits changements, comme modifier la région.

D’abord, pourquoi changer la région ? Pour un truc très bête : j’ai acheté il y a quelques années une borne AirPort Extrême pour étendre mon réseau et je me suis retrouvé avec une variante asiatique pour un prix assez faible. En effet, Apple segmente selon les pays et une borne asiatique n’a pas les mêmes pays proposés qu’une borne européenne et il n’est pas possible de changer facilement la région. Le problème, c’est que les lois dans les différents pays ne sont pas exactement les mêmes et que les fréquences 5 GHz prises en charge varient. A l’époque, j’avais donc dû vérifier les fréquences de chaque pays disponibles dans l’interface pour trouver une bande accessible en France et la forcer. Sans ça, certains appareils ne se connectaient pas en 5 GHz sur la borne, ce qui n’est pas très pratique.

Maintenant, comment accéder à la borne en SSH ? C’est expliqué sur ce site et pour la petite histoire, l’auteur a trouvé une vulnérabilité dans les bornes grâce à ça.

Je dois avouer que j’ai bloqué sur un truc : tant l’installation d’acp que celles d’AirPyrt (comme expliqué là) ne fonctionnaient pas sur mon Mac mini 2018 sous Sonoma, à cause de changements dans Python. La solution dans mon cas a été de sortir une machine sous Big Sur (une machine virtuelle doit marcher) pour les quelques commandes nécessaires. Avant de commencer, vous aurez besoin de l’IP de la borne et du mot de passe (celui employé pour configurer la borne dans Utilitaires AirPort).

Il y a probablement plus simple, mais voici ma méthode, depuis ma machine sous Big Sur. D’abord, il faut installer NodeJS depuis le site officiel. Dans le terminal, donc, il faut taper ceci. La version de npm va probablement dépendre de quand vous allez taper la commande.

sudo npm install -g npm@10.2.1
sudo npm install --global node-acp

Une fois que c’est fait, la commande suivante va activer le SSH et la dernière va redémarrer la borne.

acp --host IP_de_la_borne --password mot_de_passe_de_la_borne setprop dbug 0x3000
acp --host IP_de_la_borne --password mot_de_passe_de_la_borne reboot

C’est tout. Le SSH est activé, vous pouvez revenir sur un Mac moderne.

Quelques commandes

Changer la zone géographique

Pour la connexion, j’ai utilisé la commande vue dans un des liens. Le mot de passe demandé est encore celui de la borne.

ssh -oHostKeyAlgorithms=+ssh-dss root@IP_de_la_borne

Pour changer de région, le mieux est d’abord de vérifier la valeur avec la commande suivante.

acp static

Les valeurs possibles sont FCC (Amérique du nord), JAPAN, ETSI (Europe), APAC (Asie Pacifique), ROW (reste du monde), KOREA, RUSSIA et SAM (Amérique du sud).

Avant : une borne européenne

Pour changer la valeur, c’est très simple : il faut fixer la nouvelle valeur puis redémarrer. Attention, ça remet la borne à zéro. Plus exactement, ça m’a relancé la configuration en passant de l’Europe à l’Asie, mais pas dans l’autre sens (je l’ai remise en Europe ensuite).

acp static apple-sku=NOUVELLE_REGION
rebooot

Pour l’exemple, j’ai passé une borne Time Capsule (11n) de l’Europe à l’Asie.

Après : une borne asiatique

Une fois que c’est fait, il faut bien reconfigurer la borne et – si vous en avez besoin – recommencer la manipulation pour activer le SSH.

Côté jailbreak, on peut bidouiller un peu et installer des choses sur une clé USB, c’est expliqué là. En réalité, je n’ai pas joué avec ça, c’est un peu compliqué pour pas grand chose, étant donné que les cartes de développement sous GNU/Linux sont quand même facilement accessibles. Et cette page donne aussi quelques outils et idées pour s’amuser.