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

王林
Lepaskan: 2023-06-03 19:13:02
ke hadapan
937 orang telah melayarinya

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));
Salin selepas log masuk

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
    },
Salin selepas log masuk

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=
Salin selepas log masuk

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)
    Salin selepas log masuk
  • 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
Salin selepas log masuk
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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan