逆向工程 HTTP 请求

2023-12-19

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

反向工程 HTTP 请求 https://stackoverflow.com/questions/41509066/reverse-engineer-http-request

似乎 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--

由于某种原因,我无法完全粘贴二进制文件下面的“乱码”,并且它会在几行后被切断。

知道这是如何编码的吗?它应该是 .gz,但 Burp 的输出看起来并不像它。无论如何,我可以保存该文件以便我可以检查它吗? Burp 和 fiddler 似乎都不支持这样的事情。


要解压缩它,请使用省略标头检查的充气器

Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(File.read("*.batch.gz"))

在 ruby​​ 文档中我们可能会读到这个

Zlib::Inflate.new(window_bits = Zlib::MAX_WBITS)

创建一个新的充气流以进行减压。 window_bits 设置历史缓冲区的大小,可以具有以下值:

  • 0 - 让 inflate 使用 zlib 标头中的窗口大小 压缩流。

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

  • 大于 15 在 window_bits 中添加 32 - 以启用 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 https://ruby-doc.org/stdlib-2.6.3/libdoc/zlib/rdoc/Zlib/Inflate.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逆向工程 HTTP 请求 的相关文章

随机推荐