Python 美团外卖APP数据包解密方法公开

介绍:使用Python对美团外卖数据包进行解密,具体想知道怎么分析出解密方法的,可以留言,下一篇可能就是了。

  • 分析一下,美团外卖数据的加密方式。 其使用的是AES加密,以及加密模式为 CBC模式 (密码分组链接模式)。

  • 介绍一下CBC模式, 对我们解密有一定的帮助。

    CBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量的数据块异或。

Python美团外卖APP数据包解密方法公开

图片来自维基百科

  • 根据上图的加密流程,可以得到加密的时候我们需要用到三个参数

  • Plaintext: 即需要加解密的数据文本

  • Key:密文

  • IV: 初始化向量

    说到底其实就是三个变量,而且key,iv是固定的。 因此我从源码中找到了它们。

  1. 设置 key,iv 值,以及数据plainText(由于数据长度过长,省略)

  2. key = b"240789B06A4D4FAG"
    iv = b"1513D520B9C1459C"

2.取出有效数据部分 32位之后的数据(根据源码得出)

 plainText = urllib.unquote_plus(plainText[32:].encode(’utf8’))

3. 加解密数据长度需要16的整数倍,不足的用0补齐

length = len(plainText)
x = length % 16
if x != 0:
plainText = plainText + ’0’*(16-x)
return plainText

4.进行解密, 并转成json

cipher = AES.new(key, AES.MODE_CBC, iv)
ret = cipher.decrypt(binascii.a2b_base64(plainText)).strip()#先将数据转成base64json_obj = json.loads(ret)

5.解析出来的结果

Python美团外卖APP数据包解密方法公开

剩下的 用来做什么,就靠大家想象啦。

以上为个人理解,如果有任何意见或者有出错的地方,欢迎留言指正,谢谢!