python对email中的混淆加密进行解密

上次有同学问我:
email混淆加密,渲染出来能看到,但是代码请求时候拿不到真正的值。
解决方案分享一下给大家:
仔细看网站html代码我们会发现一串链接:
如下:

<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5c36283036382b1c6d6a6f723f3331">[email&#160;protected]</a>

里面有用的信息就是这一串字符

5c36283036382b1c6d6a6f723f3331

上面这一串字符就是对email的混淆:
拿到js代码,对其进行解密,提取有用的js代码。

我们只需要把那一串很长的字符传进去
,就会解密出真正的email地址

import execjs

def email_jimi(email_data):
    #邮箱解密
    j = '''
        function e(e) {
            try {
                if ("undefined" == typeof console)
                    return;
                "error"in console ? console.error(e) : console.log(e)
            } catch (e) {}
        }
        function t(e) {
            return e.replace(/"/g, "&quot;")
        }
        function r(e, t) {
            var r = e.substr(t, 2);
            return parseInt(r, 16)
        }
        function n(n, o) {
            for (var c = "", a = r(n, o), i = o + 2; i < n.length; i += 2) {
                var f = r(n, i) ^ a;
                c += String.fromCharCode(f)
            }
            try {
                c = decodeURIComponent(escape(c))
            } catch (l) {
                e(l)
            }
            return t(c)
        }
        '''
    p =execjs.compile(j)
    return p.call('n',email_data,0)
if __name__=='__main__':
    email_data='5c36283036382b1c6d6a6f723f3331'
    email = email_jimi(email_data)
    print(email)

执行结果:

jtljdw@163.com

此问题的解决主要在js加密上,去研究一下js加密就行。
可能你遇到的和这个不一样,不过思路都一样。
去看一下js,就可以解决加密问题。

猜你喜欢

转载自blog.csdn.net/m0_38124502/article/details/79547629