我正在尝试解码由Android Instagram应用发送到graph.instagram.com的帖子数据。这个问题与此处的问题相似:
似乎iPhone应用程序对Android应用程序的处理方式不同,或者自问题提出以来已发生变化。我使用Burp捕获了流量,似乎主要数据现在作为.gz文件发送给IG:
POST /logging_client_events HTTP/1.1
X-IG-Connection-Type: WIFI
X-IG-Capabilities: 3brTAw==
X-IG-App-ID: 567067343352427
User-Agent: Instagram 24.0.0.11.201 Android (23/6.0; 240dpi; 480x854; LENOVO/Lenovo; Lenovo A2016a40; A2016a40; mt6735; en_GB)
Accept-Language: en-GB, en-US
Content-Type: multipart/form-data; boundary=EuG_-5FMs7IwTX7eBzBDIJ9VEteYsO
Accept-Encoding: gzip, deflate
Host: graph.instagram.com
X-FB-HTTP-Engine: Liger
Connection: close
Content-Length: 4206
--EuG_-5FMs7IwTX7eBzBDIJ9VEteYsO
Content-Disposition: form-data; name="access_token"
567067343352427|f249176f09e26ce54212b472dbab8fa8
--EuG_-5FMs7IwTX7eBzBDIJ9VEteYsO
Content-Disposition: form-data; name="format"
json
--EuG_-5FMs7IwTX7eBzBDIJ9VEteYsO
Content-Disposition: form-data; name="cmsg"; filename="a24cc6f3-23f1-438f-aecb-3f201d312c90_1.batch.gz"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
í][sÚHý/<ÇÞ¾ª»]µÎÈÎâZ‰M›H[[*!HHÀ"0—©ùïûµ„mƒ2v‚�ÎTRCß/ç|§ïú½VÄÿ«�áµp<’Ní¬Æ-�,A¥œ0"j•×m<?ÂNü‡ñ)A|Ú³$ëÃY~IŽ ¶À¹ß&Q\%GÛ(–�=a´‹NÕ‰dqû$Ʋ’�Ðn‡B”n˜'Ù2øŽ˜E\ÉhXÅ ‹"«KOÀCDÙ= ã¨}B»PàÅ$RâÌÊÀúÿ¢Ñ°›ô‚¨Gƒ¢¬G[p£H°PѸ2L¥$¡âmÊCÅ"ò ÚDçqnK×~8ÆüœÄ½YNtK„Ó°vöŸßkÃ0�Á'Ó°7 ó`4é…Ã$
n“xw‚$OªŠ@¬iRÆОĄóSiqpÏG�Y¦}º1DÑ¡²dƒG¼˜N Ÿßky0蘖…±Dq‚1—J p�âŒa]í°
÷È-¦@AgÊ¢¢t©�(Ï$ŒÉ°LGƒX×7^^ÿëÕ*l©Y=áþv5÷¾fE›\êéXÔólõ•\μւw>ei„ŠòË4$7Ú?÷•ÿïyÒùz3ö«[õô*÷Ó‹¥×tæ�OW©Ÿ~IœfÄ\;Kò7šYæÚ7™ÛúÌ�¦Gœæs싹۬/œæ5k4Ôýw½¨Ý,úY”)Ô&Ó¬�è´/°Ó¬/Ý4ZºÍÏ�æ¥Ü™Æ×9qÓkÔ°ÏWŽ}Í»ö€9«Næ§uÒ«ÔI=ä¥ýÄùt½tí/ ¤Gv6ðs¿ïÚ×Ôµ¯ò†}™5Z/ÿOnâØ=î~ºÊtÞN³ŸøÍÏIê‘lØÎ/QçëUm˜Ô‡èïΣÙ0êa4ÐõmowGY6š€¤é¬Ðþåo蟲“Eí}
--EuG_-5FMs7IwTX7eBzBDIJ9VEteYsO
Content-Disposition: form-data; name="sent_time"
1512267283.408
--EuG_-5FMs7IwTX7eBzBDIJ9VEteYsO
Content-Disposition: form-data; name="cmethod"
deflate
--EuG_-5FMs7IwTX7eBzBDIJ9VEteYsO--
出于某种原因,我无法粘贴&#39; gibberish&#39;完全低于二进制,并在几行之后切断。
知道这是如何编码的吗?它应该是.gz,但是Burp的输出看起来并不像它。无论如何我可以保存文件,以便我可以检查它? Burp,也不是小提琴手似乎支持这样的事情。
答案 0 :(得分:2)
要进行解压缩,请使用省略标头检查的充气机
Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(File.read("*.batch.gz"))
在ruby文档中,我们可能会读到
Zlib::Inflate.new(window_bits = Zlib::MAX_WBITS)
创建新的充气流以进行减压。 window_bits设置历史记录缓冲区的大小,并可以具有以下值:
0-膨胀使用zlib标头中的窗口大小 压缩流。
(8..15)- 覆盖压缩流中膨胀标头的窗口大小。窗口大小必须大于或等于压缩流的窗口大小。
大于15将32-添加到window_bits以启用zlib和gzip 自动标头检测解码,或加16仅解码 gzip格式(对于非gzip,将引发Zlib :: DataError 流)。
(-8 ..- 15)-启用原始放气模式,该模式不会生成检查 值,并且不会在 流的结尾。
这可与其他使用deflate压缩数据格式的格式一起使用,例如zip,它们提供自己的校验值。
https://ruby-doc.org/stdlib-2.6.3/libdoc/zlib/rdoc/Zlib/Inflate.html
答案 1 :(得分:-1)
使用APKTool或类似的东西反编译APK是获得实际编码方法的最佳选择。有许多很棒的库允许你使用私有API(后面是几个Instagram应用程序版本),所以除非你需要新应用程序的特定功能或者你只是想学习,那么这也可能是你的选择。