欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript逆向分析instagram登入過(guò)程

 更新時(shí)間:2022年07月20日 10:33:07   作者:ZRocket  
這篇文章主要介紹了JavaScript逆向分析instagram登入過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、流程分析

分析發(fā)現(xiàn)密碼加密,且發(fā)送POST請(qǐng)求時(shí)header必須攜帶x-csrftoken,否則是報(bào)403。

而x-csrftoken是在第一次訪問(wèn)主頁(yè)的時(shí)候設(shè)置的。

二、逆向分析

通過(guò)查看請(qǐng)求堆棧找到生成處,當(dāng)然也可以直接采用搜索大法,白貓黑貓抓到耗子就是好貓。

通過(guò)逐步下斷點(diǎn)分析函數(shù)作用及各種參數(shù)傳入返回,慢慢溯源最終找到生成處。

其中 i(d[1]).encrypt(t, c, u, f) 是主要邏輯,放到Node中缺啥補(bǔ)啥跑起來(lái)就ok,當(dāng)然也可以用其他語(yǔ)言重寫。

s = {
        encrypt: async function(s, c, h, l) {
            const u = o + h.length;
            if (64 !== c.length)
                throw new Error('public key is not a valid hex sting');
            const w = n(c);
            if (!w)
                throw new Error('public key is not a valid hex string');
            const y = new Uint8Array(u);
            let f = 0;
            y[f] = 1,
            y[f += 1] = s,
            f += 1;
            const p = {
                name: 'AES-GCM',
                iv: new Uint8Array(12),
                additionalData: l,
                tagLen: 16
            }
              , A = window.crypto || window.msCrypto;
            return A.subtle.generateKey({
                name: 'AES-GCM',
                length: 256
            }, !0, ['encrypt', 'decrypt']).then(function(t) {
                const n = A.subtle.exportKey('raw', t)
                  , o = A.subtle.encrypt(p, t, h.buffer);
                return Promise.all([n, o])
            }).then(function(n) {
                const o = t(new Uint8Array(n[0]), w);
                if (y[f] = 255 & o.length,
                y[f + 1] = o.length >> 8 & 255,
                f += 2,
                y.set(o, f),
                f += 32,
                f += r(d[0]).overheadLength,
                o.length !== 32 + r(d[0]).overheadLength)
                    throw new Error('encrypted key is the wrong length');
                const s = new Uint8Array(n[1])
                  , c = s.slice(-16)
                  , h = s.slice(0, -16);
                return y.set(c, f),
                f += 16,
                y.set(h, f),
                y
            }).catch(function(t) {
                throw t
            })
        }
    };

三、模擬請(qǐng)求

首先訪問(wèn)主頁(yè),獲取到csrftoken,然后把加密后的密碼還有csrftoken組裝起來(lái),POST即可,因?yàn)橘~號(hào)密碼是我瞎填的所以u(píng)ser和authenticated都是false,試了下提交正常賬號(hào)也是完美沒(méi)有問(wèn)題滴。

import requests
def get_proxy():
    return {
        "http":"http://"+ip,
        "https": "https://" + ip,
    }
headers = {
    'authority': 'www.instagram.com',
    'origin': 'https://www.instagram.com',
    'referer': 'https://www.instagram.com/',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
}
cookie = requests.get('https://www.instagram.com/',headers=headers, proxies=get_proxy()).cookies
headers['x-csrftoken']= cookie.get('csrftoken')
# node服務(wù)
enc_password = requests.get('http://localhost:23346/instagram?password=1111111111111111111111').text
print(enc_password)
data = {
  'enc_password': enc_password,
  'username': '15566678899',
  'queryParams': '{}',
  'optIntoOneTap': 'false',
  'stopDeletionNonce': '',
  'trustedDeviceRecords': '{}'
}
response = requests.post('https://www.instagram.com/accounts/login/ajax/', headers=headers, data=data, proxies=get_proxy())
print(response.status_code)
print(response.text)

# 運(yùn)行結(jié)果
#PWD_INSTAGRAM_BROWSER:10:1658217374:AVtQAGM39dHHEHtO7U0tFDVnhUk+Wg2VMRNtL+jtmdLx5fpegdgNyMnTmBPfBWUP0lBNGBK9rrAyX4PZfdVMEf0ksXa5s98X/SlIVF78g92WU4w0JnQHArjoIlNzLNcb+wyuy1SBDRsN92Wy5dw+ghaBC7hSUNpVrmE=
200
{"user":false,"authenticated":false,"status":"ok"}

到此這篇關(guān)于JavaScript逆向分析instagram登入過(guò)程的文章就介紹到這了,更多相關(guān)js逆向分析instagram登入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Ajax中GET與POST請(qǐng)求操作方法梳理介紹

    Ajax中GET與POST請(qǐng)求操作方法梳理介紹

    Ajax全稱是Asynchronous Javascript And XML(異步JavaScript和XML),在網(wǎng)頁(yè)中,利用XMLHttpRequest對(duì)象和服務(wù)器進(jìn)行數(shù)據(jù)交互的方式,這篇文章主要介紹了Ajax中GET與POST請(qǐng)求操作
    2022-11-11
  • js函數(shù)名與form表單元素同名沖突的問(wèn)題

    js函數(shù)名與form表單元素同名沖突的問(wèn)題

    本篇文章主要是對(duì)js函數(shù)名與form表單元素同名沖突的問(wèn)題進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-03-03
  • 使用zrender.js繪制體溫單效果

    使用zrender.js繪制體溫單效果

    這篇文章主要介紹了使用zrender.js繪制體溫單效果,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JavaScript創(chuàng)建對(duì)象的七種方式(推薦)

    JavaScript創(chuàng)建對(duì)象的七種方式(推薦)

    JavaScript創(chuàng)建對(duì)象的方式有很多,通過(guò)Object構(gòu)造函數(shù)或?qū)ο笞置媪康姆绞揭部梢詣?chuàng)建單個(gè)對(duì)象,顯然這兩種方式會(huì)產(chǎn)生大量的重復(fù)代碼,并不適合量產(chǎn)。接下來(lái)介紹七種非常經(jīng)典的創(chuàng)建對(duì)象的方式,他們也各有優(yōu)缺點(diǎn)
    2017-06-06
  • JS求平均值的小例子

    JS求平均值的小例子

    這篇文章主要介紹了JS求平均值的小例子,有需要的朋友可以參考一下
    2013-11-11
  • Postman動(dòng)態(tài)獲取返回值過(guò)程詳解

    Postman動(dòng)態(tài)獲取返回值過(guò)程詳解

    這篇文章主要介紹了Postman動(dòng)態(tài)獲取返回值過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • JavaScript作用域深度剖析之動(dòng)態(tài)作用域

    JavaScript作用域深度剖析之動(dòng)態(tài)作用域

    這篇文章主要為大家介紹了?JavaScript作用域?qū)W習(xí)之動(dòng)態(tài)作用域深度剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 如何利用 JS 腳本實(shí)現(xiàn)網(wǎng)頁(yè)全自動(dòng)秒殺搶購(gòu)功能

    如何利用 JS 腳本實(shí)現(xiàn)網(wǎng)頁(yè)全自動(dòng)秒殺搶購(gòu)功能

    這篇文章主要介紹了如何利用 JS 腳本實(shí)現(xiàn)網(wǎng)頁(yè)全自動(dòng)秒殺搶購(gòu)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • JavaScript中for..in循環(huán)陷阱介紹

    JavaScript中for..in循環(huán)陷阱介紹

    for...in循環(huán)中的循環(huán)計(jì)數(shù)器是字符串,而不是數(shù)字它包含當(dāng)前屬性的名稱或當(dāng)前數(shù)組元素的索引,下面有個(gè)不錯(cuò)的示例大家可以參考下
    2013-11-11
  • JavaScript中windows.open()、windows.close()方法詳解

    JavaScript中windows.open()、windows.close()方法詳解

    這篇文章主要介紹了JavaScript中windows.open()、windows.close()方法詳解 的相關(guān)資料,需要的朋友可以參考下
    2016-07-07

最新評(píng)論