created | updated |
---|---|
2023-02-21 19:21:35 +0800 |
2023-02-21 21:48:57 +0800 |
算法为DES/CBC/PKCS5Padding算法,密钥为f0ngtest,iv为f0ngf0ng
请求体为
I9z1fsH5QQ2NUbJi/7a8lw==
响应体为
dCtLdlmk7wI=
python文件如下:
# -*- coding:utf-8 -*-
# author:f0ngf0ng
from flask import Flask,Response,request
from pyDes import *
import base64
def des_encrypt(s):
"""
DES 加密 :param s: 原始字符串 :return: 加密后字符串,16进制
"""
secret_key = "f0ngtest"
iv = "f0ngf0ng"
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(s, padmode=PAD_PKCS5)
return base64.encodebytes(en).decode()
def des_decrypt(s):
"""
DES 解密 :param s: 加密后的字符串,16进制 :return: 解密后的字符串
"""
secret_key = "f0ngtest"
iv = "f0ngf0ng"
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(base64.decodebytes(bytes(s,encoding="utf-8")), padmode=PAD_PKCS5)
return de.decode()
app = Flask(__name__)
@app.route('/encode',methods=["POST"])
def encrypt():
param = request.form.get('dataBody') # 获取 post 参数
param_headers = request.form.get('dataHeaders') # 获取 post 参数
param_requestorresponse = request.form.get('requestorresponse') # 获取 post 参数
encry_param = des_encrypt(param.strip("\n"))
print(param)
print(encry_param)
if param_requestorresponse == "request":
return param_headers + "\r\n\r\n\r\n\r\n" + encry_param
return encry_param
@app.route('/decode',methods=["POST"])
def decrypt():
print(request.form)
param = request.form.get('dataBody') # 获取 post 参数
param_headers = request.form.get('dataHeaders') # 获取 post 参数
param_requestorresponse = request.form.get('requestorresponse') # 获取 post 参数
decrypt_param = des_decrypt(param.strip("\n"))
print(decrypt_param)
print(param_headers)
print(param_requestorresponse)
if param_requestorresponse == "request":
return param_headers + "\r\n\r\n\r\n\r\n" + decrypt_param
else:
return decrypt_param
if __name__ == '__main__':
app.debug = True # 设置调试模式,生产模式的时候要关掉debug
app.run(host="0.0.0.0",port="8888")
将以上代码保存为app.py,运行python3 app.py
复制请求包到接口
POST /testsql.php HTTP/1.1
Host: 10.211.55.4
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/109.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 24
I9z1fsH5QQ2NUbJi/7a8lw==
解密可以看到请求体被解密了,加密也可以看到请求体被加密了