Android 反向工程HTTP请求

Android 反向工程HTTP请求,android,instagram,reverse-engineering,Android,Instagram,Reverse Engineering,我正在尝试解码Android instagram应用程序发送到graph.instagram.com的post数据。这个问题与这里的问题相似: 似乎是iPhone应用程序处理这个问题的方式与Android应用程序有所不同,或者是在提出这个问题后,情况发生了变化。我已经使用Burp捕获了流量,似乎主要数据现在以.gz文件的形式发送到IG: POST /logging_client_events HTTP/1.1 X-IG-Connection-Type: WIFI X-IG-Capabiliti

我正在尝试解码Android instagram应用程序发送到graph.instagram.com的post数据。这个问题与这里的问题相似:

似乎是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--
POST/logging\u client\u事件HTTP/1.1
X-IG-连接类型:WIFI
X-IG-能力:3brTAw==
X-IG-App-ID:567067343352427
用户代理:Instagram 24.0.0.11.201安卓(23/6.0;240dpi;480x854;联想/联想;联想A2016a40;A2016a40;mt6735;欧洲标准)
接受语言:en GB,en US
内容类型:多部分/表单数据;边界=EuG_u2;-5FMs7IwTX7eBzBDIJ9VEteYsO
接受编码:gzip,deflate
主持人:graph.instagram.com
X-FB-HTTP-Engine:Liger
连接:关闭
内容长度:4206
--EuG_u2;-5FMs7IwTX7eBzBDIJ9VEteYsO
内容配置:表单数据;name=“访问令牌”
567067343352427 | F249176F09E26CE54212B472DBA8FA8
--EuG_u2;-5FMs7IwTX7eBzBDIJ9VEteYsO
内容配置:表单数据;name=“格式”
json
--EuG_u2;-5FMs7IwTX7eBzBDIJ9VEteYsO
内容配置:表单数据;name=“cmsg”;filename=“a24cc6f3-23f1-438f-aecb-3f201d312c90_1.batch.gz”
内容类型:应用程序/八位字节流
内容传输编码:二进制

í][sÚHý/使用省略头部检查的充气机对其进行减压

Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(File.read("*.batch.gz"))
在ruby文档中,我们可能会看到这一点

Zlib::Inflate.new(window_bits = Zlib::MAX_WBITS)
创建新的充气流以进行解压缩。窗口\u位设置历史缓冲区的大小,可以具有以下值:

  • 0-让充气使用的窗口大小来自 压缩流

  • (8..15)- 覆盖压缩流中充气集管的窗口大小。窗口大小必须大于或等于压缩流的窗口大小

  • 大于15将32位添加到窗口以启用zlib和gzip 使用自动报头检测进行解码,或仅添加16进行解码 对于非gzip,将引发gzip格式(Zlib::DataError) 流)

  • (-8..-15)-启用不会生成检查的原始放气模式 值,并且不会在 河的尽头

这适用于使用deflate压缩数据格式的其他格式,例如提供自己的检查值的zip


你可以使用fiddler轻松地保存文件!!我是一个fiddler用户,不知道如何在burp中将字节保存到文件中..但是如果你关心的是只获取文件,而不管你从哪个软件获取,我可以帮你!!
知道这是如何编码的吗?
。好的.gz,正如你已经说过的。
filename=“a24cc6f3-23f1-438f-aecb-3f201d312c90_1.batch.gz“
内容传输编码:二进制文件
无法完全粘贴二进制文件下方的“乱码”
。不清楚如何复制/粘贴。这不是文本吗?@Arsaliam我如何使用fiddler检索该文件。我花了几个小时摆弄,但什么也找不到。