欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对密文密码进行**的一种方法

程序员文章站 2022-05-10 23:25:38
...

需求

在**某款路由器管理员登录密码时,从burp抓到的包可以看到password参数的值是经过前端加密之后再进行传输的,这种情况下使用明文密码字典几乎不可能**成功。我的尝试是本地调用该登录界面用来加密的js函数,将明文密码字典转为对应的密文密码字典。

实践过程

首先我们查看一下点击登录按钮后都执行了哪些js函数。
对密文密码进行**的一种方法
(command+f)搜索check()函数定义的位置,可以看到对密码进行加密的函数是base64encode()和utf16to8()
对密文密码进行**的一种方法
其实这里已经发现是先用Unicode编码再用Base64编码进行加密的,在一些网站上可以直接转换,但我们还是当成未知加密来看。
搜索sources发现加密函数都被定义在base64Encode.js里。
对密文密码进行**的一种方法
到这里,我们已经把加密流程理清了,接下来写一个python脚本调用js。

python脚本

需要使用到python的PyExecJS 库(使用方法可以参考其他博客),代码如下

import execjs #导入PyExecJS 库

def get_js(): #导入js文件
    f = open("base64Encode.js", 'r', encoding='UTF-8')
    line = f.readline()
    htmlstr = ''
    while line:
        htmlstr = htmlstr + line
        line = f.readline()
    return htmlstr

jsstr = get_js()
ctx = execjs.compile(jsstr)

def creative_book(): #创建密文密码字典
    f = open("adobe_top100_pass.txt")
    for line in f:
        r = line.strip('\n')
        utf = ctx.call('utf16to8', r)
        base64 = ctx.call('base64encode', utf)
        h = open('adobe_top100_pass_creative.txt', 'a')
        h.write("\n" + base64)
        h.close()
    f.close()

creative_book()

由于我有印象是弱口令密码,所以选择使用kali自带的adobe_top100_pass.txt明文密码字典,跑一下程序,转为我们需要的adobe_top100_pass_creative.txt密文密码字典。
对密文密码进行**的一种方法
接下来在burpsuite中**时选择该字典就可以了。

相关标签: kali 加密传输