Flyover ذات الهندسة العكسية (وضع القمر الصناعي ثلاثي الأبعاد) من خرائط Apple. يتم إجراء عمل مماثل لبرنامج Google Earth هنا.
تقريبًا، تم اكتشاف هذه الأجزاء:
يمكننا مصادقة عناوين URL واسترجاع نماذج ثلاثية الأبعاد من إحداثيات معينة (خطوط الطول والعرض).
يتم تخزين البيانات في مربعات الخريطة. يتم استخدام أنماط التجانب الخمسة هذه في Flyover:
يكتب | غاية | هيكل URL |
---|---|---|
C3M | الملمس، الشبكة، التحول (، الرسوم المتحركة) | ?(?|&)style=15&v=⓿®ion=❶&x=❷&y=❸&z=❹&h=❺ |
سي 3 مم 1 | البيانات الوصفية | ?(?|&)style=14&v=⓿&part=❻®ion=❶ |
سي 3 مم 2 | البيانات الوصفية | ?(?|&)style=52&v=⓿®ion=❶&x=❷&y=❸&z=❹&h=❺ |
دي تي إم 1 | التضاريس/السطح/الارتفاع | ?(?|&)style=16&v=⓿®ion=❶&x=❷&y=❸&z=❹ |
دي تي إم 2 | التضاريس/السطح/الارتفاع | ?(?|&)style=17&v=⓿&size=❼&scale=❽&x=❷&y=❸&z=❹ |
ResourceManifest
└─ AltitudeManifest
├─ C3MM
│ └─ C3M
└─ DTM?
التركيز على C3M(M) في الوقت الحالي. DTMs هي صور ذات تذييل ومن المحتمل أن يتم استخدامها للشبكة التي يتم عرضها عند تحميل الخرائط.
يتم تنظيم هذا المستودع على النحو التالي:
دليل | وصف |
---|---|
كمد | برامج سطر الأوامر |
حزمة | معظم الكود الفعلي |
بروتو | ملفات البروتوبوف |
مخطوطات | مخطوطات إضافية |
بائع | التبعيات |
قم بتثبيت Go 1.15.x وقم بتشغيل:
go get -d github.com/retroplasma/flyover-reverse-engineering/...
cd " $( go env GOPATH ) /src/github.com/retroplasma/flyover-reverse-engineering "
ثم قم بتحرير الملف config.json:
./scripts/get_config.sh > config.json
./scripts/get_config_macos.sh > config.json
resourceManifestURL
: من GEOConfigStore.db/com.apple.GEO.plist أو GeoServices الثنائيtokenP1
: من GeoServices الثنائي (الوظيفة: GEOURLAuthenticationGenerateURL
) فيما يلي بعض برامج سطر الأوامر التي تستخدم التعليمات البرمجية من pkg:
الاستخدام:
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
يؤدي هذا إلى تصدير رصيف سانتا مونيكا إلى ./downloaded_files/obj/...
:
go run cmd/export-obj/main.go 34.007603 -118.499741 20 3 40
اختياري: OBJ على نطاق مركزي باستخدام برنامج Node.js النصي:
node scripts/center_scale_obj.js
في Blender (برنامج تعليمي متوافق هنا):
يؤدي هذا إلى التحقق من عنوان URL باستخدام معلمات من config.json
:
go run cmd/auth/main.go [url]
يؤدي هذا إلى تحليل ملف C3M v3، وفك ضغط الشبكات، وقراءة أنسجة JPEG، وإنتاج بنية تحتوي على نموذج ثلاثي الأبعاد:
go run cmd/parse-c3m/main.go [file]
يؤدي هذا إلى تحليل ملف C3MM v1. تمتد ملفات C3MM الموجودة في المنطقة على ثمانيات تم فهرسة جذورها في الملف الأول.
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
عنوان url في بيان الموارد~/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
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.