新浪微博模擬登陸passwd參數rsa解密

該文章主要提供交流學習使用,請勿利用其進行不當行爲!
如本篇文章侵犯了貴公司的隱私,請聯繫我立刻刪除!

個人博客:http://www.feastawlisao.com/
歡迎關注個人公衆號:pythonORjs

今天我們來研究一下新浪微博的參數加密,也來做一下模擬登陸,今天全方位詳細講解撒。
這裏我們登陸的網址爲https://login.sina.com.cn/signup/signin.php,因爲新浪的賬號各個板塊是互通的,登錄後獲取cookie就能訪問新浪微博了,至於抓包工具,這裏就暫時用不到了,推薦用charles,因爲市面上流行的都是Fiddler,我感覺不太順手,個人喜好哈,進入正題。
這裏我們打開開發者工具,然後輸入賬號,密碼,密碼先輸入錯誤的,,方便我們更好的抓包。
在這裏插入圖片描述
這裏我們可以看到,返回兩個url,我們先研究第一個url。參數裏各種莫名其妙的東西,無大礙,那我們就先研究一下,entry,callback,rsakt,client,當前都是固定的,_是時間戳,su是什麼呢,我們看一下,可能對於經常玩js的人一眼就看出來了,su參數是base64編碼。
在這裏插入圖片描述
這裏就不在搜索su參數在js裏面怎麼實現的了,因爲這個參數太多了,這裏直接貼出來js代碼。
在這裏插入圖片描述
su參數知道怎麼生成後,我們用python代碼進行get請求,如下,我們返回的參數都先取出來,以備後續使用。爲什麼我沒取出來完,啊哈哈哈哈,因爲我已經知道哪些有用了。。
在這裏插入圖片描述
接着我們看下面請求的url,分析它的參數,然後一看一大堆參數,不要慌,問題不大,慌也沒用,我們分析一波,此處講重要的參數,su參數不就是我們的用戶名,然後base64的結果,servertime還記得嗎??上一個url返回的參數,nonce,rsaku也是如此。sp參數就是密碼,經過了一系列的加密,perlt是隨機生成的數字。好了,分析完,那我們找sp參數的生成過程吧。
在這裏插入圖片描述
這裏有一個坑,因爲,這裏有一個參數,pwencode=rsa2,告訴我們密碼是rsa加密生成的,然後再看前面返回的publickey值,剛好符合rsa的加密規則,然後就用python寫rsa直接加密,然後發現,涼涼,還是錯的,爲什麼呢,聽我一一道來,哈哈哈哈哈哈哈哈。

接下來我們開始搜索參數,然後發現,sp參數多的超乎我們的想象,,,太多了。
在這裏插入圖片描述
這裏可以這樣搜,因爲加密的是密碼,我們可以搜password,passwd,pwd等等,也可以搜密碼輸入框的id標籤,或者class標籤。
在這裏插入圖片描述
此處我們搜索發現,在ssologin.js裏面發現可疑的地方。password=rsa,nonce,servertime等等參數,那我們就試一下。
在這裏插入圖片描述
在這裏有個if判斷語句,注意一下。
在這裏插入圖片描述
我們開始下上斷點,開始調試,下完斷點後,點擊登陸按鈕。
在這裏插入圖片描述
然後程序會斷下來,等待下一步操作。具體操作可搜索谷歌調試。
在這裏插入圖片描述
然後一步一步執行,看到rsaPubkeys,這個key是不是很眼熟呀,就是第一個請求url返回的pubkey,關於rsa加密的原理可自行百度。
在這裏插入圖片描述
我們接着往下調試,password 生成原理就是, encrypt函數裏面傳入三個參數,如下圖,servertime,nonce字符串相加,中間由空格\t隔開,然後加上\n換行,再加上原始的password,就是沒加密之前的密碼。
在這裏插入圖片描述
此處只用python語言實現,如需js實現,可留言。因爲python實現rsa加密有多種方法,此處只演示一種。有人說,爲什麼和我第一次加密的結果不一樣,因爲rsa是一直都在變化的,具體搜索rsa加密原理。
在這裏插入圖片描述
此處請特別注意,有兩點。

1.post提交參數的時候,瀏覽器是沒有url這個參數的,提交必須加上,要不然無法完成二次驗證。

微博有二次驗證,注意,注意,特別注意,別以爲post成功後就能獲取cookie登陸了,需要二次驗證。

data全部參數如下:

    data = {
        'entry': 'account',
        'gateway': '1',
        'from': 'null',
        'savestate': '30',
        'useticket': '0',
        'pagerefer': '',
        'vsnf': '1',
        'su': su,
        'service': 'account',
        'servertime': servertime,
        'nonce': nonce,
        'pwencode': 'rsa2',
        'rsakv': rsakv,
        'sp': sp,
        'sr': '1920*1080',
        'encoding': 'UTF-8',
        'cdult': '3',
        'domain': 'sina.com.cn',
        'prelt': random.randint(1, 100),
        'url': 'https://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
        'returntype': 'TEXT',
        'door': '',  # 驗證碼,小號需要填寫,,,小號還需要二次點觸驗證
    }

必須添加url這個參數,要不然無法返回,ticket參數,請注意。
在這裏插入圖片描述
二次驗證所需要的參數如下,ticket參數就是上一步提交post返回的參數,ssosavestate,生成方式在js裏面,,但是根據實驗,可以寫成任意時間戳。_是時間戳。然後提交請求
在這裏插入圖片描述
提交成功後,獲取其cookie就行了,然後攜帶cookie進行訪問數據。
在這裏插入圖片描述
然後你就會發現一個更重要的問題,就是,成功了,
在這裏插入圖片描述
本次分享到處結束,,如需需要js代碼,或者python完整代碼,請留言!謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章