IMC加密数据库解密方法分享

admin 2022年7月1日16:04:08安全文章IMC加密数据库解密方法分享已关闭评论14 views1267字阅读4分13秒阅读模式


从前种种,譬如昨日死;从后种种,譬如今日生。


——《了凡四训》


偶然看到,便寥寥写下。如何判断是此种加密方式,类型如“-xxx-xxx...”的,或者对于安装了IMC工具的服务器,会存在某些特征,比如特征是存在H3C iMC Server服务,或者安装的路径x:\imc\
服务器配置文件路径为:
common\conf\server-addr.xml

图片

上面截图-115-97-76-67-49-28-30-14使用imc工具解密完成是sqlsql

图片

一位师傅的点播,更是看到有位大佬,直接反编译了其jar文件,查看了其加密和解密的方法。核心算法:通过将去掉-符号的值加上数组的下标值乘上16取余256,接着把获取到的值b与255进行比较,大于255的进行b-256的操作后赋值给b,紧接着进行ASCII转换。最后判断结尾是否为” ~~”,是的话就去掉,最后去掉最后两位。就可以获取到密码了。原版本为Java版本,如下
private static String decrypt(String et){    if (!et.startsWith(“-“)) {           log.error(“Invalid encrypted text: ” + et);        return null;    }    String[] strs = et.substring(1).split(“-“);             
byte[] bytes = new byte[strs.length]; for (int i = 0; i < strs.length; i++) { try { int b = Integer.parseInt(strs[i]) + i * 16 % 256; if (b > 255) { b -= 256; } bytes[i] = ((byte)b);
} catch (NumberFormatException nfe) { return null; } }
String str = new String(bytes); if (!str.endsWith(“~~”)) { log.error(“Invalid encrypted text: ” + et); return null; } return str.substring(0, str.length() – 2); }
学习后,写了个python版本
str = "-115-97-76-67-49-28-30-14"if str.startswith('-'):    strs = []    bytess = []    strs = str[1:24].split('-')    i = 0    for i in range(len(strs)-2):        try:            strsint = int(strs[i])            b = strsint + i * 16 % 256            if b > 255:                b = b - 256            str1 = chr(b)            if not str1.endswith("~~"):                bytess.append(chr(b))
except: pass i = i + 1 print("密码:"+''.join(bytess))else: print("密文格式不对!")    print("格式应为:-112-81-83-67-55-20-30-1")

图片

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月1日16:04:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  IMC加密数据库解密方法分享 http://cn-sec.com/archives/1149880.html