Fallstudie für Anfänger: Baidu Translate

Haftungsausschluss: Dieser Artikel dient nur zum Lernen und zur Kommunikation und darf nicht für illegale Zwecke, kommerzielle Aktivitäten usw. verwendet werden. Ansonsten geschieht dies auf eigenes Risiko. Wenn es einen Verstoß gibt, informieren Sie ihn bitte und löschen Sie ihn. Vielen Dank! Dieses Tutorial ist nicht speziell für eine bestimmte Website geschrieben, sondern dient lediglich der technischen Recherche

Fall Analyse

Zielfall: aHR0cHM6Ly9mYW55aS5iYWlkdS5jb20v

1. Entsprechende Schnittstellen und Schwierigkeiten
Fügen Sie hier eine Bildbeschreibung ein

Parametrische Analyse

Durch Beobachtung sieht es nicht wie eine Verschlüsselung aus, aber wir haben festgestellt, dass sein Wert nicht gefunden wurde. Zu diesem Zeitpunkt sollte unser Denken näher an der Verschlüsselung liegen, also suchen wir direkt nach diesem Parameter. Es wurde jedoch festgestellt, dass bei der Suche viele Werte gefunden wurden. Daher müssen wir versuchen, mehrere Haltepunkte festzulegen und dann zu debuggen.
Fügen Sie hier eine Bildbeschreibung ein

Am Ende kann festgestellt werden, dass es sich an dieser Position befindet
Fügen Sie hier eine Bildbeschreibung ein
. Sie können die von dieser Funktion durchgeführte Verschlüsselung sehen. Wenn Sie zum ersten Mal Reverse Engineering lernen, können Sie es abziehen und ausführen und dann versuchen, es wiederherzustellen Nachdem wir es verstanden haben, wird Reverse Engineering natürlich verwendet, um Kunden zu lösen. Brauchen Sie es, stellen Sie es also nicht in Eile wieder her.
Fügen Sie hier eine Bildbeschreibung ein
Kopieren Sie diese Funktion und führen Sie sie aus. Sie können „Hallo“ sehen, wenn Sie den Parameter eingeben, und das dann finden Es wird ein Fehler gemeldet. Keine Panik, Sie können sehen, welche Zeile das Problem hat, und dann gehen wir zur entsprechenden Schnittstelle
Fügen Sie hier eine Bildbeschreibung ein
. Sie können sehen, dass es sich um einen Nullwert handelt
Fügen Sie hier eine Bildbeschreibung ein
handelt Dann wird es bestanden.
Fügen Sie hier eine Bildbeschreibung ein
Wir fahren mit der Ausführung fort und stellen fest, dass der n-Wert tatsächlich derselbe ist wie oben, und wir stellen fest, dass es sich um eine Funktion handelt
Fügen Sie hier eine Bildbeschreibung ein
. Es kann ausgeführt werden, und dann können wir sehen, dass andere Parameter von der Seite oder dem generiert werden aktueller Zeitstempel, diese Website ist also hier! ! !
Ideal für Anfänger zum Üben! ! !
Tschüss! !
Fügen Sie hier eine Bildbeschreibung ein

Codeanzeige

var r = '';

function n(t, e) {
    
    
    for (var n = 0; n < e.length - 2; n += 3) {
    
    
        var r = e.charAt(n + 2);
        r = "a" <= r ? r.charCodeAt(0) - 87 : Number(r),
            r = "+" === e.charAt(n + 1) ? t >>> r : t << r,
            t = "+" === e.charAt(n) ? t + r & 4294967295 : t ^ r
    }
    return t
};

function jiami(t) {
    
    
    var o, i = t.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);
    if (null === i) {
    
    
        var a = t.length;
        a > 30 && (t = "".concat(t.substr(0, 10)).concat(t.substr(Math.floor(a / 2) - 5, 10)).concat(t.substr(-10, 10)))
    } else {
    
    
        for (var s = t.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/), c = 0, l = s.length, u = []; c < l; c++)
            "" !== s[c] && u.push.apply(u, function (t) {
    
    
                if (Array.isArray(t))
                    return e(t)
            }(o = s[c].split("")) || function (t) {
    
    
                if ("undefined" != typeof Symbol && null != t[Symbol.iterator] || null != t["@@iterator"])
                    return Array.from(t)
            }(o) || function (t, n) {
    
    
                if (t) {
    
    
                    if ("string" == typeof t)
                        return e(t, n);
                    var r = Object.prototype.toString.call(t).slice(8, -1);
                    return "Object" === r && t.constructor && (r = t.constructor.name),
                        "Map" === r || "Set" === r ? Array.from(t) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? e(t, n) : void 0
                }
            }(o) || function () {
    
    
                throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
            }()),
            c !== l - 1 && u.push(i[c]);
        var p = u.length;
        p > 30 && (t = u.slice(0, 10).join("") + u.slice(Math.floor(p / 2) - 5, Math.floor(p / 2) + 5).join("") + u.slice(-10).join(""))
    }
    for (var d = "".concat(String.fromCharCode(103)).concat(String.fromCharCode(116)).concat(String.fromCharCode(107)), h = (null !== r ? r : (r = window[d] || "") || "").split("."), f = Number(h[0]) || 0, m = Number(h[1]) || 0, g = [], y = 0, v = 0; v < t.length; v++) {
    
    
        var _ = t.charCodeAt(v);
        _ < 128 ? g[y++] = _ : (_ < 2048 ? g[y++] = _ >> 6 | 192 : (55296 == (64512 & _) && v + 1 < t.length && 56320 == (64512 & t.charCodeAt(v + 1)) ? (_ = 65536 + ((1023 & _) << 10) + (1023 & t.charCodeAt(++v)),
            g[y++] = _ >> 18 | 240,
            g[y++] = _ >> 12 & 63 | 128) : g[y++] = _ >> 12 | 224,
            g[y++] = _ >> 6 & 63 | 128),
            g[y++] = 63 & _ | 128)
    }
    for (var b = f, w = "".concat(String.fromCharCode(43)).concat(String.fromCharCode(45)).concat(String.fromCharCode(97)) + "".concat(String.fromCharCode(94)).concat(String.fromCharCode(43)).concat(String.fromCharCode(54)), k = "".concat(String.fromCharCode(43)).concat(String.fromCharCode(45)).concat(String.fromCharCode(51)) + "".concat(String.fromCharCode(94)).concat(String.fromCharCode(43)).concat(String.fromCharCode(98)) + "".concat(String.fromCharCode(43)).concat(String.fromCharCode(45)).concat(String.fromCharCode(102)), x = 0; x < g.length; x++)
        b = n(b += g[x], w);
    return b = n(b, k),
    (b ^= m) < 0 && (b = 2147483648 + (2147483647 & b)),
        "".concat((b %= 1e6).toString(), ".").concat(b ^ f)
};

Zeige Ergebnisse

Fügen Sie hier eine Bildbeschreibung ein

Je suppose que tu aimes

Origine blog.csdn.net/w62181310/article/details/130726222
conseillé
Classement