var jdepY0NXtSrABwruYSVzHHk52Sw0uoJlYX = function(m, r, d) {
var e = "DECODE";
var r = r ? r: "";
var d = d ? d: 0;
var q = 4;
r = md5(r);
var o = md5(r.substr(0, 16));
var n = md5(r.substr(16, 16));
if (q) {
if (e == "DECODE") {
var l = m.substr(0, q)
}
} else {
var l = ""
}
var c = o + md5(o + l);
var k;
if (e == "DECODE") {
m = m.substr(q);
k = base64_decode(m)
}
var h = new Array(256);
for (var g = 0; g < 256; g++) {
h[g] = g
}
var b = new Array();
for (var g = 0; g < 256; g++) {
b[g] = c.charCodeAt(g % c.length)
}
for (var f = g = 0; g < 256; g++) {
f = (f + h[g] + b[g]) % 256;
tmp = h[g];
h[g] = h[f];
h[f] = tmp
}
var t = "";
k = k.split("");
for (var p = f = g = 0; g < k.length; g++) {
p = (p + 1) % 256;
f = (f + h[p]) % 256;
tmp = h[p];
h[p] = h[f];
h[f] = tmp;
t += chr(ord(k[g]) ^ (h[(h[p] + h[f]) % 256]))
}
if (e == "DECODE") {
if ((t.substr(0, 10) == 0 || t.substr(0, 10) - time() > 0) && t.substr(10, 16) == md5(t.substr(26) + n).substr(0, 16)) {
t = t.substr(26)
} else {
t = ""
}
}
return t
};
如何把js代码转化为python
1.读懂js代码
2.之后能做出一定的修改
3.对于没有用的变量,操作,适当的删除
分析
var jdepY0NXtSrABwruYSVzHHk52Sw0uoJlYX = function(m, r, d) {
//var e = "DECODE"; //从代码中看e为判断操作,可以进行删除
// var r = r ? r: ""; //判断r是否存在,存在取出加密后的16前16位位o,、后面16位为n
// var d = d ? d: 0; //d参数在下面没有出现,可以删除
var q = 4;
r = md5(r);
var o = md5(r.substr(0, 16)); //修改
var n = md5(r.substr(16, 16));
//if (q) {
//if (e == "DECODE") {
var l = m.substr(0, q)
// }
//} else {
var l = ""
//}
var c = o + md5(o + l); //相当于r的前16位进行加密,再让(o+m的前4位)加密
var k;
//if (e == "DECODE") {
m = m.substr(q); //从q取到最后的子串
k = base64_decode(m) //找到这个方法,是用一句代码 window.atob(a) base64->ascii
//}
var h = new Array(256);
for (var g = 0; g < 256; g++) {
h[g] = g
}
var b = new Array();
for (var g = 0; g < 256; g++) {
b[g] = c.charCodeAt(g % c.length)
//charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
}
for (var f = g = 0; g < 256; g++) {
f = (f + h[g] + b[g]) % 256;
tmp = h[g];
h[g] = h[f];
h[f] = tmp
}
var t = "";
k = k.split("");
for (var p = f = g = 0; g < k.length; g++) {
p = (p + 1) % 256;
f = (f + h[p]) % 256;
tmp = h[p];
h[p] = h[f];
h[f] = tmp;
t += chr(ord(k[g]) ^ (h[(h[p] + h[f]) % 256]))
//chr 调用的是fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。
}
// if (e == "DECODE") {
// if ((t.substr(0, 10) == 0 || t.substr(0, 10) - time() > 0) && t.substr(10, 16) == md5(t.substr(26) + n).substr(0, 16)) {
t = t.substr(26)
//} else {
t = ""
// }
// }
return t
};
# coding=utf-8
import hashlib
import base64
from bs4 import BeautifulSoup
import requests
import re
import random
import shutil
import os
import time
import queue
import threading
def md5(src):
m = hashlib.md5()
m.update(src.encode("utf8"))
return m.hexdigest()
def decode_base64(data):
missing_padding = 4 - len(data) % 4
if missing_padding:
data += '=' * missing_padding
return base64.b64decode(data)
def parse(imgHash, constant):
q = 4
hashlib.md5()
constant = md5(constant)
o = md5(constant[0:16])
n = md5(constant[16:32])
l = imgHash[0:q]
c = o + md5(o + l)
imgHash = imgHash[q:]
k = decode_base64(imgHash)
h = list(range(256))
b = list(range(256))
for g in range(0, 256):
b[g] = ord(c[g % len(c)])
f = 0
for g in range(0, 256):
f = (f + h[g] + b[g]) % 256
tmp = h[g]
h[g] = h[f]
h[f] = tmp
result = ""
p = 0
f = 0
for g in range(0, len(k)):
p = (p + 1) % 256;
f = (f + h[p]) % 256
tmp = h[p]
h[p] = h[f]
h[f] = tmp
result += chr(k[g] ^ (h[(h[p] + h[f]) % 256]))
result = result[26:]
return result