mirror of
https://github.com/azenla/AppleCache.git
synced 2026-02-12 16:32:45 +00:00
Note the discovery of the length of the signed payload being before payload.
This commit is contained in:
69
registration/README.md
Normal file
69
registration/README.md
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# Cache Registration
|
||||||
|
|
||||||
|
Cache registration is the process that is typically necessary
|
||||||
|
for Apple devices to use the cache.
|
||||||
|
|
||||||
|
Unfortunately, the request that registers the cache seems to be "signed".
|
||||||
|
|
||||||
|
I did however figure out that the length of the signed payload is a Big Endian 32-bit integer before the payload. Still working out the signature format.
|
||||||
|
|
||||||
|
```text
|
||||||
|
Registration URL: https://lcdn-registration.apple.com/lcdn/register
|
||||||
|
```
|
||||||
|
|
||||||
|
The un-signed request content looks like:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"push-token": "fbFqxPukE8hfZD+Lbeo+E6390ih2lmY0I13apvLhZ6I=",
|
||||||
|
"ranked-peers": true,
|
||||||
|
"details": {
|
||||||
|
"capabilities": {
|
||||||
|
"ur": true,
|
||||||
|
"sc": true,
|
||||||
|
"pc": true,
|
||||||
|
"im": true,
|
||||||
|
"ns": true,
|
||||||
|
"query-parameters": true
|
||||||
|
},
|
||||||
|
"cache-size": 230000000000,
|
||||||
|
"ac-power": true,
|
||||||
|
"is-portable": true,
|
||||||
|
"local-network": [
|
||||||
|
{
|
||||||
|
"speed": 1300,
|
||||||
|
"wired": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"local-ranges-only": true,
|
||||||
|
"local-ranges": [
|
||||||
|
{
|
||||||
|
"first": "10.0.0.0",
|
||||||
|
"last": "10.0.255.255"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cache-software": [
|
||||||
|
{
|
||||||
|
"type": "cache",
|
||||||
|
"name": "Caching Server",
|
||||||
|
"version": "233"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"build": "19A583",
|
||||||
|
"type": "system",
|
||||||
|
"name": "Mac OS X",
|
||||||
|
"version": "10.15"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"guid": "A14862D9-9643-4F18-B0BA-990BC2CAC0C2",
|
||||||
|
"local-addresses": [
|
||||||
|
{
|
||||||
|
"address": "10.0.0.20",
|
||||||
|
"netmask": "255.255.0.0",
|
||||||
|
"port": "51391"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"session-token": "1570938452471~46E0EE91164ABF1E4D42F7C3DC51B0747AD1BC3E7C9073CB6230D8F2191C40D9"
|
||||||
|
}
|
||||||
|
```
|
||||||
BIN
registration/cert.cer
Normal file
BIN
registration/cert.cer
Normal file
Binary file not shown.
11
registration/decode-request.dart
Normal file
11
registration/decode-request.dart
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
Future<void> main(List<String> args) async {
|
||||||
|
var signedRequestBase64 = (await new File("request.b64").readAsString()).trim();
|
||||||
|
var signedJsonContent = base64.decode(signedRequestBase64);
|
||||||
|
var jsonContent = const Utf8Decoder(allowMalformed: true).convert(signedJsonContent);
|
||||||
|
jsonContent = jsonContent.substring(jsonContent.indexOf('{"'), jsonContent.lastIndexOf('"}') + 2);
|
||||||
|
print(jsonContent);
|
||||||
|
}
|
||||||
1
registration/request.b64
Normal file
1
registration/request.b64
Normal file
@@ -0,0 +1 @@
|
|||||||
|
AgTJhMe66IUoYaGPdKG2o18Cjy0j3xUI1v6C9zzIwZJPAAAE0AUAAAABAAABgCFQkFHILJ4J+Im6F83b8717p8sZ2PHF8cEOPq1YyZ0roQ2oZyrSGkKRCBBbE7n2G0Ospt0FSXlUf/zq09g5wz+DdEkA6dZqOzU+w51C0L82YuzJfF3RgycUZo6SFrZdt4mrSKtXHPd/jMFU34QJq2Xm5jWWCUhikMvXq+uAfD8xzri1+IWmjfq1X/j+zdYcg5hxpvdeCcSBdJ7e/IWxpUhm61rdiumEHvJ77gR9jKamLhvSqatHw9m5lEG+4/hKp2WeR4C7NUeOAnkvY2LYU75sCIklOmTIRS1CKq0npI4KtIxD88j7TKKFLocTf5LjQy65THdiUOvmfAenz7XrDiJMNgm7k0w1DJhNIIdUZ5csd+igFev2CCkidPSnPtJuRBjWpYpjbrYo0TezgJuZNw0rNXPciqZMvmyX6cbmYdJw3qqRw/7GXyNZQ7hmr51GF2ozKg/VuFSDZ6my7tNSlmod0Fn2dQZow1jK74omAP71KM4ggUHvT7FLNu7wea1bDQAAAu57InB1c2gtdG9rZW4iOiJmYkZxeFB1a0U4aGZaRCtMYmVvK0U2MzkwaWgybG1ZMEkxM2FwdkxoWjZJPSIsInJhbmtlZC1wZWVycyI6dHJ1ZSwiZGV0YWlscyI6eyJjYXBhYmlsaXRpZXMiOnsidXIiOnRydWUsInNjIjp0cnVlLCJwYyI6dHJ1ZSwiaW0iOnRydWUsIm5zIjp0cnVlLCJxdWVyeS1wYXJhbWV0ZXJzIjp0cnVlfSwiY2FjaGUtc2l6ZSI6MjMwMDAwMDAwMDAwLCJhYy1wb3dlciI6dHJ1ZSwiaXMtcG9ydGFibGUiOnRydWUsImxvY2FsLW5ldHdvcmsiOlt7InNwZWVkIjoxMzAwLCJ3aXJlZCI6ZmFsc2V9XX0sImxvY2FsLXJhbmdlcy1vbmx5Ijp0cnVlLCJsb2NhbC1yYW5nZXMiOlt7ImZpcnN0IjoiMTAuMC4wLjAiLCJsYXN0IjoiMTAuMC4yNTUuMjU1In1dLCJjYWNoZS1zb2Z0d2FyZSI6W3sidHlwZSI6ImNhY2hlIiwibmFtZSI6IkNhY2hpbmcgU2VydmVyIiwidmVyc2lvbiI6IjIzMyJ9LHsiYnVpbGQiOiIxOUE1ODMiLCJ0eXBlIjoic3lzdGVtIiwibmFtZSI6Ik1hYyBPUyBYIiwidmVyc2lvbiI6IjEwLjE1In1dLCJndWlkIjoiQTE0ODYyRDktOTY0My00RjE4LUIwQkEtOTkwQkMyQ0FDMEMyIiwibG9jYWwtYWRkcmVzc2VzIjpbeyJhZGRyZXNzIjoiMTAuMC4wLjIwIiwibmV0bWFzayI6IjI1NS4yNTUuMC4wIiwicG9ydCI6IjUxMzkxIn1dLCJzZXNzaW9uLXRva2VuIjoiMTU3MDkzODQ1MjQ3MX40NkUwRUU5MTE2NEFCRjFFNEQ0MkY3QzNEQzUxQjA3NDdBRDFCQzNFN0M5MDczQ0I2MjMwRDhGMjE5MUM0MEQ5In0AAABPAb6eSqhKZey9w2klpinW1S6gg2WoAAAANgUFDc0xAHWFKY1zZq4D3DgIJF2injbZuT9oiFKp3k+RMYNXMnfTTcNZwW+Q+GGm0nDDzODN7wAA
|
||||||
BIN
registration/request.bin
Normal file
BIN
registration/request.bin
Normal file
Binary file not shown.
1
registration/session.b64
Normal file
1
registration/session.b64
Normal file
@@ -0,0 +1 @@
|
|||||||
|
AQhLLJFIHZt9oAcmx7kv90Q4KuOi7BdYPH0bANUqB0bIwG02tZSTwsV8lN3y9bIaGLJ0r9sewtGagjFdRUw1pDSOqcGxBJi9QGohoCBB1LAA5UBS/PXgJjaieRfiPEZL5JD3pK6PO7cGiPTbwAolPSaULPq/WbAorXRtO4W+1z6CZJ3cw/7MAjDT+Nb6+U5RhdQTXl3KRjyZxarwDfdFqT3PL6WRfk5NxeSUDmdh67W+D8QxXJM4jrPncdwrToC6RFyTm2FfAw059JOS1TB4zqo9ILUJCC4GdyGviCqCHOUF+ZiJrGi+oXp2FO05I7PY/EMlCjZvGydevxQCe/lh62bdRQz0UJRthVa8a7BCOCvG07WEezzDz01YAAAAIL1DLA+wcmVl/jeeNqW/+xXQwT2hCzc2WS6aodkxZTNPViDq38W2fZxEbrV4XMLFdYogbuI=
|
||||||
Reference in New Issue
Block a user