这篇文章主要介绍burp解密http请求数据插件的编写。根据上篇文章分析得到的AES加解密算法,我们要编写一个AES解密插件,将指定host的请求数据解密,并在新建的消息编辑器中显示。
一、AES解密插件用到的接口
二、解密插件的实现与使用
抓取我们过滤的特定的请求包测试
可以看到对特定的每个请求数据解密后在消息编辑器中输出
综上所述,该篇文章主要介绍了burp中自定义消息编辑器解密插件的编写。其中,我们可以依据自己的个人需求来指定需要过滤的请求,比如可以按照请求数据中包含的参数名称、请求头中包含的host、user-agent、Content-Type、请求链接url等,多个条件一起判断也可以。有需要插件源码的童鞋,可以在公众号回复" AES Decrypt2 "。
算法破解就是找到加密算法的漏洞,进行技巧性的破解。
暴力破解是在知道加密算的情况下,用各种密码去测试。关于暴力破解也不是真正的暴力,有很多技术巧。如有效的密码字典就是一例。
AES目前没有算法浮出水面。
AES暴力破解与密码强度(如字串的MD5值就难,简单字串在密码字典排序告前,相对容易一些)和计算能力有关。但AES密钥长度太长,各种排列组合简直是天文数字,现有能力民间单机不可能破解。当然也可能一买彩票就中大奖,但似乎比那概率小得多。
/// summary
/// Aes解密
/// /summary
/// param name="source"源字符串/param
/// param name="key"aes密钥,长度必须32位/param
/// returns解密后的字符串/returns
public static string DecryptAes(string source, string key)
{
using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider())
{
aesProvider.Key = GetAesKey(key);
aesProvider.Mode = CipherMode.ECB;
aesProvider.Padding = PaddingMode.PKCS7;
using (ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor())
{
byte[] inputBuffers = Convert.FromBase64String(source);
byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length);
aesProvider.Clear();
return Encoding.UTF8.GetString(results);
}
}
}
解密内容 :1243CFEBD819AA6B1C717DE870459F7B
秘钥 :
没有使用填充向量iv
AES解密异常Given final block not properly padded
原因: 解密的时候直接对输入的16进制值 1243CFEBD819AA6B1C717DE870459F7B 取getBytes了, 这样获取到的字节数组长度是16,不能直接这样操作 。
需要将16进制转字节数组,这样获取到的内容是32位,而且和之前直接获取到的字节数组不一样。
16进制转字节数组方法
这样解密之后的字符串是 在线助手 正常!!
还有一种情况是输入的字符串不正常不能解密!