Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

王林
王林ke hadapan
2023-06-03 19:13:02911semak imbas

Adegan praktikal

Platform yang kami tinjau kali ini ialah [SMZDM].

Tapak sasaran kali ini ialah: aHR0cHM6Ly93d3cuc216ZG0uY29tLw==.

Sebelum permulaan rasmi, daftar akaun dahulu, dan kemudian simulasi log masuk untuk melihat parameter yang disembunyikan secara rahsia~

Apabila kita melihat semua parameter permintaan selepas log masuk, kita Adalah lebih baik untuk menutup tapak secara senyap dan menarik baliknya.

Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

Seperti yang anda lihat daripada gambar di atas, username, password ialah kawasan penyulitan yang penting dan parameter pada permulaan geetest_ ialah kandungan terlibat dalam klik kod pengesahan di bawah, Tiada pembongkaran pada peringkat ini, dan anda boleh terus memberi perhatian kepada logik kod pengesahan berikutnya.

Anda boleh mengabaikan klik kod pengesahan untuk log masuk. Bukan mudah untuk mendapatkannya pada peringkat ini.

Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

Parameter permintaan antara muka ialah:

  • URL Permintaan: zhiyou.smzdm.com / user/login/ajax_normal_check

  • Kaedah permintaan: POST

Analisis parameter

Kali ini kami tidak akan menambah titik putus, tetapi mula-mula menganalisis melalui pelancar permintaan, buka timbunan panggilan permintaan pautan, dan kemudian menganalisis alamat yang berkaitan mengikut turutan.

Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

Berdasarkan pengalaman, kami dapati terdapat fungsi common_submit, dan fail yang terletak di dalamnya ialah window.js, jadi anda boleh fokus padanya.

Seterusnya tambahkan titik putus XHR dengan kata kunci login/ajax_normal_check.

Selepas titik putus tamat, anda boleh terus memasuki fungsi sasaran:

Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

Hasilnya ialah yang berkaitan logik penyulitan ditemui secara langsung, seperti berikut Seperti yang ditunjukkan dalam rajah:

Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

Kod teras diekstrak dan kemudian dianalisis selanjutnya.

var _ = login_obj.encryptPassword(i);
(i = _), (r = btoa(r));

Ternyata fungsi login_obj.encryptPassword sebenarnya memanggil antara muka baharu.

encryptPassword: function(r) {
        var t = null;
        return $.ajax({
            url: "//zhiyou.smzdm.com/user/login/pre",
            type: "get",
            async: !1,
            dataType: "json"
        }).done(function(e) {
            var o;
            t = e && 0 != e.error_code ? null : ((o = new JSEncrypt).setPublicKey(atob(e.data.pub_key)),
            o.encrypt(r))
        }),
        t
    },

Mengenai penggunaan akaun ialah js btoa, tiada apa yang istimewa tentang ini, ia adalah penyulitan base64 yang mudah

Melalui konsol pembangun, uji menggunakan btoa penyulitan 12345 dan kemudian lakukan penyulitan yang sama melalui Python.

Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

import base64
wtext = "12345"
# 编码
a = base64.b64encode(wtext.encode())
print(a.decode()) # 输出 MTIzNDU=

Kedua-dua keputusan adalah konsisten dan parameter username diselesaikan.

Mari kita teruskan melihat parameter password Proses penyulitan kata laluan ialah:

  • Diperolehi melalui API pub_key;

  • pub_key mengekod atob; 🎜> Kata laluan pengguna yang betul disulitkan.

  • JSEncryptRSAKeyUji sama ada antara muka penyulitan pub_key boleh dipanggil terus

  • import requests
    headers = {
        "Host": "zhiyou.smzdm.com",
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Referer": "https://zhiyou.Python加密混淆.com/user/login/",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 自己的 UA"
    }
    res = requests.get('https://zhiyou.Python加密混淆.com/user/login/pre', headers=headers, timeout=3)
    print(res.text)
  • Jalankan kod dan dapatkan respons berikut, di mana

    adalah juga diperolehi.

Selepas menguji antara muka beberapa kali, ralat ditemui, yang mencetuskan sekatan akaun Semasa pengekodan, disyorkan untuk menyediakan beberapa akaun yang berbeza untuk mengelakkan daripada diharamkan.

pub_key

Penyahpepijatan lanjut mendapati penyulitan JS menggunakan pemalam Muat turun terus JS yang sepadan seperti berikut: Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS

rreee

Setempat Bina persekitaran di mana kod JS boleh dijalankan

Tulis kod berikut, yang melibatkan fail yang dinyatakan di atas.

https://res.Python混淆.com/resources/public/user/zhiyou/js/jsencrypt.min.js
Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JSKemudian ia boleh dipanggil dengan Selenium, menghantar pub_key melalui parameter URL.

Logiknya juga sangat mudah Python memanggil antara muka untuk menjana KEY, kemudian menghantar KEY ke persekitaran JS yang kami bina sendiri, dan akhirnya memanggil tapak sasaran (. dibina oleh kami sendiri) melalui alamat Python, dapatkan nilai yang disulitkan, dan teruskan.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penyulitan log masuk SMZDM terbalik dengan python+JS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam