深度解析一键加解密插件autoDecoder,让你像测试明文一样简单
字数 1314 2025-09-01 11:26:11

AutoDecoder加解密插件深度使用指南

一、概述

AutoDecoder是一款BurpSuite加解密插件,主要用于解决渗透测试过程中遇到的加解密问题。它能够:

  1. 支持内置常见加解密算法直接使用
  2. 允许用户自定义编写加解密脚本
  3. 简化加解密测试流程,使测试加密数据像测试明文一样简单

二、核心流程图解析

1. 官方标准流程

  • 正常流程:请求/响应 → 加解密处理 → 目标服务器/客户端
  • 密文处理流程:接收密文 → 解密 → 处理明文 → 加密 → 发送
  • 明文处理流程:接收明文 → 加密 → 发送密文

2. 数据类型处理流程

输入数据 → 判断数据类型 → 转换为所需格式(bytes/str) → 加解密处理 → 输出转换 → 输出数据

三、常见加密算法总结

算法 加密输入要求 解密输入要求 Key要求 IV要求 填充要求
AES bytes bytes bytes bytes PKCS5/PKCS7
DES bytes bytes bytes bytes PKCS5/PKCS7
3DES bytes bytes bytes bytes PKCS5/PKCS7

四、关键问题解析

1. 填充处理

  • AES填充
from Crypto.Util.Padding import pad, unpad
padded = pad(b"Hello", AES.block_size)  # 自动填充
unpadded = unpad(padded, AES.block_size)  # 自动去除填充
  • DES填充
padded = pad(b"Hello", DES.block_size)
unpadded = unpad(padded, DES.block_size)
  • 3DES填充
padded = pad(b"Hello", DES3.block_size)
unpadded = unpad(padded, DES3.block_size)

2. 数据类型转换

  • encode:将数据转换为字节类型(bytes),用于本地加解密
  • decode:将数据转换为字符串类型(str),用于网络传输

3. 编码问题

  • Base64编码有多种实现方式:
    • base64.encodebytes(data):会产生换行符,需使用.strip("\n")去除
    • base64.b64encode(data):不会产生换行符

五、Flask在AutoDecoder中的用途

1. Web API接口设计

@app.route('/encode', methods=["POST"])  # 加密接口
@app.route('/decode', methods=["POST"])  # 解密接口

2. 参数获取

body = request.form.get('dataBody')      # 必需参数
headers = request.form.get('dataHeaders') # 可选参数
requestorresponse = request.form.get('requestorresponse') # 请求/响应标识

3. 服务启动

app.debug = True  # 调试模式
app.run(host="0.0.0.0", port="8888")  # 启动服务

六、JSON数据处理

1. 请求包处理(加密后添加数据)

body = aes_encrypt(body)
body = '{"data":"' + body.decode() + '"}'

2. 响应包处理(提取特定字段解密)

json_data = json.loads(text)
data = json_data["result"]  # 只解密result字段
decrypted_data = aes_decrypt(data)

七、完整示例脚本

# -*- coding:utf-8 -*-
from flask import Flask, request
from pyDes import *
import base64
import json

app = Flask(__name__)

# DES加密函数
def des_encrypt(s):
    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()

# DES解密函数
def des_decrypt(s):
    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.route('/encode',methods=["POST"])
def encrypt():
    param = request.form.get('dataBody')
    param_headers = request.form.get('dataHeaders')
    param_requestorresponse = request.form.get('requestorresponse')
    
    encry_param = des_encrypt(param.strip("\n"))
    
    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():
    param = request.form.get('dataBody')
    param_headers = request.form.get('dataHeaders')
    param_requestorresponse = request.form.get('requestorresponse')
    
    decrypt_param = des_decrypt(param.strip("\n"))
    
    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
    app.run(host="0.0.0.0", port="8888")

八、调试指南

1. 测试数据示例

解密测试请求

POST /testsql.php HTTP/1.1
Host: 10.211.55.4
Content-Type: application/x-www-form-urlencoded
Content-Length: 24

I9z1fsH5QQ2NUbJi/7a8lw==

加密测试请求

POST /testsql.php HTTP/1.1
Host: 10.211.55.4
Content-Type: application/x-www-form-urlencoded
Content-Length: 24

{"userName":"admin","userPwd":"123456"}

2. 常见问题解决

  • 库缺失错误:根据错误提示安装相应库(pycryptodome、pyDes等)
  • Python版本问题:推荐使用Python 3.7+,避免使用Python 2.x
  • 自动重载:修改脚本后无需重启服务,Flask会自动重新加载

九、高级应用技巧

  1. 动态密钥获取:可以从请求头或特定字段提取加解密密钥
  2. 多算法支持:在脚本中添加算法判断逻辑,支持多种加解密算法
  3. 错误处理增强:添加详细的错误日志记录,便于排查问题
  4. 性能优化:对于大量数据处理,可以考虑使用更高效的加解密库

十、资源链接

  1. AutoDecoder项目地址
  2. 调试方法详细文档

通过本指南,您应该能够掌握AutoDecoder插件的核心使用方法,并能够根据实际需求编写自定义的加解密脚本,大大提高渗透测试中对加密数据处理的效率。

AutoDecoder加解密插件深度使用指南 一、概述 AutoDecoder是一款BurpSuite加解密插件,主要用于解决渗透测试过程中遇到的加解密问题。它能够: 支持内置常见加解密算法直接使用 允许用户自定义编写加解密脚本 简化加解密测试流程,使测试加密数据像测试明文一样简单 二、核心流程图解析 1. 官方标准流程 正常流程 :请求/响应 → 加解密处理 → 目标服务器/客户端 密文处理流程 :接收密文 → 解密 → 处理明文 → 加密 → 发送 明文处理流程 :接收明文 → 加密 → 发送密文 2. 数据类型处理流程 三、常见加密算法总结 | 算法 | 加密输入要求 | 解密输入要求 | Key要求 | IV要求 | 填充要求 | |------|------------|------------|--------|-------|---------| | AES | bytes | bytes | bytes | bytes | PKCS5/PKCS7 | | DES | bytes | bytes | bytes | bytes | PKCS5/PKCS7 | | 3DES | bytes | bytes | bytes | bytes | PKCS5/PKCS7 | 四、关键问题解析 1. 填充处理 AES填充 : DES填充 : 3DES填充 : 2. 数据类型转换 encode :将数据转换为字节类型(bytes),用于本地加解密 decode :将数据转换为字符串类型(str),用于网络传输 3. 编码问题 Base64编码有多种实现方式: base64.encodebytes(data) :会产生换行符,需使用 .strip("\n") 去除 base64.b64encode(data) :不会产生换行符 五、Flask在AutoDecoder中的用途 1. Web API接口设计 2. 参数获取 3. 服务启动 六、JSON数据处理 1. 请求包处理(加密后添加数据) 2. 响应包处理(提取特定字段解密) 七、完整示例脚本 八、调试指南 1. 测试数据示例 解密测试请求 : 加密测试请求 : 2. 常见问题解决 库缺失错误 :根据错误提示安装相应库(pycryptodome、pyDes等) Python版本问题 :推荐使用Python 3.7+,避免使用Python 2.x 自动重载 :修改脚本后无需重启服务,Flask会自动重新加载 九、高级应用技巧 动态密钥获取 :可以从请求头或特定字段提取加解密密钥 多算法支持 :在脚本中添加算法判断逻辑,支持多种加解密算法 错误处理增强 :添加详细的错误日志记录,便于排查问题 性能优化 :对于大量数据处理,可以考虑使用更高效的加解密库 十、资源链接 AutoDecoder项目地址 调试方法详细文档 通过本指南,您应该能够掌握AutoDecoder插件的核心使用方法,并能够根据实际需求编写自定义的加解密脚本,大大提高渗透测试中对加密数据处理的效率。