Python移植的AS2函数

2024-04-19 05:43:00 发布

您现在位置:Python中文网/ 问答频道 /正文

此游戏使用此加密阻止人们轻松连接机器人。游戏使用的功能是:

function djinndecrypt(string, key) {
    var crypt = "";
    var part = "";
    var parts = 0;
    var keyGen = key.length;
    for(var i = 0; i < string.length; i++) {
        var char = string.charAt(i);
        var chrNum = string.charCodeAt(i);
        var keyChr = key.charAt(parts % key.length);
        var keyNum = key.charCodeAt(parts % key.length);
        part += char;
        if((i+1) % 3 == 0 && i > 0) {
            crypt += String.fromCharCode((coreHash.indexOf(part)+2) - keyNum - keyGen);
            part = "";
            parts++;
        }
    }
    return crypt;

我尝试将其移植到python我的代码是:

coreHash = "4Qiqc3mpjw2jFLJBaV9ANsWoYDR8ktvZIMeJTfOd1lyH5P7XKxhU6rCbzuE10nS5Ks7rPj1YvnDlbX4m2jI0NkyOL3hHU6FRVduJJoCwfWiABzqSaETMet1pZ89xQc81ieHA0F5EuNnWCwJvMJLQhV3UxPYRB76pbfIy2dcoaT14XkqlZsSzj9KDtrmjO9fjdMPERB12TYzDJrNxc3QajKU0kbvu4F56yHAXWO7tlwni8mZqCSosLVIehJ1pzT1kEsSXAl1O45CdLnRwQeM06ZqxJfJayBN8FWj2prYjuKIhiHU7VbomDPvct935yULcOHNJZsa31DeSlmnPBxJkYbTdAFRotIizv2VpXuf9w0KqQ8Ehjr4MW7Cj164Y1ukWxp9EjOwDPF8rsX5vlZN7QJqfteCATKncUoLVaM16Shy";

def djinndecrypt(string, key):
    crypt = ""
    part = ""
    parts = 0;
    keyGen = len(key)

    for i in xrange(len(string)):
        char = string[i]
        chrNum = ord(char)
        keyChr = key[parts % len(key)]
        keyNum = ord(keyChr)
        part += char

        if((i + 1) % 3 == 0 and i > 0):
            crypt += chr((coreHash.find(part) + 2) - keyNum - keyGen)
            part = ""
            parts += 1

    print crypt

djinndecrypt("zQDHzljoHM6RhuhuhWzQDA5dgOAzQDlbAqkgOA57mM", "69338277581336797325449966279465")

代码最终引发了一个异常:

ValueError: chr() arg not in range(256)

Tags: key游戏stringlenvarlengthpartspart
1条回答
网友
1楼 · 发布于 2024-04-19 05:43:00

chr()最多只能接受255个错误。使用unichr()可以获得更大的距离,但这会返回Unicode字符,而不是像chr()那样的ACSII

然而,假设这将导致一个英文字符串,问题似乎出现在coreHash中,因为122以上的结果[chr(122)是'z']将超出字母范围

相关问题 更多 >