想维护成一个有很多用例、接口的项目,希望各位师傅有加解密之类的需求可以一起沟通,完善本项目。
工具针对人群:有一定代码基础的师傅、没有基础(但是愿意自主学习捣鼓自动加解密)的师傅
关于autoDecoder的案例移步autoDecoder-usages,对很多想自行编写接口的师傅会有帮助
交流群
二维码失效请加微信f-f0ng
、备注autoDecoder交流
关注主页公众号(only security),回复autodecoder
获取下载地址】
![image](https://private-user-images.githubusercontent.com/48286013/318700940-5151b992-b98a-4cef-a6c7-e83e068eb363.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8zMTg3MDA5NDAtNTE1MWI5OTItYjk4YS00Y2VmLWE2YzctZTgzZTA2OGViMzYzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZlZTNkZTBjZjQ0Yjc5YTQ1ZDBmYTc5YTUyODRkZTcyNWNkMTRjYzhlNmU2ZjRiMmU2Y2Q0ZjljNDlhZDA2NzAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.oDZvPID_YagrznZ_HQt7MDG1DTvbZ6o2cmM8TxEQDRc)
![image](https://private-user-images.githubusercontent.com/48286013/318700982-e9318b91-2521-4c14-93d8-9737fd7a4729.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8zMTg3MDA5ODItZTkzMThiOTEtMjUyMS00YzE0LTkzZDgtOTczN2ZkN2E0NzI5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk1ZGM3NjZhYjg2OTE1Yzg5MDViYzdjZTNhYTllOWQ4M2QwOTI1MjQ4Y2I3M2Q1OTNkYmFlYzRkYTlmOTg0MjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.beAUymdnfPc42WqHPYHnnxmtdKJwqiu4gXWLaPGXXOk)
有问题先到FAQ查看
正常流程图
![]() |
通过autoDecoder处理的流程之对于密文的处理
![]() |
通过autoDecoder处理的流程之对于明文的处理
![]() |
- 接口调试模块增加关键字代入模式,防止关键字引发报错
- 接口模式下加解密将报错回显,可以知道是具体是哪个问题导致加解密失败
当返回包格式出问题
![gagsjjcg o4n](https://private-user-images.githubusercontent.com/48286013/399258497-306ae42b-8079-48f8-8d28-b4359c5f06c7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8zOTkyNTg0OTctMzA2YWU0MmItODA3OS00OGY4LThkMjgtYjQzNTljNWYwNmM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY3MjVkOWQ1OGZlYzE5MzZmZDMwMzE5YjVhZTM1M2E2Yzc3NWRhZDJmMDEwMDhkNGZiMGFjMDE0MTYxODg5MDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LQU-d10b8e_xslwQrP6lFrD0kOEJwGH8vgbhOrfxA8c)
当接口不通
![i3w34g2g f2x](https://private-user-images.githubusercontent.com/48286013/399258564-3578d919-140c-42ba-86ed-c26e2e54ef71.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8zOTkyNTg1NjQtMzU3OGQ5MTktMTQwYy00MmJhLTg2ZWQtYzI2ZTJlNTRlZjcxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNlYjcyN2IyNTQ0MmU2NTVlYWU0MGFjMTQ2M2E5YTM2ZDQzZDk3ZjFlMWM0NTc0NDAwN2Y0MmZiYTljZGUzMWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.mNBOR1Z2GC2sfY_eiNsB7cve3mYTF7q06Oj4OWJdJAg)
也可以在Extensions页面查看报错信息
![wtc30zsn qak](https://private-user-images.githubusercontent.com/48286013/399260682-7a226abd-0d57-4d41-9b3a-062d696a7720.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8zOTkyNjA2ODItN2EyMjZhYmQtMGQ1Ny00ZDQxLTliM2EtMDYyZDY5NmE3NzIwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIxMTAzYmU3ODI2MmU2MTNhYjg0OTM3MzU3Y2U5ZGQwMjhkNDJlNTZhMjE5MTI0NmFmY2IwNTU5Yjk2NmM1Y2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.rGrAG7JpNJrw23RR99NGHj3UN5bUXLkdxcpRk9ML-3k)
- 修复替换模块host匹配问题
- 优化替换模块,增加自动解unicode模式,需要为Literal模式,Replace需为
#unicode#
,响应包的unicode编码就会自动解码
![x1u2kzeg nao](https://private-user-images.githubusercontent.com/48286013/375963519-210e22e4-534c-42c8-8c4a-7c8dcf5f2411.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8zNzU5NjM1MTktMjEwZTIyZTQtNTM0Yy00MmM4LThjNGEtN2M4ZGNmNWYyNDExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRkN2RmMjQ4OGE0MjYyYTIxZGExYmUyNDBhMDlmN2VjYTQ1YmU1MTYyOWNkYWY1MDc3M2VjMmIzYTBmZmFlNjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.a9bA7Y_H1xWgJaqmoFI1Gmie_9PGR9nU-p0y6me7Uv8)
- 修复sm4加解密错误
- 修复sm4加解密bug(base64)
- 增加密文关键字对响应体的判断
- 修复加密bug(SM4与AES)
- 修复SM4中的base64加解密bug
- 修复AES/DES加密中base64解密的bug
- 优化SM4、SM2加解密
- 优化正则匹配替换
- 自带加解密增加sm2、sm4(CBC、ECB)加解密
- 正则表达式保存进配置文件
- 修复了替换开关默认选中的问题
- 接口加解密调试优化
- 优化header头关键字判断
- 增加加载配置文件、保存配置文件的模块,后续使用可以根据配置文件的命名来进行加载配置
- 增加请求、响应替换功能,类似burp的
Match and Replace
模块,增加提取模块,案例配置如下
![image](https://private-user-images.githubusercontent.com/48286013/284894643-a5d82e7b-5db3-43e8-90d1-863f0d1629a5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8yODQ4OTQ2NDMtYTVkODJlN2ItNWRiMy00M2U4LTkwZDEtODYzZjBkMTYyOWE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIyMjc4ZTA0OWFkYmQ1YTMyZjhhODljNjkyYzY3NjA2NGJlYWYzYjRjMzlkOWI2OGI4NWM2ZGU1NzMwZTRiY2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.wfJOKC0UfU1iaebqOEotS-X06d04Qm1hDlLOnGCKgeE)
正常响应
![](https://private-user-images.githubusercontent.com/48286013/284893984-dacf44a6-3687-4eab-b716-2186a25f538d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8yODQ4OTM5ODQtZGFjZjQ0YTYtMzY4Ny00ZWFiLWI3MTYtMjE4NmEyNWY1MzhkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFlNWY5YjZkZjQxNGY3MjYwMjY0Zjk5ODI3YzZmZGNiNzkxNTA0ZWIyYWFjOTVjYzIyMmZhNjEyYjZhMDA3MTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.VbTQniuZmlScPDbI0UNLybcXfwGkocJSMByv2B2_0gw)
修改后的响应
![](https://private-user-images.githubusercontent.com/48286013/284894003-c1a33b8a-9d2a-4469-ac8a-9cd709bab286.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjg2NTUsIm5iZiI6MTczOTAyODM1NSwicGF0aCI6Ii80ODI4NjAxMy8yODQ4OTQwMDMtYzFhMzNiOGEtOWQyYS00NDY5LWFjOGEtOWNkNzA5YmFiMjg2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE1MjU1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ1Yjg0YmVjOTFkZTg1MWE5ZTMyZTY4ZDIyMjg1YTk1MWU2OTdmNjZlNWE2NDhiYjcxMTUzNDQzYTAzOWExYTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.xolaMxy0CRcHjTwFGI7DP-4iXplO2mOmqVKZRh1LR3o)
- 增加header头关键字判断
- 增加响应base64自动解码,当响应包返回的为base64时,可以自动解码,防止二进制数据包损坏
- 增加选项保存、读取
- 明文关键字、密文关键字的设置优化
- 域名匹配模块中可以进行多域名匹配,修复了原版本无法在多个域名下显示选项卡问题
- 将接口调试模块的两个换行符取消
Repeater、Intruder
模块中,增加右键加密、解密,当设置好相应的方法后可以对请求体的body进行加密、解密- 修复
Send to Repeater、Send to Intruder
不会带上端口号的问题
- autoDecoder扩展选项卡增加右键
Send to Repeater、Send to Intruder
,并且增加格式化,目前仅针对json格式
- 修复了勾选
对请求头处理
后,请求头缺失问题 - 增加对密文URL解码读取、加密后的密文URL解码选项
- 修复其他问题,如指定域名端口号不出现扩展选项卡、windows下中文解密乱码等问题
感谢微信群yosel 师傅反馈
- 增加二进制请求体、响应体处理,原理为将请求包的内容base64编码后传入接口,需要对burp做以下设置,否则获取到的编码为损坏的
- 需要勾选User options->Character Sets中的
Use the platform default(UTF-8)
[MAC],或者勾选Display as raw bytes
[Windows]
- 需要勾选User options->Character Sets中的
- RSA加解密
- 响应包正则模式加解密
- 根据加密方式对key进行截取
- 修复只选中接口加解密无法进行加解密的问题
- 优化测试接口数据包显示
- 增加zeropadding填充模式加密
- 优化base64解码问题
- 优化了插件的一些问题
- 案例移步autoDecoder-usages
- 优化了读取密文的时候将
\u0000
去除的问题 - 在自带算法中,将请求包加解密、响应包加解密分离开,可以选中加密算法
null
表示不进行加解密,返回原数据包
- 重构UI页面,之前的UI太混乱,花了点时间重构了页面UI
-
增加自带算法加解密的正则提取,当正则表达式有内容时生效,针对两种情况:
- 只有请求加密的情况
- 在爆破攻击中,对账号密码加密
配置页面
原始请求
真实请求
解密后
-
增加接口加解密时的调试页面,方便代码进一步编写
正常解密请求包
正常解密响应包
处理请求头
- 增加burp模块按钮,防止与其他模块(如插件Extender)产生的请求冲突
- 优化插件解密读取密文方式,进行URL解码后读取
- 增加
RSA解密
一个例子 - 优化选项卡数据包设置,不影响repeater本身的数据包内容
解密请求包
![]() |
解密请求包后不影响原请求包
![]() |
- 增加请求包、响应包不同加密算法按钮【仅针对接口加解密模式】,针对于请求包、响应包使用不同的加密算法(实现方式为:在请求解密接口同时,传入参数
requestorresponse
,表明是请求[request
]还是响应[response
])
- 修改了ui,优化了在新版bp上
html
无法解析的问题
-
增加
3DES加密
、AES加密
、JSON嵌套加密
三个例子 -
在明文发出请求的时候,如果响应包选中了默认选项卡,则无影响;但是当响应包选中了扩展选项卡,还会进行解密,导致请求包内的响应体报错,
0.18
修复该问题:明文发出请求,响应包只有明文。 -
增加密文关键字,出现该关键字则不进行加密,具体可以查看例json嵌套加密
- 优化Desede(3DES)加密处理问题,3DES加密的密钥为24位,当输入超过24位将会报密钥长度错误,处理方式为对密钥长度进行了截取
- 增加响应头处理,传入参数同样为
dataHeaders
# -*- coding:utf-8 -*-
# author:f0ngf0ng
from flask import Flask,Response,request
from pyDes import *
import base64
app = Flask(__name__)
@app.route('/encode',methods=["POST"])
def encrypt():
body = request.form.get('dataBody') # 获取 post 参数 必需
headers = request.form.get('dataHeaders') # 获取 post 参数 可选
if headers != None: # 开启了请求头加密
headers = headers + "aaaa:bbbb\r\n"
headers = headers + "f0ng:test"
print(headers + "\r\n\r\n\r\n\r\n" + body)
return headers + "\r\n\r\n\r\n\r\n" + body # 返回值为固定格式,不可更改
return body
@app.route('/decode',methods=["POST"]) # 不解密
def decrypt():
body = request.form.get('dataBody') # 获取 post 参数 必需
headers = request.form.get('dataHeaders') # 获取 post 参数 可选
if headers != None: # 开启了响应头加密
print(headers + "\r\n\r\n\r\n\r\n" + body)
headers = headers + "yyyy:zzzz\r\n"
headers = headers + "f0ng:onlysecurity"
return headers + "\r\n\r\n\r\n\r\n" + body # 返回值为固定格式,不可更改
return body
if __name__ == '__main__':
app.debug = True # 设置调试模式,生产模式的时候要关掉debug
app.run(host="0.0.0.0",port="8888")
原始请求响应
经过autoDecoder处理后的响应
- 修复当请求体为空时候的报错
- 修复当关键词置空时造成多出一个换行符的问题
- 优化设置域名处的端口问题,两种模式:
①只输入域名,匹配域名与任意端口号
匹配所有www.baidu.com:端口号
,如www.baidu.com:8080
、www.baidu.com:8088
②输入域名与端口号,匹配唯一域名与端口号host
只匹配www.baidu.com:8080
- 增加对整个请求包的处理,具体怎么修改,根据个人需要不同进行自定义了,模板文件为
flasktestheader.py
配置如下:
原始请求包,捕捉整个请求如下,在请求包添加额外的请求头aaaa:bbbb
、f0ng:test
实际请求包
- 增加自定义设置明文关键字,当请求体中出现了相应的关键字则不对数据包进行处理,取
contains
进行判断
-
对于
\r\n
的请求包处理不够完善,0.13版本修复该问题 -
增加案例1
登录口爆破之ldap的md5加密
,案例2sql注入绕过之sqlmap的数据包换行问题
,方便更好使用工具进行渗透测试
- 当数据包里都是密文,我们无从下手;就算是获得了加解密的一些关键信息,能解密出来,但是每个数据包我们都需要慢慢解密,请求包需要解密,响应包也需要解密,比较麻烦
- 其实取auto这个名字并不是真正的auto,加解密算法还是需要自己去逆出来的,只是相对于数据包里的密文来说,可以算是半自动
- 明文传,明文响应;密文传,密文响应,不影响原本通讯包的基础上,增加一个bp扩展页面查看明文信息
- 自定义加解密的接口,当存在复杂数据加密的时候,可以自行编写python代码对接口进行加解密, 自定义需要加解密域名,即开即用
- 直接通过插件自带的算法去加解密数据包(较为简单,仅支持部分AES、DES、DESede加密)
- 通过python的flask接口去编写加解密数据包的api(不一定是flask框架,也可以起其他框架,只需要接口地址正确且加解密流程正确即可)
-
users.sql
为测试所用数据库 -
testsql.php
为加密请求数据、加密响应数据且存在注入的页面 -
flasktest.py
为测试文件编写的Python flask加解密接口。
详细举例可至公众号查看https://mp.weixin.qq.com/s/B-lBbVpJsPdCp1pjz2Rxdg