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())

执行结果:

到此这篇关于python实现请求数据包签名的文章就介绍到这了,更多相关python请求数据包签名内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python rsa实现数据加密和解密、签名加密和验签功能

    本篇文章主要说明python库rsa生成密钥对,数据的加密解密,api接口的签名和验签,如有抄袭,请留言联系我. 先安装 pip install rsa 安装好后,请看代码 """ 注意: api签名时:签名用私钥,验签用公钥 数据加密时:加密用公钥,解密用私钥 密钥和公钥保存的图片会在下边展示出来 """ import rsa # 对api的签名机制进行验证:签名用私钥,验签用公钥 class RsaEncrypt: def __init__(

  • python实现请求数据包签名

    前言: 渗透测试遇到对请求体进行签名的情况,如果这是一个app的话,也能理解,但如果是一个web系统,对这种敏感数据做加密,并且对请求体做了签名,就会非常无语.还好在js中能找到了加密方法(签名规则),可以通过python进行实现,以下为示例,主要记录以下python怎么快速对请求体做一次签名. 实操: 请求体中有一个参数的值是变化的,一个是当前时间戳(毫秒级),另一个是sign,而sign=md5(key+时间戳).其中key为固定值,时间戳直接通过函数获取即可,md5的话也可以通过hashl

  • python设计tcp数据包协议类的例子

    一. 问题描述 在tcp编程中,最需要解决的就是粘包分包问题.所以,我们需要在每个数据包前面加上数据包的长度用以分割粘连的包. 二. 包结构的设计 包的组成:包长度+数据域 包长度:用4个字节存储数据域长度,数据域长度即为其所占字节数 数据域:由若干个变量组成,如果是定长变量则不用加变量长度 定长变量:我们人为规定,传输中的int为4字节定长变量 变长变量:那就是字符串啦 文字难理解,那我就画个图吧: 上图的第一行是数据包的一个总体结构 第二行是数据域内部的一个结构(数据域的变量数量和位置都是我

  • Flutter中http请求抓包的完美解决方案

    前言 前阵子有同学反馈Flutter中的http请求无法通过fiddler抓包,作者喜欢使用Charles抓包工具,于是抽时间写了个小demo测试了一下,结论是在手机上设置代理,Charles确实抓不到请求数据包.于是对该问题进行了分析: 确定使用的是http发起的get请求,理论上http协议应该可以被Charles抓到包的,如果没有抓到包,那可能是没有走代理,于是乎通过将笔记本连接的wifi断开测试了一下手机上APP发起http请求,发现请求成功,证实确实没有走代理: 为什么http请求没有

  • Python简单实现TCP包发送十六进制数据的方法

    本文实例讲述了Python简单实现TCP包发送十六进制数据的方法.分享给大家供大家参考,具体如下: 举例: 0x12, 0x34可以直接拼成 "\x12\x34". 客户端代码示例: #-*- encoding: utf-8 -*- import json import socket import sys import binascii reload(sys) sys.setdefaultencoding('utf-8') if __name__=="__main__&quo

  • Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子

    scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常被用到网络攻击和测试中. 这里就直接用python的scapy搞. 这里是arp的攻击方式,你可以做成arp攻击. 复制代码 代码如下: #!/usr/bin/python """ ARP attack """ import sys, os from scapy.all import * if os.geteuid() != 0:    

  • python基础教程之获取本机ip数据包示例

    这几天用到了raw socket,用python写了些demo程序,这里记录下. 首先我们看一个简单的sniffer程序: 复制代码 代码如下: #! /usr/bin/python# code for linuximport socket#s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.I

  • 基于Python的Post请求数据爬取的方法详解

    为什么做这个 和同学聊天,他想爬取一个网站的post请求 观察 该网站的post请求参数有两种类型:(1)参数体放在了query中,即url拼接参数(2)body中要加入一个空的json对象,关于为什么要加入空的json对象,猜测原因为反爬虫.既有query参数又有空对象体的body参数是一件脑洞很大的事情. 一开始先在apizza网站 上了做了相关实验才发现上面这个规律的,并发现该网站的请求参数要为raw形式,要是直接写代码找规律不是一件容易的事情. 源码 import requests im

  • 在python中使用requests 模拟浏览器发送请求数据的方法

    如下所示: import requests url='http://####' proxy={'http':'http://####:80'} headers={ "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Encoding": "gzip, deflate, br", "Accept-Lang

  • mac 安装python网络请求包requests方法

    如下所示: sudo easy_install requests 出现如图所示信息 done 即可愉快的使用 requests了 以上这篇mac 安装python网络请求包requests方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Python如何使用bokeh包和geojson数据绘制地图

    最近要绘制伦敦区地图,查阅了很多资料后最终选择使用bokeh包以及伦敦区的geojson数据绘制. bokeh是基于python的绘图工具,可以绘制各种类型的图表,支持geojson数据的读取及绘制地图. 安装bokeh $ pip install bokeh 软件版本 python-3.7.7bokeh-2.0.0 数据来源 伦敦地图数据来源于Highmaps地图数据集.下载的是英国的地图数据united-kindom.geo.json.需要对得到的数据进行预处理才能得到只含伦敦地区的数据.这

随机推荐