Note the discovery of the length of the signed payload being before payload.

This commit is contained in:
Kenneth Endfinger
2019-10-13 00:32:00 -05:00
parent 5f29322694
commit e0a4e6edde
7 changed files with 82 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

69
registration/README.md Normal file
View 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

Binary file not shown.

View 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
View 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

Binary file not shown.

1
registration/session.b64 Normal file
View File

@@ -0,0 +1 @@
AQhLLJFIHZt9oAcmx7kv90Q4KuOi7BdYPH0bANUqB0bIwG02tZSTwsV8lN3y9bIaGLJ0r9sewtGagjFdRUw1pDSOqcGxBJi9QGohoCBB1LAA5UBS/PXgJjaieRfiPEZL5JD3pK6PO7cGiPTbwAolPSaULPq/WbAorXRtO4W+1z6CZJ3cw/7MAjDT+Nb6+U5RhdQTXl3KRjyZxarwDfdFqT3PL6WRfk5NxeSUDmdh67W+D8QxXJM4jrPncdwrToC6RFyTm2FfAw059JOS1TB4zqo9ILUJCC4GdyGviCqCHOUF+ZiJrGi+oXp2FO05I7PY/EMlCjZvGydevxQCe/lh62bdRQz0UJRthVa8a7BCOCvG07WEezzDz01YAAAAIL1DLA+wcmVl/jeeNqW/+xXQwT2hCzc2WS6aodkxZTNPViDq38W2fZxEbrV4XMLFdYogbuI=