当前位置:主页 > 软件编程 > Python代码 >

python实现请求数据包签名

时间:2023-01-24 10:49:30 | 栏目:Python代码 | 点击:

前言:

渗透测试遇到对请求体进行签名的情况,如果这是一个app的话,也能理解,但如果是一个web系统,对这种敏感数据做加密,并且对请求体做了签名,就会非常无语。还好在js中能找到了加密方法(签名规则),可以通过python进行实现,以下为示例,主要记录以下python怎么快速对请求体做一次签名。

实操:

请求体中有一个参数的值是变化的,一个是当前时间戳(毫秒级),另一个是sign,而sign=md5(key+时间戳)。其中key为固定值,时间戳直接通过函数获取即可,md5的话也可以通过hashlib库进行实现。

# -*- coding:utf-8 -*-
import time
import json
import hashlib

# 该函数实现对指定字符串取hash
def md5sum(str):
    m = hashlib.md5()
    m.update(str.encode("utf-8"))
    return m.hexdigest()

def get_sign():
    #key,固定值
    key = "jfdijfidnaindiji"
    # 当前时间的毫秒级的时间戳
    requestime = int(round(time.time() * 1000))
    # 先获取签名的原始值
    sign0 = key+str(requestime)
    # 下方为请求的参数(json格式),其中requestTime为毫秒级时间戳,sign为key+时间戳的md5值
    str1 = {
        "head": {"requestTime": requestime, "code": "20211219135521700912", "v": "10"},
        "body": {"user":"EsRNkDvgoCryuQWIxpoY2w==","type":"1"}, "sign": sign0}

    # 去除json字符串中:与值之间的空格
    str2 = json.dumps(str1, separators=(",", ":"))
    # 获取hash
    sign = md5sum(str2)
    # 将签名的hash值添加到请求参数中
    data = dict(str1)
    data['sign'] = sign

    return json.dumps(data)
print(get_sign())

执行结果:

您可能感兴趣的文章:

相关文章