Skip to content

Instantly share code, notes, and snippets.

@DurtyFree
Last active January 9, 2020 14:23
Show Gist options
  • Save DurtyFree/eae9f8f42df78cc46be4411d99bb5364 to your computer and use it in GitHub Desktop.
Save DurtyFree/eae9f8f42df78cc46be4411d99bb5364 to your computer and use it in GitHub Desktop.
Pokemon Go signature proto
syntax = "proto3";
package POGOProtos.Networking.Envelopes;
message Signature {
repeated UnknownMessage field1 = 1;
int64 timestamp_ms_since_start = 2;
string field3 = 3;
repeated LocationUpdate location_updates = 4; // Multiple location updates at a time. This is all the updates since the last time we sent a request
repeated AndroidGpsInfo android_gps_info = 5;
repeated UnknownMessage field6 = 6;
repeated SensorUpdate sensor_updates = 7; // All the sensor updates since the last time we sent a request. (Seems to actually be throttled to 1-3 at a time)
DeviceInfo device_info = 8; // device info - need to find this still to verify everything
IOSDeviceInfo ios_device_info = 9; // iOS only - likely device capabilities? (Or even simpler being iOS device version flags)
int32 location_hash_by_token_seed = 10; // Hashed location using the auth token as the seed (hashed auth token -> location hash seed)
bool field11 = 11;
bool field12 = 12;
int32 field13 = 13;
int32 field14 = 14;
string field15 = 15;
int32 field16 = 16;
string field17 = 17;
string field18 = 18;
bool field19 = 19;
int32 location_hash = 20;
bool field21 = 21;
bytes field22 = 22; // replay check - Changes every 5 minutes or so. Generation unknown but pointed to by 0001B8614
uint64 epoch_timestamp_ms = 23;
repeated uint64 request_hashes = 24; // xxHash64 of the requests being sent with this agglom
uint64 field25 = 25;
// 100% - Reference iOS lib "LocationUpdate" structure for bridge
message LocationUpdate {
string name = 1; // "network", "gps", "fused" - only these 3 values (com.nianticlabs.location.NianticLocationManager.class)
int64 timestamp_ms = 2;
float altitude = 4;
float latitude = 13;
float longitude = 14;
float device_speed = 18;
float device_course = 20;
float horizontal_accuracy = 21;
float vertical_accuracy = 22;
int32 provider_status = 26;
int64 floor = 27;
int32 location_type = 28;
}
// iOS only
message IOSDeviceInfo {
bool bool1 = 1;
bool bool2 = 2;
bool bool3 = 3; // 1
bool bool4 = 4;
bool bool5 = 5; // 1
bool bool6 = 6; // 1
bool bool7 = 7;
bool bool8 = 8;
bool bool9 = 9;
bool bool10 = 10;
}
// 100% - Reference iOS lib "LocationUpdate" structure for bridge
message SensorUpdate {
uint64 timestamp = 1;
double acceleration_x = 3;
double acceleration_y = 4;
double acceleration_z = 5;
double magnetic_field_x = 6;
double magnetic_field_y = 7;
double magnetic_field_z = 8;
int32 magnetic_field_accuracy = 9;
double attitude_pitch = 10;
double attitude_yaw = 11;
double attitude_roll = 12;
double rotation_rate_x = 13;
double rotation_rate_y = 14;
double rotation_rate_z = 15;
double gravity_x = 16;
double gravity_y = 17;
double gravity_z = 18;
int32 status = 19;
}
message DeviceInfo {
string device_id = 1;
string android_board_name = 2;
string android_bootloader = 3;
string device_brand = 4; // product.brand
string device_model = 5; // product.device
string device_model_identifier = 6; // Android only, build.display.id
string device_comms_model = 7; // boot.hardware
string hardware_manufacturer = 8; // product.manufacturer
string hardware_model = 9; // product.model
string firmware_brand = 10; // On iOS: "iPhone OS", product.name
string firmware_tags = 12; // Android only, build.tags
string firmware_type = 13; // On iOS instead: iOS version; // build.type
string firmware_fingerprint = 14; // Android only, build.fingerprint
}
message AndroidGpsInfo {
uint64 time_to_fix = 1;
repeated int32 satellites_prn = 2;
repeated float azimuth = 3;
repeated float elevation = 4;
repeated float snr = 5;
repeated bool has_almanac = 6;
repeated bool has_ephemeris = 7;
repeated bool used_in_fix = 8;
}
}
// Just a junk message to denote that we don't currently know what message something is.
message UnknownMessage {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment