主流程
源码获取方式:点赞+关注+私聊/v:lxbkx1224
// 通过接口获取vmp代码, 每次都是不一样的 所以初始化的64位数组每次都是不一样的
初始化64位数组:
1. [大数组].splice(1246, 2813+1)
2. 切割后数组的[749, 751, 753, .... ,873] 数字为下标 要注意传入参数的vmp数组第一个值是50的话 要将值致为负数
//每一个部分皆为8位, 8个部分一共是64位数组
数组第一部分: 一个初始化的64位数组 按固定角标取值,固定角标是[0,1,2,3,4,5,6,7] * 8
数组第二部分-第八部分: 上一部分数组 --01 012 123 234 345 456 567 67位 相加 -- 除位数 有的是2 有的是3 -- math.floor -- +初始化数组的第x部分 + [0-7]*8 (第一部分就是 初始化数组的第 1,9,17,...,57, 第二部分就是 初始化数组的第 2,10,18, ...,58)
// 对上一步生成的64位数组进行数组内移位, 生成最终的64位数组
64位数组 - fromcharcode - testab
主要算法
def decrypt_start_64array(jsvmp_str, jsvmp_list):
start_indices = testab_js.call("get_64Array", jsvmp_str)
decrypted_array = []
for i in range(747, 874, 2):
...
return decrypted_array
def decrypt_charcode_array(start_array):
decrypted_list = []
current_list = [start_array[x * 8] for x in range(0, 8)]
decrypted_list += current_list
corner_list = [
[0, 1],
[0, 1, 2],
[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6],
[5, 6, 7],
[6, 7],
]
for i in range(1, 8):
...
charcode_list = []
for i in range(0, 8):
...
return "".join([chr(x) for x in charcode_list])