当前位置:网站首页>[JS inverse 100 exemples] les valeurs fondamentales socialistes que vous n'avez pas vues sont cryptées

[JS inverse 100 exemples] les valeurs fondamentales socialistes que vous n'avez pas vues sont cryptées

2021-11-25 18:11:13 K - Brother crawler

Attention au numéro public Wechat:KColéoptère,Continuer à partager les progrès de crawler、JS/Android Reverse et d'autres produits technologiques secs!

Déclaration

Tout le contenu de cet article est réservé à l'échange d'apprentissage,Contenu de la prise de sac、Sites sensibles、Toutes les interfaces de données ont été désensibilisées,.L'utilisation à des fins commerciales et illégales est strictement interdite,Dans le cas contraire, toutes les conséquences qui en découlent n'ont rien à voir avec l'auteur,En cas d'infraction,Veuillez me contacter pour supprimer immédiatement!

Cible inversée

  • Objectifs:Analyse du principe de cryptage des valeurs fondamentales socialistes
  • Page d'accueil:aHR0cHM6Ly93d3cuYXBwbWl1LmNvbS9rZXkv

Analyse inverse

KMon collègue a envoyé un cryptage intéressant aujourd'hui,Quelle que soit la chaîne que vous saisissez,Les résultats cryptés sont tous 24 Les valeurs fondamentales socialistes des mots sont combinées au hasard,Comme le montre la figure ci - dessous:

01.png

D'abord, on essaie de prendre le sac,Voir s'il y a des opérations d'envoi de paquets sur le réseau,Pas vraiment,Cela signifie que la logique de chiffrement et de décryptage est déjà chargée JavaScript Dans le Code,Voici trois façons de localiser l'entrée de chiffrement:

1、Nous notons que les résultats cryptographiques sont toujours composés de valeurs socialistes fondamentales,Ça doit être à l'origine. 24 J'ai fait quelques opérations basées sur des mots,Ce qui veut dire que quelque part ça doit être défini 24 Un mot,Nous pouvons rechercher n'importe quel mot dans le monde entier,Comme le montre la figure ci - dessous:

02.png

2、Les résultats du cryptage et du décryptage ont été générés en cliquant sur le bouton,Donc ce bouton doit être lié à certains événements,Comme un clic de souris,On peut passer par DOM La façon dont le point d'arrêt de l'événement localise l'entrée de chiffrement,Comme le montre la figure ci - dessous:

03.png

3、Nous avons remarqué que le cryptage et le décryptage button Il y en a un id,C'est possible. JavaScript Li va avoir ça id Après,Utiliser addEventListener() Méthode ajouter une poignée d'événements de clic de souris à cet élément,Il est donc possible de le rechercher globalement id,C'est - à - dire: encode-btn Et decode-btn,Vous pouvez également rechercher getElementById("encode-btn") Ou getElementById("decode-btn"),Bien sûr, vous pouvez également rechercher les mots clés de la méthode addEventListener.Comme le montre la figure ci - dessous:

04.png

Après avoir localisé la position de chiffrement,Mise en service des points d'arrêt enfouis,Voyons la logique du cryptage:

06.png

Processus de chiffrement:Variables v Par éléments id(decoded-area)Obtenez la zone de texte clair(textarea),Cliquez sur le bouton chiffrer(encode-btn)Déclenchera un événement,Passez à la fonction suivante,v.value C'est la valeur en texte clair,Passe. l() La fonction est chiffrée et assignée à n,Et ensuite, n Assigner une valeur à p.value,C'est - à - dire la zone de texte affichée dans le texte chiffré(encoded-area).

Processus de décryptage:Variables p Par éléments id(encoded-area)Obtenez la zone de texte chiffré(textarea),Cliquez sur le bouton décrypter(decode-btn)Déclenchera un événement,Passez à la fonction suivante,p.value C'est la valeur cryptographique,Passe. s() La fonction est décryptée et assignée à n,Et ensuite, n Assigner une valeur à v.value,C'est - à - dire la zone de texte affichée en texte clair(decoded-area).

Toute la logique du Code est plus simple,Ces fonctions sont également utilisées ensemble,Tout droit copy Descendez et.

Code complet

GitHub Attention K Coléoptère,Partage continu des codes liés au crawler!Bienvenue star !https://github.com/kgepachong/

JavaScript Code de cryptage et de décryptage

var e = function () {
    for (var t = arguments.length, n = Array(t), r = 0; r < t; r++)
        n[r] = arguments[r];
    var e = n.length
        , i = "string" == typeof n[e - 1] ? n[e - 1] : "Assert Error"
        , o = !0
        , u = !1
        , c = void 0;
    try {
        for (var f, a = n[Symbol.iterator](); !(o = (f = a.next()).done); o = !0) {
            if (!f.value)
                throw new Error(i)
        }
    } catch (t) {
        u = !0,
            c = t
    } finally {
        try {
            !o && a.return && a.return()
        } finally {
            if (u)
                throw c
        }
    }
}
    , i = function () {
    return Math.random() >= .5
}
    , o = function (t) {
    var n = /[A-Za-z0-9\-\_\.\!\~\*\'\(\)]/g
        , r = t.replace(n, function (t) {
        return t.codePointAt(0).toString(16)
    });
    return encodeURIComponent(r).replace(/%/g, "").toUpperCase()
}
    , u = function (t) {
    e("string" == typeof t, "utfs Error");
    var n = t.length;
    e(0 == (1 & n));
    for (var r = [], i = 0; i < n; i++)
        0 == (1 & i) && r.push("%"),
            r.push(t[i]);
    return decodeURIComponent(r.join(""))
}
    , c = function (t) {
    e("string" == typeof t);
    var n = []
        , r = !0
        , o = !1
        , u = void 0;
    try {
        for (var c, f = t[Symbol.iterator](); !(r = (c = f.next()).done); r = !0) {
            var a = c.value
                , s = Number.parseInt(a, 16);
            s < 10 ? n.push(s) : i() ? (n.push(10),
                n.push(s - 10)) : (n.push(11),
                n.push(s - 6))
        }
    } catch (t) {
        o = !0,
            u = t
    } finally {
        try {
            !r && f.return && f.return()
        } finally {
            if (o)
                throw u
        }
    }
    return n
}
    , f = function (t) {
    e(t instanceof Array);
    for (var n = [], r = t.length, i = 0; i < r;)
        t[i] < 10 ? n.push(t[i]) : 10 === t[i] ? (i++,
            n.push(t[i] + 10)) : (i++,
            n.push(t[i] + 6)),
            i++;
    return n.map(function (t) {
        return t.toString(16).toUpperCase()
    }).join("")
}
    , a = function (t) {
    return t.map(function (t) {
        return h[2 * t] + h[2 * t + 1]
    }).join("")
}
    , s = function (t) {
    var n = []
        , r = !0
        , i = !1
        , o = void 0;
    try {
        for (var c, a = t[Symbol.iterator](); !(r = (c = a.next()).done); r = !0) {
            var s = c.value
                , l = h.indexOf(s);
            -1 !== l && (1 & l || n.push(l >> 1))
        }
    } catch (t) {
        i = !0,
            o = t
    } finally {
        try {
            !r && a.return && a.return()
        } finally {
            if (i)
                throw o
        }
    }
    var v = f(n);
    e(0 == (1 & v.length));
    var p = void 0;
    try {
        p = u(v)
    } catch (t) {
        throw t
    }
    return p
}
    , h = "Prospérité, démocratie, civilisation, harmonie, liberté, égalité, justice, état de droit, patriotisme, professionnalisme, honnêteté, bonne volonté"

function encrypt(t) {
    return a(c(o(t)))
}

function decrypt(t) {
    return s(t)
}

// Exemple d'essai
// console.log(encrypt("1234"))
// console.log(decrypt("Harmonie démocratie harmonie civilisation harmonie harmonie harmonie harmonie liberté"))

版权声明
本文为[K - Brother crawler]所创,转载请带上原文链接,感谢
https://chowdera.com/2021/11/20211125181032285E.html

随机推荐