Beau travail!
Je me demandais s'il était possible de retrouver également la plage de ports IPv4 assignée à la freebox, d'après l'IPv6 avec ta méthode? (Il manque quelques bits IPv6 dans ton exemple)
tu fais l'inverse de : ((port & 0xc000) >> 10)) << 64)
port & 0xc000 = port & 1100000000000000 = PP00000000000000
(port & 0xc000) >> 10) => PP0000
((port & 0xc000) >> 10)) << 64) => PP0000:0000:0000:0000:0000
donc sur une IPv6: 2a01:e0a:1:4b
f0::1 ce sont les 2 bits de poids faible du 3eme octect du dernier champ du prefix.
2a01:e0a:1:4b
f0::1 ->
f = 11
11 -> f & 0011 =
1100 = plage 0-16383
01 = plage 16384-32767
10 = plage 32768-49151
11 = plage 49152-65535