hack-different / wwdc23-tasks

Stuff to dig into when iOS 17 is released
4 stars 0 forks source link

New fields in Apple Maps manifest #6

Open nicolas17 opened 1 year ago

nicolas17 commented 1 year ago

The Apple Maps manifest in protobuf format got new fields recently: https://gspe35-ssl.ls.apple.com/geo_manifest/dynamic/config?os=ios&os_version=17.0

urlInfoSet {
  ...
  57 {
    1: "https://gsp57-ssl-bcx.ls.apple.com/dispatcher.arpc"
    3: 0
  }
}
95 {
  1: 1684690460826
  2: 0
}

My current .proto file is here: https://gitlab.com/nicolas17/geoservices-re/-/blob/e6b063db6f800bbf0e6b179dc6940fff89d17d22/geoservices.proto

I didn't find 95 nor urlInfoSet.57 in iOS 16.6, so this is likely new iOS 17 material. Gotta decompile GeoServices.framework.

nicolas17 commented 1 year ago

After iOS 17.0b1 was released, the manifest got fields 54/55/56 added to urlInfoSet as well.

I have now looked at 17.0b2 GeoServices and found these: 95 = offlineMetadata 95.0 = dataVersion 95.1 = regulatoryRegionId urlInfoSet.54 = offlineDataBatchListURL urlInfoSet.55 = offlineDataSizeURL urlInfoSet.56 = offlineDataDownloadBaseURL

So those new fields were all about offline maps, as announced in WWDC23. However, field 57 in urlInfoSet is still not present in the binary!

nicolas17 commented 1 year ago

Decoded manifest contents:

urlInfoSet {
  ...
  offlineDataBatchListURL {
    url: "https://gspe121-ssl.ls.apple.com/api/batchesForRegion"
  }
  offlineDataSizeURL {
    url: "https://gspe121-ssl.ls.apple.com/api/sizeForRegion"
  }
  offlineDataDownloadBaseURL {
    url: "https://gspe121-ssl.ls.apple.com"
  }
  57 {
    1: "https://gsp57-ssl-bcx.ls.apple.com/dispatcher.arpc"
    3: 0
  }
}
offlineMetadata {
  dataVersion: 1686608055357
  regulatoryRegionId: 0
}

Field 57 continues to be a mystery.