Survol en rétro-ingénierie (mode satellite 3D) à partir d'Apple Maps. Un travail similaire est effectué ici pour Google Earth.
En gros, ces parties ont été comprises :
Nous pouvons authentifier des URL et récupérer des modèles 3D texturés à partir de coordonnées données (latitude, longitude).
Les données sont stockées dans des tuiles de carte. Ces cinq styles de tuiles sont utilisés pour Flyover :
Taper | But | Structure des URL |
---|---|---|
C3M | Texture, maillage, transformation (, animation) | ?(?|&)style=15&v=⓿®ion=❶&x=❷&y=❸&z=❹&h=❺ |
C3MM1 | Métadonnées | ?(?|&)style=14&v=⓿&part=❻®ion=❶ |
C3MM2 | Métadonnées | ?(?|&)style=52&v=⓿®ion=❶&x=❷&y=❸&z=❹&h=❺ |
DTM1 | Terrain/Surface/Altitude | ?(?|&)style=16&v=⓿®ion=❶&x=❷&y=❸&z=❹ |
DTM2 | Terrain/Surface/Altitude | ?(?|&)style=17&v=⓿&size=❼&scale=❽&x=❷&y=❸&z=❹ |
ResourceManifest
└─ AltitudeManifest
├─ C3MM
│ └─ C3M
└─ DTM?
Concentrons-nous sur C3M(M) pour l’instant. Les DTM sont des images avec un pied de page et sont probablement utilisées pour la grille affichée lors du chargement de Maps.
Ce référentiel est structuré comme suit :
Annuaire | Description |
---|---|
cmd | programmes en ligne de commande |
paquet | la plupart du code réel |
proto | fichiers protobuf |
scripts | scripts supplémentaires |
fournisseur | dépendances |
Installez Go 1.15.x et exécutez :
go get -d github.com/retroplasma/flyover-reverse-engineering/...
cd " $( go env GOPATH ) /src/github.com/retroplasma/flyover-reverse-engineering "
Modifiez ensuite config.json :
./scripts/get_config.sh > config.json
./scripts/get_config_macos.sh > config.json
resourceManifestURL
: depuis GEOConfigStore.db/com.apple.GEO.plist ou binaire GeoServicestokenP1
: à partir du binaire GeoServices (fonction : GEOURLAuthenticationGenerateURL
) Voici quelques programmes en ligne de commande qui utilisent le code de pkg :
Usage:
go run cmd/export-obj/main.go [lat] [lon] [zoom] [tryXY] [tryH]
Parameter Description Example
--------------------------------------
lat Latitude 34.007603
lon Longitude -118.499741
zoom Zoom (~ 13-20) 20
tryXY Area scan 3
tryH Altitude scan 40
Cela exporte la jetée de Santa Monica vers ./downloaded_files/obj/...
:
go run cmd/export-obj/main.go 34.007603 -118.499741 20 3 40
Facultatif : OBJ à l'échelle centrale à l'aide du script node.js :
node scripts/center_scale_obj.js
Dans Blender (tutoriel compatible ici) :
Cela authentifie une URL à l'aide des paramètres de config.json
:
go run cmd/auth/main.go [url]
Cela analyse un fichier C3M v3, décompresse les maillages, lit les textures JPEG et produit une structure contenant un modèle 3D texturé :
go run cmd/parse-c3m/main.go [file]
Ceci analyse un fichier C3MM v1. Les fichiers C3MM d'une région s'étendent sur des octrees dont les racines sont indexées dans le premier fichier.
go run cmd/parse-c3mm/main.go [file] [[file_number]]
~/Library/Containers/com.apple.geod/Data/Library/Caches/com.apple.geod/GEOConfigStore.db
~/Library/Preferences/com.apple.GEO.plist
~/Library/Caches/GeoServices/Resources/altitude-*.xml
altitude-*.xml
dans le manifeste de ressources~/Library/Containers/com.apple.geod/Data/Library/Caches/com.apple.geod/MapTiles/MapTiles.sqlitedb
/System/Library/PrivateFrameworks/GeoServices.framework/GeoServices
/System/Library/PrivateFrameworks/VectorKit.framework/VectorKit
/System/Library/PrivateFrameworks/GeoServices.framework/XPCServices/com.apple.geod.xpc
GeoServices
/Applications/Maps.app/Contents/MacOS/Maps
VectorKit
LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.