Python urldecode urlencoded 字节码数据

问题描述 投票:0回答:1

有效负载包含 HMAC 标签以及 AES 的随机数。客户端打印标签和随机数结果(例如):

#tag:  b'=x\x9d{_0\xf9;c8\x94inc]\xb1'
#nonce:  b'\x1f\xf4\xbe\xcc\xf2\x84f\xf2*\x8dP\x16\xc8\x02\xfe\xbe'

requests.post(url, data=payload, headers={"Content-Type": "application/octet-stream"}, verify="myShnazzyCertificate.pem")

服务器端,我的 Flask api 路由接收到一个明显经过 urlencoded 的标签和随机数:

data = flask.request.data
## stuff happens here, then -> print("tag: ", tag); print("nonce: ", nonce)
#tag:  b'%3Dx%9D%7B_0%F9%3Bc8%94inc%5D%B1'
#nonce:  b'%1F%F4%BE%CC%F2%84f%F2%2A%8DP%16%C8%02%FE%BE'

如何删除 urlencoding(或防止其发生?),同时保留标记和随机数作为字节码?我试过:

tag = tag.replace(b"%", bytes(r"\x".encode("utf-8")))
nonce = nonce.replace(b"%", bytes(r"\x".encode("utf-8")))

但是 HMAC 验证失败,因为标签有“{”,随机数有“*”,它也被编码了,所以我需要更详尽的东西。

python python-requests urlencode
1个回答
0
投票

虽然可能有一种方法可以使用

"Content-Type": "application/octet-stream"
来发送二进制参数,但我一直认为它是用于文件的。

我建议不要通过 HTTP 发送二进制参数,方法是将二进制文件转换为 url 安全文本并返回,例如base64

© www.soinside.com 2019 - 2024. All rights reserved.