Closed zner0L closed 1 year ago
One idea:
This object would be the result:
{
prepare: { body: 'ungz.pb', query: 'plain' },
values: {
location: { value: '0.00000 0.00000', location: 'body.3045', prepare: 'base64' },
userId: { value: 42, location: 'body.id' },
}
}
With this JSON as the in between step (having run gunzip
and transformed the protobuf schema):
{
"id": 42,
"3045": "MC4wMDAwMCAwLjAwMDAw"
}
The full prepare
path for the location would be ungz.pb.base64
Very rough draft of what an entry in the tracker wiki thingy might look like:
Tracker name: OneSignal
Exodus link? datenanfragen/data link
Endpoint 1
Endpoint URLs:
- https://api.onesignal.com/players
- https://onesignal.com/api/v1/players
- /https:\/\/api.onesignal.com\/players\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/
TODO: We probably don't want to mention
match
here?View recorded requests to this endpoint
Request format (TODO: bad title)
blurb: The bodies are gkgkd
To parse, you:
- base64_decode(body)
- JSON.parse(1.b)
- gunzip(1.a)
- return { ...2, ...3 }
Contained tracking data
Data type Source Path Reasoning Location body user.device.abc[0].latitude
+ ' ' +user.device.abc[0].longitude
obvious property name Location body facebook.ads.location
obvious property name Location query string a
obvious values Network connection type body user.device.abc[0].network_type
https://source.tld Unique ID header X-Secret-Value
https://research.tweasel.org/onesignal/x-secret-value Endpoint 2
…
locale
property that contains language and country information, we just use this one property as a path information without applying any splitting functions. We only apply further parsing of non-standard formats which are too obfuscated to be easily parsed.We have the problem that sometimes data is contained in lots of similar objects in an array, like Google Firebase transmitting a list of events. We then find the same data multiple times in in the array. To document this, we use the asterisk *
from JSON path. This leads to the situation, where we can either find the same information in several different places e.g. in the query string or the body, or we find the same information in the same place multiple times. In this case, we combine both value arrays in the return value into one flattened array.
To link to specific historic versions of an adapter, we generate a permalink from the adapter id and the commit hash.
Initial implementation of this: tweaselORG/TrackHAR#1