im reversing a android app and i managed to intercept a grpc request and decode it using protoc but i cant seem to make sense of any of the data, i know its compressed using gzip because of the request headers
"content-type": "application/grpc; charset=utf-8",
"grpc-accept-encoding": "identity,deflate,gzip",
"accept-encoding": "identity,gzip",
and this is the decoded protcolbuffer
"1": {
"1": "¸z =PÞCw.\u001e}».*\u001f\u0011"
},
"2": some value,
"3": {
"1": {
"1": {
"1": "©ÄS¢ÄþP\f.½\fÑWÄK>"
}
}
},
"4": {
"2": 1,
"4": {
"2": {
"1": "other value"
}
},
"7": 2
}
}
i already tried gunzip on cyberchef but i could not decompress anything without a file signature so how should i decompress the other unreadable values into plain text?? when ever i send the same binary data above the intended functionality works so i know the server is turning them back into readable text somehow and say i want to intercept the data on the android app before it gets serialized what is the best place to do that?
update: this is the result decoding the data using proto with the same structure as above what is this data how do i decode it?
s {
string1: "\270z =P\336Cw\211\036}\273\214*\037\021"
}
id: 1640553558
d {
d0 {
d1 {
string2: ">D_.\233d\\\177\210\274\320\000}\253\')"
}
}
}
g {
id2: 1
f {
f0 {
string3: "Eiei"
}
}
id3: 2
}
this is the .proto i built
syntax = "proto2";
message body {
message b1 {
optional string s0 = 1;
}
optional b1 s = 1;
optional int32 id = 2;
message b2 {
message b3 {
message body4 {
optional string string2 = 1;
}
optional body4 d1 = 1;
}
optional b3 d0 = 1;
}
optional b2 d = 3;
message b4 {
optional int32 id2 = 2;
message b5 {
message b6 {
optional string message0 = 1;
}
optional b6 f0 = 2;
}
optional b5 f = 4;
optional int32 id3 = 7;
}
optional b4 g = 4;
}