Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Charles代理中原始protobuf数据的解码_Android_Proxy_Protocol Buffers_Decode - Fatal编程技术网

Android Charles代理中原始protobuf数据的解码

Android Charles代理中原始protobuf数据的解码,android,proxy,protocol-buffers,decode,Android,Proxy,Protocol Buffers,Decode,我使用Charles Proxy捕获了Android应用程序和网站之间的一些流量。Charles将流量标识为协议缓冲流 结构如图所示: - site.com | -- sub | --- message.proto 原始消息: POST site.com/sub/message.proto HTTP/1.1 token: random Id: random Authorization: Basic OTI[..] User-Agent: Dalvik/1.6.0 (Linux; U; Andr

我使用Charles Proxy捕获了Android应用程序和网站之间的一些流量。Charles将流量标识为协议缓冲流

结构如图所示:

- site.com
|
-- sub
|
--- message.proto
原始消息:

POST site.com/sub/message.proto HTTP/1.1
token: random
Id: random
Authorization: Basic OTI[..]
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.3; Galaxy Nexus Build/JWR66Y)
Host: site.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Content-Length: 580

��hï õÜÕñ6iaõ*|{6¤oQIùk*դž¼   
S_½ª¥8.3ÝÎu öÚ´êVFBeùõÈî¿;µ¼ö%S [...]
我尝试了一些方法来解码内容,但没有成功。命令
proton decode_raw
导致失败消息
无法解析输入。现在我不确定消息是否真的是protobuf消息,因为头中的内容类型并不表示使用了protobuf。我还将流量保存为
.bin
文件

Charles能够显示protobuf消息的上下文,但需要相应的描述符文件。然而,为了获得描述符文件,我需要实际的
.proto
文件,而我没有这个文件

那么,我是被迫用手解码信息,还是有其他我忽略的可能性


我怀疑使用了应用程序级加密,Charles无意中将流量标识为protobuf。

在我看来,内容只是被压缩了:

Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
试着用gunzip解压

我同意这可能不是一个协议。Charles Proxy可能被以
.proto
结尾的URL弄糊涂了

请注意,在尝试解码数据时(无论是作为protobuf还是作为gzip),您需要确保只解码请求的主体,即不解码文本HTTP头。请注意,在文本编辑器中编辑标题可能不起作用,因为将二进制数据转换为文本通常会损坏标题。您可能可以通过执行以下操作来提取数据:

tail -c 580 message.txt | zcat
或者,如果你认为它可能是一个原型:

tail -c 580 message.txt | protoc --decode_raw

请注意,580来自
内容长度
标题。

我完全忽略了
gzip
编码。非常感谢。我将首先研究它。@Safaci Oops,实际上现在我已经研究了它,我为
内容编码配置了
接受编码
<代码>接受编码
不指定请求编码,它指定客户端将在响应中接受的内容。所以我认为我错了。但是内容显然不是表单数据,因此
内容类型
也显然是错误的。尝试压缩也不是一个坏主意。要添加一些额外的信息,对message.proto的响应配置为
传输编码:chunked
内容类型:text/plain;字符集=UTF-8。内容也不可读:
�E�/我�R����#�?�